diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 299850722c0..0314b624a82 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -1,76 +1,133 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/closed/wall/r_wall,/area/ruin/powered) -"c" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"d" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"e" = (/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"f" = (/obj/effect/overlay/palmtree_l,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"g" = (/turf/closed/wall/mineral/sandstone,/area/ruin/powered) -"h" = (/obj/effect/overlay/palmtree_r,/obj/effect/overlay/coconut,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"i" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/storage/box/beakers,/turf/open/floor/wood,/area/ruin/powered) -"j" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/open/floor/wood,/area/ruin/powered) -"k" = (/obj/machinery/vending/boozeomat{emagged = 1},/turf/open/floor/wood,/area/ruin/powered) -"l" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/turf/open/floor/wood,/area/ruin/powered) -"m" = (/obj/effect/mob_spawn/human/cook{helmet = null; id_access = "Bartender"; id_job = "Bartender"; suit = /obj/item/clothing/suit/armor/vest; uniform = /obj/item/clothing/under/rank/bartender; death = 0; desc = "Looks secure."; flavour_text = "You are a bartender for the beach!"; icon = 'icons/obj/Cryogenic2.dmi'; icon_state = "sleeper"; mob_name = "Jerry Thomas"; name = "bartenders cryosleeper"; roundstart = 1},/turf/open/floor/wood,/area/ruin/powered) -"n" = (/turf/open/floor/wood,/area/ruin/powered) -"o" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/wood,/area/ruin/powered) -"p" = (/turf/open/floor/plating/beach/sand,/obj/structure/closet/crate/bin,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"q" = (/turf/open/floor/plating/beach/sand,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"r" = (/obj/structure/table,/turf/open/floor/wood,/area/ruin/powered) -"s" = (/turf/open/floor/plating/beach/sand,/obj/machinery/vending/cigarette,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"t" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/ruin/powered) -"u" = (/obj/machinery/processor,/turf/open/floor/wood,/area/ruin/powered) -"v" = (/turf/open/floor/plating/beach/sand,/obj/machinery/vending/cola,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"w" = (/turf/open/floor/plating/beach/sand,/obj/structure/chair/stool,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"x" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/open/floor/wood,/area/ruin/powered) -"y" = (/turf/open/floor/plating/beach/sand,/obj/machinery/vending/snack,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"z" = (/turf/open/floor/plating/beach/sand{density = 1; opacity = 1},/area/ruin/powered) -"A" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/wood,/area/ruin/powered) -"B" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/wood,/area/ruin/powered) -"C" = (/obj/structure/sign/barsign,/turf/closed/wall/mineral/sandstone,/area/ruin/powered) -"D" = (/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"E" = (/obj/effect/overlay/palmtree_l,/obj/effect/overlay/coconut,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"F" = (/turf/open/floor/plating/beach/sand,/obj/structure/closet/athletic_mixed,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"G" = (/turf/open/floor/plating/beach/sand,/obj/item/clothing/shoes/sandal,/obj/item/clothing/shoes/sandal,/obj/item/clothing/shoes/sandal,/obj/structure/closet/crate,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"H" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; blocks_air = 1},/area/ruin/powered) -"I" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"J" = (/obj/effect/overlay/coconut,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"K" = (/obj/item/toy/beach_ball,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"L" = (/obj/structure/chair,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"M" = (/obj/structure/chair,/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"N" = (/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) -"O" = (/turf/open/floor/plating/beach/coastline_b,/area/ruin/powered) -"P" = (/turf/open/floor/plating/beach/water,/area/ruin/powered) -"Q" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ac" = (/turf/closed/wall/r_wall,/area/ruin/powered) +"ad" = (/obj/structure/flora/ausbushes/leafybush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"ae" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/stack/cable_coil,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"af" = (/obj/structure/table,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ag" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ah" = (/obj/machinery/power/smes,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ai" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aj" = (/turf/closed/wall/mineral/sandstone{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"ak" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/toilet,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"al" = (/obj/structure/urinal{pixel_y = 32},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"am" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/urinal{pixel_y = 32},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"an" = (/obj/item/device/flashlight/lantern,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ao" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"ap" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"aq" = (/obj/structure/flora/ausbushes/sunnybush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"ar" = (/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"as" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"at" = (/obj/item/weapon/tank/internals/oxygen,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"au" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"av" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aw" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/wood,/area/ruin/powered) +"ax" = (/obj/structure/extinguisher_cabinet,/turf/closed/wall/mineral/sandstone{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"ay" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"az" = (/obj/item/clothing/tie/dope_necklace,/obj/item/weapon/reagent_containers/spray/spraytan,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"aA" = (/turf/open/floor/plating/beach/sand,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"aB" = (/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) +"aC" = (/turf/open/floor/wood,/area/ruin/powered) +"aD" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/storage/box/beakers,/turf/open/floor/wood,/area/ruin/powered) +"aE" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/open/floor/wood,/area/ruin/powered) +"aF" = (/obj/machinery/vending/boozeomat{emagged = 1},/turf/open/floor/wood,/area/ruin/powered) +"aG" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/turf/open/floor/wood,/area/ruin/powered) +"aH" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/wood,/area/ruin/powered) +"aI" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/wood,/area/ruin/powered) +"aJ" = (/obj/structure/closet/crate/bin,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/trash/candy,/obj/item/toy/talking/owl,/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) +"aK" = (/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"aL" = (/obj/effect/mob_spawn/human/bartender/alive{name = "beach bum sleeper"},/turf/open/floor/wood,/area/ruin/powered) +"aM" = (/obj/structure/reagent_dispensers/beerkeg,/turf/open/floor/wood,/area/ruin/powered) +"aN" = (/obj/machinery/vending/cigarette,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"aO" = (/obj/structure/stacklifter,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"aP" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/ruin/powered) +"aQ" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp,/turf/open/floor/wood,/area/ruin/powered) +"aR" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,/turf/open/floor/wood,/area/ruin/powered) +"aS" = (/obj/machinery/processor,/turf/open/floor/wood,/area/ruin/powered) +"aT" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"aU" = (/obj/effect/overlay/palmtree_l,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"aV" = (/obj/effect/mob_spawn/human/beach/alive{flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; pocket2 = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank; uniform = /obj/item/clothing/under/pants/youngfolksjeans},/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"aW" = (/obj/structure/chair/stool,/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) +"aX" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/open/floor/wood,/area/ruin/powered) +"aY" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"aZ" = (/obj/effect/overlay/coconut,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"ba" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bb" = (/obj/structure/weightlifter,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bc" = (/turf/open/floor/wood,/obj/machinery/door/airlock/sandstone,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bd" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/wood,/area/ruin/powered) +"be" = (/obj/vehicle/scooter/skateboard{dir = 4},/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bf" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bg" = (/obj/structure/sign/barsign,/turf/closed/wall/mineral/sandstone,/area/ruin/powered) +"bh" = (/turf/closed/wall/mineral/sandstone,/area/ruin/powered) +"bi" = (/turf/open/floor/plating/beach/sand{density = 1; opacity = 1},/area/ruin/powered) +"bj" = (/obj/structure/chair/wood/normal{icon_state = "wooden_chair"; dir = 4},/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"bk" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pastatomato,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"bl" = (/obj/structure/chair/wood/normal{icon_state = "wooden_chair"; dir = 8},/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) +"bm" = (/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand{density = 1; opacity = 1},/area/ruin/powered) +"bn" = (/obj/structure/closet/athletic_mixed,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bo" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/rack,/obj/item/clothing/shoes/sandal,/obj/item/clothing/shoes/sandal,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bp" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bq" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/closet/athletic_mixed,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"br" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bs" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bt" = (/obj/machinery/door/airlock/hatch,/obj/structure/fans/tiny,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bu" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bv" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bw" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bx" = (/obj/structure/flora/rock,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"by" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/machinery/door/airlock/sandstone,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bz" = (/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/bikehorn/airhorn,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid,/obj/item/weapon/storage/firstaid/brute,/turf/open/floor/wood,/area/ruin/powered) +"bB" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/chair/stool,/turf/open/floor/wood,/area/ruin/powered) +"bC" = (/obj/structure/table/wood,/obj/item/weapon/tank/internals/oxygen,/obj/item/weapon/pickaxe,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bD" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/dresser,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bE" = (/obj/item/weapon/reagent_containers/spray/spraytan,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bF" = (/obj/item/toy/beach_ball,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/device/megaphone,/turf/open/floor/wood,/area/ruin/powered) +"bH" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/effect/mob_spawn/human/beach/alive{flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; has_id = 1; id_access = "Medical Doctor"; id_job = "Lifeguard"; mob_gender = "female"},/turf/open/floor/wood,/area/ruin/powered) +"bI" = (/obj/structure/dresser,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) +"bJ" = (/obj/structure/chair,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bK" = (/obj/item/weapon/storage/backpack/dufflebag,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bL" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth; density = 1},/obj/structure/lattice,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) +"bM" = (/turf/open/floor/plasteel/stairs/old,/area/ruin/powered) +"bN" = (/obj/structure/flora/ausbushes/reedbush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bO" = (/obj/item/weapon/reagent_containers/spray/spraytan,/obj/item/device/camera,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bP" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plating/beach/sand,/area/ruin/powered) +"bQ" = (/obj/structure/flora/ausbushes/reedbush,/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) +"bR" = (/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) +"bS" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) +"bT" = (/turf/open/floor/plating/beach/coastline_b,/area/ruin/powered) +"bU" = (/turf/open/floor/plating/beach/water,/area/ruin/powered) +"bV" = (/obj/structure/flora/ausbushes/stalkybush,/turf/open/floor/plating/beach/water,/area/ruin/powered) (1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -bccccccccccccccccccccccccccccb -bcddddddddddddddddddddddddddcb -bcdeeeeeeeeeeeeeeeeeeeeeeeedcb -bcdeeeeefeeeeeeeeeeeeeeeeeedcb -bcdeeeeeegggggggggggeeeeheedcb -bcdeeeeeegijklmnnnogpqeeeeedcb -bcdeeeeeqgnnnnnnnnrgsqqqqqedcb -bcdeeeefqgttttttgnugvqqqqqedcb -bcdeeeeeqqwwwwwwgnxgyqeeeeedcb -bcdzzzzzqqqqqqqqAnBgqqzzzzedcb -bcdeeeeeeqqqqqqqgCggqeDeeeedcb -bcdeeeEeeeeeeqqqqqqqqeeeeeedcb -bcdeeeeeeeeeeqqqeeeeeeeeFGedcb -HcIeeeeeeeeeeqqqeeeeeeeeqqedcb -bcdeeDeeeeeeeeeeeeeeeeeeeeedcb -bcdeeeeefJeeeeeeeeeeeeeeeeedcb -bcdeeKLeeLeeMeeLeLeLeLeLefedcb -bcdeeeeeeeeeeeeeeeeeeeeeeeedcb -bcdNNNNNNNNNNNNNNNNNNNNNNNNdcb -bcdOOOOOOOOOOOOOOOOOOOOOOOOdcb -bcdPPPPPPPPPPPPPPPPPPPPPPPPdcb -bcdPPPPPPPPPPPPPPPPPPPPPPPPdcb -bcdPPPPPPPPPPPPPPPPPPPPPPPPdcb -bcdPPPPPPPPPPPPPPPPPPPPPPPPdcb -bcdPPPPPPPPPPPPPPPPPPPPPPPPdcb -bcddddddddddddddddddddddddddcb -bccccccccccccccccccccccccccccb -bbbbbQbbbbbbbbbbbbbbbbbbbbbbbb +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabababacacacacacacacacacacacacabababaaaaaaaaaaaa +aaaaaaaaabababadabaeafagahaiajakajalamanaoabapabababaaaaaaaa +aaaaaaababaqararabasasasasatajauavasasauauabararaqababaaaaaa +aaaaababadaraparababajawajaxajajajajajajayabaraparapababaaaa +aaaaabapararazaraAaBajaCaDaEaFaGaHaIajaJaKaAararararadabaaaa +aaababarararararaAaKajaCaCaLaCaCaCaMajaNaKaAarararararababaa +aaabaparaOaraOaraAaKajaPaQaPaRajaCaSajaTaKaAaraUaraqarapabaa +aaabarararaVararaAaKaBaWaWaWaWajaCaXajaYaKaAararaZarararabaa +baabararbbarbbaraAaKaKaKaKaKaKbcaCbdajaKaKaAarararbearapabbf +aaabararararararaAaKaKaKaKaKaKajbgbhajaKaKaAararararararabaa +ababababbibibibiaAaKbjbkblaKaKaBaBaBaBaKaKaAbibmbibiabababab +acbnbobpararararaAaKaKaKaKaKaKaKaKaKaKaKaKaAararararbpbqboab +acbrbrbpararaUaraAaAaAaAaAaAaAaAaAaAaAaAaAaAararararbpbrbsab +btbubvbpaAaraZararararararararararararararararararaAbpbububt +abbvbvbwaAarararararararbxararararaZarararararararaAbybvbuab +btbububpaAarararararararararararaUararararararararaAbpbvbvbt +acbsbrbparbzarararbxarararararararararbAbBararaZararbpbsbrab +acbCbDbpararararararararararbEararbFarbGbHarararararbpbIbCab +ababababarbJarbJarbJarbJbKbJarbJarararbLbMarbJararaUabababab +aaabadapbNarararbOararararararararbzarararbPararararapbNabaa +baabbQbRbRbSbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbSbRbRbRabbf +aaabbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTabaa +aaababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUababaa +aaaaabbUbUbUbUbUbUbUbUbUbUbUbUbUbVbUbUbUbUbUbUbUbUbUbUabaaaa +aaaaababbUbUbUbUbUbVbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUababaaaa +aaaaaaababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbVbUbUbUababaaaaaa +aaaaaaaaabababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUabababaaaaaaaa +aaaaaaaaaaaaababababababababababababababababababaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_gym.dmm b/_maps/RandomRuins/LavaRuins/lavaland_gym.dmm index 207eabfa613..155236dd586 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_gym.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_gym.dmm @@ -5,48 +5,49 @@ "e" = (/obj/structure/closet,/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "f" = (/obj/structure/punching_bag,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "g" = (/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"h" = (/obj/structure/window{icon_state = "window"; dir = 1},/obj/item/weapon/shard{icon_state = "medium"},/mob/living/simple_animal/hostile/zombie{name = "Boss of This Gym"},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"i" = (/obj/structure/window{icon_state = "window"; dir = 1},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"j" = (/obj/structure/window{icon_state = "window"; dir = 1},/obj/structure/window{icon_state = "window"; dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"h" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/item/weapon/shard{icon_state = "medium"},/mob/living/simple_animal/hostile/zombie{name = "Boss of This Gym"},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"i" = (/obj/structure/window{icon_state = "window";dir = 1},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"j" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/structure/window{icon_state = "window";dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "k" = (/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "l" = (/obj/structure/weightlifter,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"m" = (/obj/structure/window{icon_state = "window"; dir = 8},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"n" = (/obj/structure/window{icon_state = "window"; dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"m" = (/obj/structure/window{icon_state = "window";dir = 8},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"n" = (/obj/structure/window{icon_state = "window";dir = 4},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "o" = (/obj/structure/stacklifter,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"p" = (/obj/structure/window,/obj/structure/window{icon_state = "window"; dir = 8},/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"p" = (/obj/structure/window,/obj/structure/window{icon_state = "window";dir = 8},/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "q" = (/obj/structure/window,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "r" = (/obj/structure/window,/obj/item/weapon/shard,/mob/living/simple_animal/hostile/zombie{name = "Leatherhead"},/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"s" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)"; icon_state = "splatter4"; dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"t" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (EAST)"; icon_state = "splatter6"; dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTH)"; icon_state = "tracks"; dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-gib3"; icon_state = "gib3"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"u" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) -"v" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)"; icon_state = "tracks"; dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHEAST)"; icon_state = "tracks"; dir = 5},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"w" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)"; icon_state = "tracks"; dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHEAST)"; icon_state = "tracks"; dir = 6},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"x" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5"; icon_state = "splatter5"},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)"; icon_state = "tracks"; dir = 4},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"y" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)"; icon_state = "splatter4"; dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (NORTH)"; icon_state = "splatter6"; dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"z" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5"; icon_state = "splatter5"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"s" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)";icon_state = "splatter4";dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"t" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (EAST)";icon_state = "splatter6";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTH)";icon_state = "tracks";dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-gib3";icon_state = "gib3"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"u" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"v" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (NORTHEAST)";icon_state = "tracks";dir = 5},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"w" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (SOUTHEAST)";icon_state = "tracks";dir = 6},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"x" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5";icon_state = "splatter5"},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-tracks (EAST)";icon_state = "tracks";dir = 4},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"y" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter4 (NORTH)";icon_state = "splatter4";dir = 1},/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter6 (NORTH)";icon_state = "splatter6";dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"z" = (/obj/effect/decal/cleanable/blood/tracks{tag = "icon-splatter5";icon_state = "splatter5"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "A" = (/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"B" = (/obj/structure/window{icon_state = "window"; dir = 1},/obj/machinery/shower,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"C" = (/obj/structure/window{icon_state = "window"; dir = 1},/obj/machinery/shower,/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"B" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/machinery/shower,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"C" = (/obj/structure/window{icon_state = "window";dir = 1},/obj/machinery/shower,/mob/living/simple_animal/hostile/zombie,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"D" = (/turf/template_noop,/area/template_noop) (1,1,1) = {" -aaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaabab -aaaaaccccccccccccbbb -aaaaacdeddddddedcbbb -aaaaacfgghiijkglcbaa -aaaaacfggmgkngglcbbb -aaaaacfggmggnggocbbb -aaaaacfggpqqrggocstb -aaaaacgkgggggggkuvwx -aaaaacuucccccccccyzb -aaaaacgAgggggggAcbbb -aaaaacggggggAgggcbbb -aaaaacBCBBggBBBBcbaa -aaaaacgggggggAggcbaa -aaaaaccccccccccccbaa -aaaaaaaaaaaaaaaaaabb -aaaaaaaaaaaaaaaabbbb -aaaaaaaaaaaaaaaabbba +DDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDD +DDDccccccccccccDDDDD +DDDcdeddddddedcbDDDD +DDDcfgghiijkglcbaDDD +DDDcfggmgkngglcbbbDD +DDDcfggmggnggocbbbDD +DDDcfggpqqrggocstbbD +DDDcgkgggggggkuvwxbD +DDDcuucccccccccyzbbD +DDDcgAgggggggAcbbbbD +DDDcggggggAgggcbbbDD +DDDcBCBBggBBBBcbbDDD +DDDcgggggggAggcbDDDD +DDDccccccccccccbDDDD +DDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDD "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index e90e8f60831..6249fddfb88 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -7,11 +7,11 @@ "ag" = (/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ah" = (/obj/structure/toilet,/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ai" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aj" = (/obj/structure/table/wood,/obj/item/weapon/storage/backpack/dufflebag/med,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"aj" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ak" = (/obj/structure/table/wood,/obj/item/device/taperecorder,/obj/item/weapon/pen/blue,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "al" = (/obj/structure/table/wood,/obj/item/toy/carpplushie,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "am" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"an" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"an" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 4},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ao" = (/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ap" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aq" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/item/weapon/surgicaldrill,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) @@ -19,11 +19,11 @@ "as" = (/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "at" = (/obj/structure/chair/office/dark{dir = 1},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "au" = (/obj/structure/chair/office/dark{dir = 4},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"av" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/clothing/suit/apron/surgical,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"av" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) "aw" = (/obj/structure/bed/roller,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "ax" = (/obj/structure/closet/crate/trashcart,/obj/item/weapon/storage/bag/trash,/obj/item/trash/cheesie,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/bodybag,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"ay" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"az" = (/obj/structure/noticeboard{dir = 1; pixel_y = -27},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "Important Notice - Mrs. Henderson"},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"ay" = (/obj/structure/sink{icon_state = "sink";dir = 8;pixel_x = -12;pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"az" = (/obj/structure/noticeboard{dir = 1;pixel_y = -27},/obj/item/weapon/paper{info = "Nothing of interest to report.";name = "Important Notice - Mrs. Henderson"},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aA" = (/obj/structure/closet/secure_closet/medical2,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aB" = (/obj/machinery/computer/operating,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aC" = (/obj/structure/table/optable,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) @@ -35,14 +35,14 @@ "aI" = (/turf/closed/wall/shuttle/smooth,/area/ruin/powered) "aJ" = (/turf/open/floor/plasteel/grimy{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) "aK" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aL" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) -"aM" = (/obj/effect/mob_spawn/human/doctor/alive{flavour_text = "You were putting in your hours as a vet in the local animal hospital when a massive bluespace translocation shunted you across the galaxy. Can you survive on this desolate wasteland..?"; id_job = "Veterinarian"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) -"aN" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) -"aO" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) -"aP" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 0; icon_state = "blue"},/area/ruin/powered) -"aQ" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "bluecorner"},/area/ruin/powered) -"aR" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 4; icon_state = "blue"},/area/ruin/powered) -"aS" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "blue"},/area/ruin/powered) +"aL" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"aM" = (/obj/effect/mob_spawn/human/doctor/alive{flavour_text = "You were putting in your hours as a vet in the local animal hospital when a massive bluespace translocation shunted you across the galaxy. Can you survive on this desolate wasteland..?";id_job = "Veterinarian"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"aN" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"aO" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"aP" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 0;icon_state = "blue"},/area/ruin/powered) +"aQ" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "bluecorner"},/area/ruin/powered) +"aR" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 4;icon_state = "blue"},/area/ruin/powered) +"aS" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) "aT" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/weapon/gun/projectile/revolver/doublebarrel{desc = "For putting critters out to pasture."},/obj/item/ammo_casing/shotgun/buckshot,/obj/item/weapon/storage/box/bodybags,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aU" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aV" = (/obj/structure/closet/secure_closet/medical1,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) @@ -50,7 +50,7 @@ "aX" = (/obj/item/stack/cable_coil/random,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aY" = (/obj/structure/bodycontainer/morgue,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "aZ" = (/obj/effect/decal/cleanable/ash,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ba" = (/obj/structure/table/glass,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"ba" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/storage/backpack/dufflebag/med,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bb" = (/obj/structure/table/reinforced,/obj/item/device/laser_pointer,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bc" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bd" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/gloves,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) @@ -61,63 +61,72 @@ "bi" = (/obj/item/toy/cattoy,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bj" = (/obj/structure/table/glass,/obj/item/weapon/lazarus_injector,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bk" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bl" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) -"bm" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 1; icon_state = "blue"},/area/ruin/powered) +"bl" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"bm" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) "bn" = (/obj/structure/bed/dogbed,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bo" = (/obj/item/weapon/reagent_containers/glass/bowl,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bp" = (/obj/structure/closet/crate/bin,/obj/item/trash/pistachios,/obj/item/weapon/lipstick/random,/obj/item/seeds/apple,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "blue"},/area/ruin/powered) +"bp" = (/obj/structure/closet/crate/bin,/obj/item/trash/pistachios,/obj/item/weapon/lipstick/random,/obj/item/seeds/apple,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) "bq" = (/obj/structure/filingcabinet/chestdrawer/wheeled,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "br" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bs" = (/obj/structure/table/reinforced,/obj/item/weapon/phone,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bt" = (/obj/structure/flora/kirbyplants,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bu" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 4; icon_state = "blue"},/area/ruin/powered) -"bv" = (/obj/effect/mob_spawn/mouse{dir = 4; flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!"; mob_name = "Stallman Jr."},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bu" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 4;icon_state = "blue"},/area/ruin/powered) +"bv" = (/obj/effect/mob_spawn/mouse{dir = 4;flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!";mob_name = "Stallman Jr."},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bw" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bx" = (/obj/machinery/door/airlock/medical{name = "Patient Room"; req_access_txt = "5"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"by" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "blue"},/area/ruin/powered) +"bx" = (/obj/machinery/door/airlock/medical{name = "Patient Room";req_access_txt = "5"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"by" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) "bz" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/regular,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/fourcolor,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bB" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/hug,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bC" = (/obj/structure/chair/office/light{dir = 1},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bD" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bottle/cyanide{desc = "A cocktail of chemotherpy drugs intended to treat bladder cancer."; name = "MVAC regimen"},/obj/item/weapon/reagent_containers/syringe,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bE" = (/obj/structure/closet/crate/critter,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "blue"},/area/ruin/powered) -"bF" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 10; icon_state = "blue"},/area/ruin/powered) -"bG" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 6; icon_state = "blue"},/area/ruin/powered) -"bH" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/table,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 8; icon_state = "blue"},/area/ruin/powered) +"bD" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bottle/cyanide{desc = "A cocktail of chemotherpy drugs intended to treat bladder cancer.";name = "MVAC regimen"},/obj/item/weapon/reagent_containers/syringe,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bE" = (/obj/structure/closet/crate/critter,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) +"bF" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 10;icon_state = "blue"},/area/ruin/powered) +"bG" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 6;icon_state = "blue"},/area/ruin/powered) +"bH" = (/obj/structure/table,/obj/item/weapon/tank/internals/oxygen,/obj/item/weapon/tank/internals/oxygen,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) "bI" = (/obj/structure/sign/bluecross_2{name = "animal hospital"},/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bJ" = (/obj/machinery/door/airlock/glass_large,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bK" = (/obj/item/weapon/reagent_containers/glass/bowl,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bL" = (/obj/vehicle/scooter/skateboard{dir = 4},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) "bM" = (/obj/structure/flora/ausbushes/sunnybush,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bN" = (/obj/effect/mob_spawn/cow{dir = 4; flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon, you're getting quite impatient."; mob_name = "Flossie"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bN" = (/obj/effect/mob_spawn/cow{dir = 4;flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon, you're getting quite impatient.";mob_name = "Flossie"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bO" = (/obj/structure/flora/ausbushes/ppflowers,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) "bP" = (/obj/structure/chair/office/light{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) "bQ" = (/obj/structure/table/glass,/obj/item/clothing/tie/petcollar,/obj/item/weapon/pen/blue,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/melee/baton/cattleprod,/obj/item/weapon/stock_parts/cell/high,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 10; icon_state = "blue"},/area/ruin/powered) -"bS" = (/obj/structure/closet,/obj/item/weapon/defibrillator/loaded,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/glasses/hud/health,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; dir = 6; icon_state = "blue"},/area/ruin/powered) +"bR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/melee/baton/cattleprod,/obj/item/weapon/stock_parts/cell/high,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 10;icon_state = "blue"},/area/ruin/powered) +"bS" = (/obj/structure/closet,/obj/item/weapon/defibrillator/loaded,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/glasses/hud/health,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 6;icon_state = "blue"},/area/ruin/powered) "bT" = (/obj/item/weapon/pickaxe,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "bU" = (/obj/effect/decal/remains/human,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "bV" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "bW" = (/turf/open/floor/grass,/area/lavaland/surface/outdoors) +"cf" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 4},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) +"ce" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"cd" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/clothing/suit/apron/surgical,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/space) +"cc" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"cb" = (/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) +"ca" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 4},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) +"bZ" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) +"bY" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) +"bX" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 6},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) (1,1,1) = {" aaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaa -aaaaaaaaaaaaababababacacabacababaaaaaaaaaa -aaaaaaaaaaaaababacabacacacababababaaaaaaaa -aaaaaaaaaaababacacacacadacacacababaaaaaaaa -aaaaaaaaaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaa -aaaaababaeagahaeaiajakalamaeanaoapaqaraeaa -aaaaababaeagagaeasatasauasaeavaoaoaoawaeaa +aaaaaaaaaaaaababababacacabacabababaaaaaaaa +aaaaaaaaaaaaababacabacacacbXbYbZabababaaaa +aaaaaaaaaaababacacacacadaccacacbacacababaa +aaaaaaaaaeaeaeaeaeafafafaeaeaeccaeaeaeaeaa +aaaaababaeagahaeaiajakalamaecdceapaqaraeaa +aaaaababaeagagaeasatasauasaeanaoaoaoawaeaa aaababaxaeayagaeasasazasasaeaAaoaBaCaDaeaa abababacaEaeaFaGaFaeaeaeaFaHaeaFaIaIaIaeaa -ababaJaJaFaKaKaLaKaMaMaMaKaLaLaKaLaNaOaeaa +ababaJaJaFaKaKaLaKaMaMaMaKaLcfaKaLaNaOaeaa abababacaeaKaKaPaPaKaPaKaPaPaPaKaPaQaRaeaa aaababaeaEaFaEaeaeaFaeaFaeaeaEaFaeaSaRaeaa ababacaeaTaUaeaVaWaoaeaoaWaVaeaXaeaSaRaeaa aaababaeaYaZaebaaobbaebcaobdaebeaeaSaRaeaa aaaaaaaebfbgaebhbiaoaeaoaobjaebkaeaSaRaeaa aaaaaaaeaEaFaEaGaeaFaeaFaeaeaeaeaEaSaRaeaa -aaaaaaaaaeaKaLaLaLaKblaKbmaebnboafaSaRaeaa +aaaaaaaaaeaKaLaLaLaKblaKbmaebnboafavaRaeaa aaaaaaaaaebpbqbrbsaKbtaKbuaebvbwbxaKaRaeaa aaaaaaaaaebybzbAbBaKaKaKbuaebCbDaebEaRaeaa aaaaaaaaaebFaPaPaPaKaKaPbGaeaeaeaEbHaRaeaa diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 91d2e091cae..0d13efc45a1 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -11,19 +11,19 @@ "k" = (/obj/effect/mob_spawn/human/corpse/damaged,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "l" = (/obj/structure/closet/crate/radiation,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/lantern,/obj/item/device/flashlight/flare,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "m" = (/obj/structure/closet/crate/medical,/obj/item/device/malf_upgrade,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"n" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/storage/belt,/obj/item/weapon/scythe,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"n" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/storage/belt,/obj/item/weapon/scythe,/obj/item/seeds/glowshroom,/obj/item/seeds/glowshroom,/obj/item/weapon/reagent_containers/glass/bucket,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "o" = (/obj/item/device/flashlight/lantern,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "p" = (/obj/item/device/flashlight/seclite,/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "q" = (/obj/item/device/flashlight/flare,/obj/item/device/flashlight/seclite,/obj/item/device/flashlight/seclite,/obj/item/device/flashlight,/obj/structure/closet/crate,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "r" = (/turf/closed/wall/mineral/iron{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "s" = (/obj/item/weapon/twohanded/spear,/obj/structure/mineral_door/iron,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "t" = (/obj/structure/mineral_door/iron,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"u" = (/obj/structure/closet/crate,/obj/item/weapon/rcd/loaded,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"v" = (/obj/structure/closet/crate,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"u" = (/obj/structure/closet/crate/engineering,/obj/item/weapon/rcd/loaded,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"v" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "w" = (/obj/machinery/the_singularitygen,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"x" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_left"; name = "skeletal minibar"},/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"y" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi'; icon_state = "minibar_right"; name = "skeletal minibar"},/obj/item/clothing/head/helmet/roman/legionaire,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"z" = (/obj/item/weapon/shovel,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"x" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi';icon_state = "minibar_left";name = "skeletal minibar"},/obj/item/stack/sheet/cloth/ten,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"y" = (/obj/structure/rack{icon = 'icons/obj/stationobjs.dmi';icon_state = "minibar_right";name = "skeletal minibar"},/obj/item/clothing/head/helmet/roman/legionaire,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"z" = (/obj/item/weapon/shovel,/obj/effect/decal/cleanable/cobweb2,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "A" = (/obj/structure/closet/crate,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/o2,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "B" = (/obj/structure/table_frame,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "C" = (/obj/structure/table/optable,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) @@ -32,12 +32,16 @@ "F" = (/obj/structure/closet/crate/miningcar,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "G" = (/obj/item/weapon/twohanded/spear,/obj/structure/rack,/obj/item/weapon/twohanded/spear,/obj/item/weapon/twohanded/spear,/obj/item/weapon/twohanded/spear,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) "H" = (/obj/item/weapon/twohanded/spear,/obj/structure/rack,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"I" = (/obj/structure/mineral_door/iron,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth; blocks_air = 1},/area/ruin/unpowered) +"I" = (/obj/structure/mineral_door/iron,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth;blocks_air = 1},/area/ruin/unpowered) "J" = (/turf/closed/wall/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/lavaland/surface/outdoors) -"K" = (/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=13;n2=24;TEMP=300"},/area/lavaland/surface/outdoors) +"K" = (/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth;initial_gas_mix = "o2=13;n2=24;TEMP=300"},/area/lavaland/surface/outdoors) "L" = (/obj/item/weapon/twohanded/spear,/obj/structure/table,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) -"M" = (/obj/item/weapon/pickaxe,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=13;n2=24;TEMP=300"},/area/lavaland/surface/outdoors) +"M" = (/obj/item/weapon/pickaxe,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth;initial_gas_mix = "o2=13;n2=24;TEMP=300"},/area/lavaland/surface/outdoors) "N" = (/obj/structure/ore_box,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) +"R" = (/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"Q" = (/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"P" = (/obj/machinery/iv_drip,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) +"O" = (/obj/item/weapon/reagent_containers/glass/bowl,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/unpowered) (1,1,1) = {" aabaaaaaaaaabb @@ -45,13 +49,13 @@ aaaaaaaaaaaabb aaaaccccccaaab aaaacdefgcaaab aaaacehifcaaab -baaccifffccaaa +baacciffOccaaa baacjfkfflcaaa aaacmnfopqcaaa aaccrrstrrccaa aacuvwffxyzcaa -aacAfffkffBcaa -aacCfDffffEcaa +aacAPffkQfBcaa +aacCRDffffEcaa bFrGfHrIrrrraa JKrLLHrKbKMNaa JKrrrrrbbbbbaa diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index 64e43646095..fbf9af94e17 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -1,62 +1,103 @@ -"a" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"b" = (/turf/closed/wall/r_wall,/area/ruin/powered/snow_biodome) -"c" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"d" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"e" = (/turf/open/floor/plating/ice,/area/ruin/powered/snow_biodome) -"f" = (/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"g" = (/obj/structure/flora/rock/icy,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"h" = (/obj/structure/flora/bush,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"i" = (/turf/closed/wall/mineral/wood,/area/ruin/powered/snow_biodome) -"j" = (/obj/structure/dresser,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"k" = (/obj/structure/bed,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"l" = (/obj/structure/bookcase/random,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"m" = (/obj/structure/flora/tree/pine,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"n" = (/obj/structure/flora/grass/both,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"o" = (/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"p" = (/obj/structure/flora/tree/dead,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"q" = (/obj/machinery/door/airlock/wood,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"r" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"s" = (/obj/structure/table/wood,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"t" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"u" = (/turf/closed/wall/mineral/wood{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"v" = (/obj/structure/displaycase/captain,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"w" = (/obj/structure/bed/dogbed,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) -"x" = (/obj/structure/flora/tree/pine/xmas,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"y" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; blocks_air = 1},/area/ruin/powered/snow_biodome) -"z" = (/obj/machinery/door/airlock/silver,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"A" = (/obj/structure/flora/rock/pile/icy,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) -"B" = (/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "bridge"},/area/ruin/powered/snow_biodome) -"C" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ac" = (/obj/item/stack/medical/ointment,/obj/structure/table,/obj/item/stack/medical/bruise_pack,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ad" = (/obj/structure/table,/obj/item/stack/medical/gauze,/obj/item/stack/medical/gauze,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ae" = (/obj/machinery/power/smes,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"af" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ag" = (/obj/structure/reagent_dispensers/beerkeg,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ah" = (/obj/item/weapon/reagent_containers/food/drinks/mug,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ai" = (/obj/machinery/shower,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aj" = (/obj/structure/sink,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ak" = (/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"al" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"am" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"an" = (/obj/structure/toilet{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"ao" = (/turf/open/floor/plating/ice,/area/ruin/powered/snow_biodome) +"ap" = (/obj/structure/flora/rock/icy,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aq" = (/turf/closed/wall/mineral/wood,/area/ruin/powered/snow_biodome) +"ar" = (/obj/machinery/door/airlock/wood,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"as" = (/obj/structure/fans,/turf/closed/wall/mineral/wood,/area/ruin/powered/snow_biodome) +"at" = (/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"au" = (/obj/structure/bed,/obj/item/weapon/bedsheet/blue,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"av" = (/obj/structure/bookcase/random,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aw" = (/obj/structure/table/wood,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"ax" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/beans,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"ay" = (/obj/structure/closet/crate/trashcart,/obj/item/trash/semki,/obj/item/trash/candy,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"az" = (/obj/structure/flora/tree/pine,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aA" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aB" = (/obj/structure/flora/rock/pile/icy,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aC" = (/obj/structure/flora/tree/dead,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aD" = (/obj/machinery/door/airlock/wood,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aE" = (/obj/structure/extinguisher_cabinet,/turf/closed/wall/mineral/wood,/area/ruin/powered/snow_biodome) +"aF" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/mug/coco,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aG" = (/obj/structure/chair/comfy/brown{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aH" = (/mob/living/simple_animal/hostile/skeleton/eskimo,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aI" = (/obj/structure/flora/bush,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aJ" = (/obj/vehicle/atv,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aK" = (/turf/closed/wall/mineral/wood{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aL" = (/obj/structure/displaycase/captain,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aM" = (/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aN" = (/obj/structure/bed/dogbed,/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "floor"},/area/ruin/powered/snow_biodome) +"aO" = (/obj/machinery/door/airlock/glass_large,/obj/structure/fans/tiny,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aP" = (/obj/structure/fans/tiny,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aQ" = (/obj/structure/flora/grass/both,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aR" = (/obj/structure/flora/tree/pine/xmas,/turf/open/floor/plating/asteroid/snow{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aS" = (/obj/structure/rack,/obj/item/clothing/suit/hooded/wintercoat/science,/obj/item/clothing/shoes/winterboots,/obj/item/clothing/gloves/fingerless,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aT" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"aU" = (/obj/machinery/vending/coffee,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aV" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aW" = (/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aX" = (/turf/open/floor/pod/light,/area/ruin/powered/snow_biodome) +"aY" = (/obj/structure/chair/stool,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"aZ" = (/obj/machinery/door/airlock/hatch,/obj/structure/fans/tiny,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"ba" = (/obj/machinery/door/airlock/silver,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bb" = (/obj/machinery/door/airlock/silver,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/snow_biodome) +"bc" = (/obj/structure/table,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bd" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper_bin,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"be" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bf" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bg" = (/obj/item/weapon/twohanded/required/chainsaw,/obj/structure/closet,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bh" = (/obj/structure/filingcabinet,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bi" = (/obj/machinery/computer/monitor,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bj" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bk" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bl" = (/turf/open/floor/wood{baseturf = /turf/open/floor/plating/lava/smooth; name = "bridge"},/area/ruin/powered/snow_biodome) +"bm" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered/snow_biodome) +"bn" = (/obj/item/clothing/mask/balaclava,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bo" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bp" = (/obj/structure/table,/obj/item/weapon/pen,/obj/item/weapon/paper,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"bq" = (/obj/machinery/light/built{dir = 1},/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) +"br" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/glass_large,/turf/open/floor/pod/dark,/area/ruin/powered/snow_biodome) (1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -bccccccccccccccccccccccccccccb -bcddddddddddddddddddddddddddcb -bcdeefgfffffffffhiiiiiiiiiidcb -bcdfeeffffhfffffhijkilllllidcb -bcdfeeeemfffmffnfiooioooooidcb -bcdpfeeeffpffffffiqiiorstoidcb -bcdfheeeefffhffffioooorstoidcb -bcdhfffeefffhmhfnuvoooooowidcb -bcdffhfeeefffffffiiiiqqiiiidcb -bcdfffffeeffffgffffffffffffdcb -bcdfmfffeeemffffhffffffffxfdcb -bcdfffffeeeffpfnfffffffffffdcb -bcdnfffffeeeefffffmfffmhhffdcb -yczfAfmffeeeeeffffffpffffffdcb -bcdffffffffeeffmfffhffngfffdcb -bcdfffpffhfeeefffffffffffmfdcb -bcdfmffffmfeeeeffffmffpffffdcb -bcdffffgffBBBBBBfpffffffnffdcb -bcdffnhhffBBBBBBffffgfhffffdcb -bcdfffhfffffeeeffffffhfffffdcb -bcdffffnpfhfffeeefffffmfAmfdcb -bcdffffffffffhffeefmffhhfffdcb -bcdhfmfffhfmffffeefffnhhffhdcb -bcdfffffffffhhfhfeeeffffpffdcb -bcdhhffmfffffpfffffeeffffffdcb -bcddddddddddddddddddddddddddcb -bccccccccccccccccccccccccccccb -bbbbbCbbbbbbbbbbbbbbbbbbbbbbbb +aaaaaaaaaaaaaaaaaaababababababababababababaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaababababacadaeafaeagahabaiajababababaaaaaaaaaaaa +aaaaaaaaabababakabafafafafalafahafamafafanabakabababaaaaaaaa +aaaaaaababaoapakababaqaraqaqaqasaqaqaqaqababakakapababaaaaaa +aaaaababaoaoakakakakaqatauaqavawaxavavaqayakazakakakababaaaa +aaaaabakaoaoaoakazakaqatauaqataAawatataqakakakaBakakakabaaaa +aaababaCakaoaoakakakaqaDaqaEataAaFaGaHaqakaIaJakakazakababaa +aaabakakaIaoaoaoakakaqatatataHatatatataqakakakakakakakakabaa +aaabakakakakaoaoaoakaKaLatataMaMatataNaqakapakaCakakakakabaa +aaabakakakaIakaoaoakaqaqaqaqaOaPaqaqaqaqakakakakaQakakakabaa +ababababakakakaoaoakakakakakapakakaRakakakakakakakakabababab +abaSaSaTazakakakaoaoaoazakakakakaIakakakakakakakakakaTaUaVab +abaWaWaTakakakakaoaoaoakakaCakaQakakakakakakakakakakaTaWaWab +abaWaWaTaBakakakakaoaoaoaoakakakakakazakakakazaIaIakaTaXaYab +aZaXaXbaakakazakakaoaoaoaoaoakakakakakakaCakakakakakbbaXbcab +abaWbdaTakakakakakakaoaoaoakakazakakakaIakakaQapakakaTaXbeab +abaWaYaTakakaCakakaIakaoaoaoakakakakakakakakakakakazaTbfbgab +abbhbiaTaIakakakakazakaoaoaoaoakakakakazakakaCakakakaTbjbkab +ababababakakakapakakblblblblblblakaCakakakakakakaQakabababab +ababakakakaQaIaIakakblblblblblblakakakakapakaIakakakakakabaa +ababakakakakaIakakakakakaoaoaoakakakakakakaIakakakakakakabaa +aaabakakakakakaQaCakaIakakaoaoaoaoakakakakakazakaBazakakabaa +aaababakakakakakakakakakakaIakaoaoaoakazakakaIaIakakakababaa +aaaaabakakazakakakaIakazakakakakaoaoaoakakaQaIaIakakakabaaaa +aaaaababakakakakakakakakaIakakakakaoaoaoakakakakaCakababaaaa +aaaabmababakakazakakababababaOaPababababakakakakakababbmaaaa +aaaabmbmabababakakakabaSbnaXaXaXaXaWboabakakakabababbmbmaaaa +aaaaaabmbmbmabababababaSaWaXaXaXaXaWbpabababababbmbmbmaaaaaa +aaaaaaaabmbmbmbmbqbmababababbraPababababbmbqbmbmbmaaaaaaaaaa +aaaaaaaaaaaaaabmbmbmbmbmbmbmbmbmbmbmbmbmbmbmbmaaaaaaaaaaaaaa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm index 0026df56155..542e27d84dc 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm @@ -12,7 +12,7 @@ "l" = (/obj/item/weapon/coin/gold,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "m" = (/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "n" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c1000,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"o" = (/obj/item/weapon/moneybag,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"o" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "p" = (/obj/structure/table/wood/poker,/obj/item/weapon/ore/gold,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "q" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c20,/obj/item/stack/spacecash/c50,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) "r" = (/obj/structure/table/wood/poker,/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/obj/item/stack/spacecash/c1000,/turf/open/floor/engine/cult{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm index ba989b11b99..98351f0d8ce 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm @@ -31,7 +31,7 @@ "E" = (/obj/structure/disposalpipe/segment{dir = 1;icon_state = "pipe-c"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "F" = (/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) "H" = (/obj/machinery/chem_master/condimaster,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"G" = (/obj/machinery/plantgenes,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"G" = (/obj/machinery/plantgenes/seedvault,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) (1,1,1) = {" aabbaaaaaaaaaaaaaaaa diff --git a/_maps/RandomRuins/SpaceRuins/_maplisting.txt b/_maps/RandomRuins/SpaceRuins/_maplisting.txt index 52f6b525735..72681d304a3 100644 --- a/_maps/RandomRuins/SpaceRuins/_maplisting.txt +++ b/_maps/RandomRuins/SpaceRuins/_maplisting.txt @@ -22,4 +22,5 @@ _maps/RandomRuins/SpaceRuins/emptyshell.dmm _maps/RandomRuins/SpaceRuins/gasthelizards.dmm _maps/RandomRuins/SpaceRuins/intactemptyship.dmm _maps/RandomRuins/SpaceRuins/mechtransport.dmm -_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm \ No newline at end of file +_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +_maps/RandomRuins/SpaceRuins/onehalf.dmm \ No newline at end of file diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm new file mode 100644 index 00000000000..e4e78df2b49 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -0,0 +1,195 @@ +"aa" = (/turf/open/space,/area/space) +"ab" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/space) +"ac" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/space) +"ad" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/space) +"ae" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/space) +"af" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/space) +"ag" = (/turf/closed/wall,/area/ruin/onehalf/dorms_med) +"ah" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/dorms_med) +"ai" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/space) +"aj" = (/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"ak" = (/turf/closed/wall,/area/ruin/onehalf/hallway) +"al" = (/obj/machinery/sleeper/syndie{dir = 4},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"am" = (/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"an" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"ao" = (/obj/structure/bed,/obj/item/weapon/bedsheet/black,/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"ap" = (/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aq" = (/obj/machinery/door/airlock/external,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"ar" = (/turf/closed/wall,/area/ruin/onehalf/drone_bay) +"as" = (/obj/machinery/door/poddoor{id = "onehalf_drone1ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"at" = (/obj/machinery/door/poddoor{id = "onehalf_drone2ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"au" = (/obj/machinery/door/poddoor/preopen{id = "onehalf_drone3ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"av" = (/obj/machinery/door/poddoor{id = "onehalf_drone4ext"; name = "mining drone bay blast door"},/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"aw" = (/obj/structure/lattice,/turf/open/space,/area/space) +"ax" = (/obj/structure/lattice,/turf/open/space,/area/ruin/onehalf/hallway) +"ay" = (/obj/structure/table_frame,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"az" = (/obj/machinery/washing_machine,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"aA" = (/obj/item/roller,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aC" = (/obj/machinery/light{dir = 8},/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aE" = (/obj/structure/disposalpipe/trunk,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aF" = (/obj/structure/disposalpipe/trunk,/obj/item/weapon/ore/diamond,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aG" = (/turf/open/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/ruin/onehalf/drone_bay) +"aH" = (/obj/item/stack/rods,/turf/open/space,/area/ruin/onehalf/hallway) +"aI" = (/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"aJ" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"aK" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aM" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/closet/crate/medical,/obj/item/clothing/tie/stethoscope,/obj/item/device/healthanalyzer,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/machinery/power/apc{dir = 4; name = "Crew Quarters APC"; pixel_x = 26; pixel_y = 0},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aN" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone1int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aO" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone2int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aP" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone3int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{id = "onehalf_drone4int"; name = "mining drone bay blast door"},/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"aR" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk,/turf/open/floor/plating/airless,/area/ruin/onehalf/drone_bay) +"aS" = (/obj/structure/lattice,/obj/item/weapon/storage/toolbox/syndicate,/turf/open/space,/area/space) +"aT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"aU" = (/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"aV" = (/obj/machinery/door/airlock/glass_medical,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/white,/area/ruin/onehalf/dorms_med) +"aW" = (/obj/machinery/door/airlock,/turf/open/floor/plasteel,/area/ruin/onehalf/dorms_med) +"aX" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"aY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Mining Drone Bay APC"; pixel_y = 24},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"aZ" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"ba" = (/obj/machinery/button/door{id = "onehalf_drone2int"; name = "Drone 2 Internal Hatch Override"; pixel_x = 8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone2ext"; name = "Drone 2 External Hatch Override"; pixel_x = 8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone1int"; name = "Drone 1 Internal Hatch Override"; pixel_x = -8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone1ext"; name = "Drone 1 External Hatch Override"; pixel_x = -8; pixel_y = 37},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bb" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bc" = (/obj/machinery/button/door{id = "onehalf_drone3int"; name = "Drone 3 Internal Hatch Override"; pixel_x = -8; pixel_y = 27},/obj/machinery/button/door{id = "onehalf_drone3ext"; name = "Drone 3 External Hatch Override"; pixel_x = -8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone4ext"; name = "Drone 4 External Hatch Override"; pixel_x = 8; pixel_y = 37},/obj/machinery/button/door{id = "onehalf_drone4int"; name = "Drone 4 Internal Hatch Override"; pixel_x = 8; pixel_y = 27},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"bd" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/ruin/onehalf/drone_bay) +"be" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"bf" = (/obj/item/stack/sheet/metal,/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"bg" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"bh" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"bi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"bj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bk" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"bl" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bm" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bn" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"br" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/maintenance_hatch,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bt" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bu" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/disposal/bin,/turf/open/floor/plating,/area/ruin/onehalf/drone_bay) +"bv" = (/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"bw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"bx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"by" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/ruin/onehalf/hallway) +"bz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "Hallway APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bA" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bB" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bC" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bD" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light,/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bF" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bG" = (/turf/open/floor/plasteel,/area/ruin/onehalf/drone_bay) +"bH" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bI" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bJ" = (/obj/structure/chair/office{tag = "icon-chair (EAST)"; icon_state = "chair"; dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/ruin/onehalf/drone_bay) +"bK" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bL" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bM" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/ruin/onehalf/hallway) +"bN" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway) +"bO" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bP" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bQ" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bR" = (/turf/closed/wall/r_wall,/area/ruin/onehalf/hallway) +"bS" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/ruin/onehalf/hallway) +"bT" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless,/area/ruin/onehalf/hallway) +"bU" = (/turf/closed/wall/r_wall,/area/ruin/onehalf/bridge) +"bV" = (/obj/item/stack/sheet/metal,/turf/open/space,/area/space) +"bW" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"bX" = (/obj/structure/disposalpipe/segment,/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"bY" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/ruin/onehalf/hallway) +"bZ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"ca" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cb" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cc" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cd" = (/obj/machinery/light{dir = 1},/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"ce" = (/obj/structure/computerframe,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cf" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Bridge APC"; pixel_y = 24},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/table/reinforced,/obj/item/stack/spacecash/c500{pixel_y = 8},/obj/item/stack/spacecash/c1000,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"ch" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/space) +"ci" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (NORTH)"; icon_state = "pipe-j1"; dir = 1},/obj/item/weapon/shard,/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"cj" = (/obj/structure/lattice,/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (EAST)"; icon_state = "pipe-b"; dir = 4},/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (WEST)"; icon_state = "pipe-b"; dir = 8},/obj/item/stack/rods,/turf/open/space,/area/ruin/onehalf/hallway) +"ck" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/open/space,/area/space) +"cl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cm" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{amount = 12},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cn" = (/obj/structure/chair/office{dir = 8},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"co" = (/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cp" = (/obj/structure/chair/office{tag = "icon-chair (NORTH)"; icon_state = "chair"; dir = 1},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cq" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/table/reinforced,/obj/item/weapon/lighter,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cr" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cs" = (/obj/item/stack/rods,/turf/open/space,/area/space) +"ct" = (/turf/open/floor/plating/airless,/area/space) +"cu" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/lattice,/turf/open/space,/area/space) +"cv" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/ruin/onehalf/hallway) +"cw" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"cx" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/ruin/onehalf/bridge) +"cy" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cz" = (/obj/item/stack/tile/plasteel,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cA" = (/obj/machinery/power/solar_control,/obj/structure/cable,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cB" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cC" = (/obj/item/stack/tile/wood,/turf/open/space,/area/space) +"cD" = (/turf/open/space,/area/ruin/onehalf/hallway) +"cE" = (/obj/structure/lattice,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/ruin/onehalf/hallway) +"cF" = (/obj/structure/lattice,/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (WEST)"; icon_state = "pipe-b"; dir = 8},/obj/structure/disposalpipe/broken{tag = "icon-pipe-b (NORTH)"; icon_state = "pipe-b"; dir = 1},/turf/open/space,/area/ruin/onehalf/hallway) +"cG" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cH" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cI" = (/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/obj/machinery/door/airlock/glass_command{name = "Bridge"},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cJ" = (/obj/item/weapon/crowbar/red,/obj/item/device/multitool,/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cK" = (/obj/structure/safe/floor,/obj/item/weapon/tank/internals/oxygen/red,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/suit/space/hardsuit/syndi,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum,/obj/item/weapon/folder/syndicate/mining,/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cL" = (/obj/structure/chair/comfy/black{dir = 4},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cM" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/ruin/onehalf/hallway) +"cN" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/ruin/onehalf/hallway) +"cO" = (/obj/machinery/light{dir = 8},/obj/machinery/vending/sovietsoda,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cP" = (/obj/item/stack/sheet/plasteel,/turf/open/space,/area/space) +"cQ" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/ruin/onehalf/hallway) +"cR" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/ruin/onehalf/hallway) +"cS" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/onehalf/hallway) +"cT" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cU" = (/obj/structure/chair/office,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cV" = (/obj/machinery/button/door{id = "bridge_onehalf"; name = "Bridge Blast Door"; pixel_x = 32; pixel_y = 5},/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cW" = (/obj/structure/table/reinforced,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"cX" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"cY" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/space) +"cZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/ruin/onehalf/hallway) +"da" = (/obj/structure/table/reinforced,/obj/item/device/flashlight,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"db" = (/obj/structure/table/reinforced,/obj/item/weapon/ore/bluespace_crystal,/obj/item/weapon/coin/plasma,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"dc" = (/obj/structure/closet/firecloset/full,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"dd" = (/obj/machinery/light,/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel,/area/ruin/onehalf/bridge) +"de" = (/obj/structure/girder/reinforced,/obj/item/stack/sheet/plasteel,/turf/open/floor/plating/airless,/area/space) +"df" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/space) +"dg" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/ruin/onehalf/hallway) +"dh" = (/obj/structure/grille,/obj/item/weapon/shard,/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/ruin/onehalf/hallway) +"di" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dj" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "bridge_onehalf"; name = "bridge blast door"},/turf/open/floor/plating,/area/ruin/onehalf/bridge) +"dl" = (/obj/structure/lattice,/obj/item/stack/sheet/plasteel,/turf/open/space,/area/space) +"dm" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"dn" = (/obj/structure/lattice,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/stack/rods,/turf/open/space,/area/space) +"do" = (/obj/structure/lattice,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/space) +"dp" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/space,/area/space) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaabacacacacacacacacacadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaeacafagagagagagagahagagaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaajakakakagalamanagaoapaoagaqarasaratarauaravaraaaaaaaaaaaa +aaaaawaxaxayazagaAamaBagaCapaoagaDaraEaraFaraEaraEarawaraGaraaaa +aaaaaaaHaIaxaJagaKaLaMagaoapaoagaqaraNaraOaraParaQaraaaraRaraaaa +aaaaaSajaxaTaUagagaVagagagaWagagaXaYaZbaaZbbaZbcbdarararbeararaa +aaaaawbfbgbhbibjbjbkbibiblbjbmbnbobpbqbpbqbpbqbpbqbpbrbsbtbubeaa +aaaaaabvbwbwbxbxbwbybxbxbzbAbBbCbpbpbDbEbDbpbDbEbFbGarbHbIbJbeaa +aaaaaabKajakbLbMbNbObPbQbRbSbTbUbUbUbUbUbUbUbUbUbUbUararbeararaa +aaaaaaaabVbWbKakbQbRajawbRbWbXbYaabZcacbcccdcecfcgbUawaaaaaaaaaa +aaaaaaaaaaaaaaaachaaaabVaxaxcicjckclcmcncocpcococqcradaaaaaaaaaa +aaaaaaaaaaaaaacsctcuaaaaajcvcwcxbUbUcycoczcocococAcBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaawcCaacDcEcFcGcHcIcoczcJcKcocLcecBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaacsawajcMcNbUbUbUcOcocococococecBaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaacPcCaxcQcRcSawbZcTcncocUcocVcWcXcYaaaaaaaaaa +aaaaaaaaaaaaaaaaaacsaaaabRcZaJcSaabZdadbdccececoddbUaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaadeawdfbQdgdhbUbUbUbUdidjdjdjdkbUbUaiaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaadldmdnacacacacacdoacacacdoacacafaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaadpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 9490d78d6ac..80e50732d6f 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -113,7 +113,7 @@ "cl" = (/obj/structure/chair/stool,/turf/open/floor/wood,/area/awaymission/wwmines) "cm" = (/obj/structure/bookcase{icon_state = "book-5"},/turf/open/floor/wood,/area/awaymission/wwgov) "cn" = (/turf/open/floor/wood,/area/awaymission/wwgov) -"co" = (/obj/item/weapon/moneybag,/turf/open/floor/wood,/area/awaymission/wwgov) +"co" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/wood,/area/awaymission/wwgov) "cp" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cq" = (/obj/structure/table/wood,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cr" = (/obj/structure/table/wood,/obj/machinery/microwave,/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) @@ -122,7 +122,7 @@ "cu" = (/obj/structure/lattice,/obj/structure/lattice,/turf/open/space,/area/space) "cv" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/carpet,/area/awaymission/wwmines) "cw" = (/turf/open/floor/carpet,/area/awaymission/wwgov) -"cx" = (/obj/item/weapon/moneybag,/turf/open/floor/carpet,/area/awaymission/wwgov) +"cx" = (/obj/item/weapon/storage/bag/money,/turf/open/floor/carpet,/area/awaymission/wwgov) "cy" = (/obj/structure/chair/wood/wings,/turf/open/floor/wood,/area/awaymission/wwgov) "cz" = (/turf/open/floor/plasteel{icon_state = "stage_bleft"},/area/awaymission/wwgov) "cA" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/wood,/area/awaymission/wwmines) diff --git a/_maps/asteroidstation.dm b/_maps/asteroidstation.dm new file mode 100644 index 00000000000..b0f05133904 --- /dev/null +++ b/_maps/asteroidstation.dm @@ -0,0 +1,44 @@ +/* +The /tg/ codebase currently requires you to have 9 z-levels of the same size dimensions. +z-level order is important, the order you put them in inside this file will determine what z level number they are assigned ingame. +Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1 + +current as of 4/21/2016 +z1 = station +z2 = centcomm +z3 = derelict telecomms satellite +z4 = derelict station +z5 = mostly empty space +z6 = empty space +z7 = empty space +z8 = empty space +z9 = empty space +*/ + +#if !defined(MAP_FILE) + + #define TITLESCREEN "title" //Add an image in misc/fullscreen.dmi, and set this define to the icon_state, to set a custom titlescreen for your map + + #define MINETYPE "mining" + + #include "map_files\AsteroidStation\AsteroidStation.dmm" + #include "map_files\generic\z2.dmm" + #include "map_files\generic\z3.dmm" + #include "map_files\generic\z4.dmm" + #include "map_files\AsteroidStation\z5.dmm" + #include "map_files\generic\z6.dmm" + #include "map_files\generic\z7.dmm" + #include "map_files\generic\z8.dmm" + #include "map_files\generic\z9.dmm" + + #define MAP_PATH "map_files/AsteroidStation" + #define MAP_FILE "AsteroidStation.dmm" + #define MAP_NAME "AsteroidStation" + + #define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED) + +#elif !defined(MAP_OVERRIDE) + + #warn a map has already been included, ignoring AsteroidStation. + +#endif diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm new file mode 100644 index 00000000000..f30468aae07 --- /dev/null +++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm @@ -0,0 +1,64674 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaa" = ( +/turf/open/space, +/area/space) +"aab" = ( +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"aac" = ( +/turf/closed/mineral/random, +/area/mine/unexplored) +"aad" = ( +/turf/closed/mineral/random/high_chance, +/area/mine/unexplored) +"aae" = ( +/turf/open/space, +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + dir = 8; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaf" = ( +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aag" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters{ + id = "syndieshutters"; + name = "blast shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aah" = ( +/turf/open/space, +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + dir = 1; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aai" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaj" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aak" = ( +/obj/structure/table, +/obj/item/device/flashlight/lamp{ + pixel_x = 4; + pixel_y = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aal" = ( +/obj/machinery/computer/shuttle/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aam" = ( +/obj/structure/table, +/obj/machinery/button/door{ + id = "syndieshutters"; + name = "remote shutter control"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aan" = ( +/obj/structure/computerframe, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aao" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aap" = ( +/obj/structure/chair/comfy/black{ + dir = 1; + icon_state = "comfychair"; + name = "pilot's chair" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaq" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aar" = ( +/obj/item/device/radio/intercom{ + desc = "Talk through this. Evilly"; + freerange = 1; + frequency = 1213; + name = "Syndicate Intercom"; + pixel_y = -32; + subspace_transmission = 1; + syndie = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aas" = ( +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aat" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 2; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aau" = ( +/obj/machinery/door/window{ + name = "Cockpit"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aav" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 4; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaw" = ( +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aax" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/zipties{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aay" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaz" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaA" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 8; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaB" = ( +/obj/machinery/porta_turret/syndicate, +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aaC" = ( +/obj/machinery/suit_storage_unit/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaD" = ( +/obj/structure/closet/syndicate/nuclear, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaE" = ( +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aaF" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaG" = ( +/obj/structure/table, +/obj/item/device/aicard, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaH" = ( +/obj/machinery/door/poddoor{ + auto_close = 300; + id = "smindicate"; + name = "outer blast door" + }, +/obj/machinery/button/door{ + id = "smindicate"; + name = "external door control"; + pixel_x = -26; + pixel_y = 0; + req_access_txt = "150" + }, +/obj/docking_port/mobile{ + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate"; + name = "syndicate infiltrator"; + roundstart_move = "syndicate_away"; + travelDir = 180; + width = 18 + }, +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_sw"; + name = "southwest of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aaI" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 0 + }, +/turf/closed/wall/shuttle{ + icon_state = "wall3" + }, +/area/shuttle/syndicate) +"aaJ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 1; + icon_state = "diagonalWall3" + }, +/area/shuttle/syndicate) +"aaK" = ( +/obj/docking_port/stationary{ + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_ne"; + name = "northeast of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) +"aaL" = ( +/obj/structure/table, +/obj/item/weapon/c4{ + pixel_x = 2; + pixel_y = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaM" = ( +/obj/machinery/door/window{ + dir = 4; + name = "EVA Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaN" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaO" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "EVA Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaP" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"aaQ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/syndicate/black/red, +/obj/item/clothing/head/helmet/space/syndicate/black/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaR" = ( +/obj/item/device/radio/intercom{ + desc = "Talk through this. Evilly"; + freerange = 1; + frequency = 1213; + name = "Syndicate Intercom"; + pixel_x = -32; + subspace_transmission = 1; + syndie = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaS" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaT" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaV" = ( +/obj/structure/table, +/obj/item/stack/medical/ointment, +/obj/item/stack/medical/bruise_pack, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaW" = ( +/obj/structure/table, +/obj/item/weapon/stock_parts/cell/high{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/stock_parts/cell/high, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaX" = ( +/obj/structure/table, +/obj/item/weapon/screwdriver{ + pixel_y = 9 + }, +/obj/item/device/assembly/voice{ + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaY" = ( +/obj/structure/table, +/obj/item/weapon/wrench, +/obj/item/device/assembly/infra, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aaZ" = ( +/obj/structure/table, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aba" = ( +/obj/structure/table, +/obj/item/weapon/weldingtool/largetank{ + pixel_y = 3 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abb" = ( +/obj/machinery/door/window{ + dir = 4; + name = "Infirmary"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abc" = ( +/obj/machinery/door/window/westright{ + name = "Tool Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abd" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/syndicate, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abe" = ( +/turf/closed/wall, +/area/space/nearstation) +"abf" = ( +/turf/closed/mineral/random, +/area/mine/explored) +"abg" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abh" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Infirmary"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abi" = ( +/obj/machinery/door/window{ + dir = 8; + name = "Tool Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abj" = ( +/obj/structure/table, +/obj/item/weapon/gun/syringe{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abk" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/syringe/charcoal, +/obj/item/weapon/reagent_containers/syringe/charcoal{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/syringe/charcoal{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abl" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abm" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Secure Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abn" = ( +/obj/structure/table, +/obj/item/device/sbeacondrop/bomb{ + pixel_y = 5 + }, +/obj/item/device/sbeacondrop/bomb, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abo" = ( +/obj/structure/table, +/obj/item/weapon/grenade/syndieminibomb{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/weapon/grenade/syndieminibomb{ + pixel_x = -1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abp" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"abq" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/structure/mirror{ + pixel_x = 30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abr" = ( +/obj/machinery/telecomms/allinone{ + intercept = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abs" = ( +/obj/machinery/nuclearbomb/syndicate, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abt" = ( +/obj/structure/table, +/obj/item/weapon/circular_saw, +/obj/item/weapon/cautery, +/obj/item/weapon/surgicaldrill, +/obj/item/robot_parts/l_arm, +/obj/item/robot_parts/r_arm, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abu" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abv" = ( +/obj/structure/table, +/obj/item/weapon/scalpel, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abw" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abx" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"aby" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abz" = ( +/obj/structure/table, +/obj/item/stack/rods{ + amount = 50 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor4" + }, +/area/shuttle/syndicate) +"abA" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_l" + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abB" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abC" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion_r" + }, +/turf/open/floor/plating, +/area/shuttle/syndicate) +"abD" = ( +/turf/open/space, +/area/space/nearstation) +"abE" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6" + }, +/area/shuttle/arrival) +"abF" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14" + }, +/area/shuttle/arrival) +"abG" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/arrival) +"abH" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abI" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + dir = 3; + icon_state = "swall_f10" + }, +/area/shuttle/arrival) +"abJ" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/open/space, +/area/shuttle/arrival) +"abK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall11" + }, +/area/shuttle/arrival) +"abL" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abM" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abN" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abO" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abP" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall7" + }, +/area/shuttle/arrival) +"abQ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/arrival) +"abR" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"abS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark{ + name = "JoinLate" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abT" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abU" = ( +/obj/structure/table, +/obj/item/weapon/pen, +/obj/item/weapon/paper{ + icon_state = "paper_words"; + info = "Pilot's Log, . I think the engine trouble might be serious this time. This station hasn't exactly been a big help for fixing our problems, either; so I think this shuttle's grounded for the forseeable future. Fuck."; + name = "Pilot's Log" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abV" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/arrival) +"abW" = ( +/obj/effect/landmark{ + name = "Observer-Start" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abX" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abY" = ( +/obj/structure/table, +/obj/item/weapon/cigbutt/cigarbutt, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"abZ" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_1) +"aca" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acb" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_1) +"acc" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_2) +"acd" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"ace" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_2) +"acf" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acg" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"ach" = ( +/obj/structure/closet/wardrobe/green, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"aci" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrivals Shuttle Requests Console"; + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acj" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/arrival) +"ack" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/pod_1) +"acl" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acm" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3" + }, +/area/shuttle/pod_2) +"acn" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"aco" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5" + }, +/area/shuttle/arrival) +"acp" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13" + }, +/area/shuttle/arrival) +"acq" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrivals Shuttle Airlock" + }, +/obj/docking_port/mobile{ + dwidth = 5; + height = 7; + id = "arrival"; + name = "arrival shuttle"; + travelDir = -90; + width = 15 + }, +/obj/docking_port/stationary{ + dwidth = 5; + height = 7; + id = "arrival_home"; + name = "port bay 1"; + width = 15 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/arrival) +"acr" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9" + }, +/area/shuttle/arrival) +"acs" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"act" = ( +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"acu" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"acv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acw" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acx" = ( +/turf/closed/wall, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acy" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_1) +"acz" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + id = "pod1"; + name = "escape pod 1" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_1) +"acA" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_1) +"acB" = ( +/turf/closed/wall, +/area/hallway/secondary/entry) +"acC" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_2) +"acD" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + id = "pod2"; + name = "escape pod 2" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_2) +"acE" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_2) +"acF" = ( +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acG" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acH" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Escape Pod One"; + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acI" = ( +/obj/structure/closet/emcloset, +/obj/machinery/camera{ + c_tag = "Escape Pod Two"; + dir = 8 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acJ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/transport) +"acK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/transport) +"acL" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/transport) +"acM" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/transport) +"acN" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/transport) +"acO" = ( +/turf/closed/wall, +/area/maintenance/fpmaint) +"acP" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/fpmaint) +"acQ" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Escape Pod One" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acR" = ( +/obj/structure/sign/pods, +/turf/closed/wall, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acS" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Escape Pod Two" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acT" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acU" = ( +/obj/machinery/camera{ + c_tag = "Arrivals Docking" + }, +/obj/structure/chair, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"acV" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acW" = ( +/obj/machinery/computer/shuttle/ferry/request, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acX" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"acY" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f5" + }, +/area/shuttle/transport) +"acZ" = ( +/turf/closed/wall/r_wall, +/area/maintenance/fpmaint) +"ada" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/fpmaint) +"adb" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"add" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ade" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adf" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adh" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adj" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Arrivals Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ado" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adp" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adq" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adr" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"ads" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adt" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adu" = ( +/obj/machinery/door/airlock/external{ + name = "Arrivals Docking Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adv" = ( +/obj/machinery/door/airlock/shuttle, +/obj/docking_port/mobile{ + dir = 4; + dwidth = 2; + height = 12; + id = "ferry"; + name = "ferry shuttle"; + roundstart_move = "ferry_away"; + travelDir = 180; + width = 5 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 2; + height = 12; + id = "ferry_home"; + name = "port bay 2"; + turf_type = /turf/open/space; + width = 5 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adw" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adx" = ( +/obj/machinery/door/airlock/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"ady" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adz" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adA" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adN" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adO" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adS" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adT" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/transport) +"adU" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f6" + }, +/area/shuttle/transport) +"adV" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/transport) +"adW" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) +"adX" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/fpmaint) +"adY" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"adZ" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aea" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeb" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aec" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aed" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/jade, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aee" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aef" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/camera{ + c_tag = "Arrivals Lounge"; + dir = 8; + network = list("SS13","Medbay") + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeh" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/construction) +"aei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/construction) +"aej" = ( +/turf/closed/wall, +/area/construction) +"aek" = ( +/obj/machinery/door/airlock/engineering{ + name = "Construction Area"; + req_access_txt = "32" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/construction) +"ael" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/construction) +"aem" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aen" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/transport) +"aeo" = ( +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aep" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeq" = ( +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aer" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aes" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aet" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeu" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aev" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction) +"aew" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/construction) +"aex" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction) +"aey" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction) +"aez" = ( +/obj/machinery/camera{ + c_tag = "Construction Area" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeA" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/construction) +"aeB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/construction) +"aeC" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/construction) +"aeD" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeE" = ( +/obj/structure/chair/comfy/beige, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeF" = ( +/obj/structure/chair/comfy/beige, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeG" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeH" = ( +/obj/structure/chair/comfy/beige, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeJ" = ( +/obj/machinery/door/airlock{ + name = "Fore Emergency Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeK" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeL" = ( +/obj/machinery/light_construct{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"aeM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/construction) +"aeN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plating, +/area/construction) +"aeO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeP" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/construction) +"aeQ" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/construction) +"aeR" = ( +/turf/open/floor/plating, +/area/construction) +"aeS" = ( +/obj/machinery/light_construct{ + dir = 4 + }, +/turf/open/floor/plating, +/area/construction) +"aeT" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeU" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/snacks/chips, +/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeW" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeX" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/weapon/lighter, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aeZ" = ( +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afa" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/weapon/tank/internals/emergency_oxygen, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afb" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/construction) +"afc" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/construction) +"afd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/construction) +"afe" = ( +/turf/open/floor/plasteel, +/area/construction) +"aff" = ( +/obj/structure/cable/orange{ + icon_state = "0-2"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afg" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/fpmaint) +"afi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afp" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=FrCH2"; + location = "Arrival" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afr" = ( +/obj/item/weapon/extinguisher, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afs" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"aft" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/construction) +"afu" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/construction) +"afv" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/hardhat, +/turf/open/floor/plating, +/area/construction) +"afw" = ( +/obj/structure/closet/toolcloset, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plating, +/area/construction) +"afx" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/construction) +"afy" = ( +/obj/machinery/light_construct, +/turf/open/floor/plating, +/area/construction) +"afz" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/construction) +"afA" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/construction) +"afB" = ( +/turf/closed/wall, +/area/maintenance/electrical) +"afC" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Arrivals Power Control"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afD" = ( +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "E.V.A. Maintenance APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afE" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afF" = ( +/obj/machinery/camera{ + c_tag = "Customs Desk"; + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afG" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afH" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afJ" = ( +/obj/structure/cable, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Arrival Shuttle Hallway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry{ + name = "Arrivals Lounge" + }) +"afL" = ( +/turf/closed/wall/r_wall, +/area/gateway) +"afM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/gateway) +"afN" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"afO" = ( +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/rack, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"afP" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating, +/area/maintenance/electrical) +"afQ" = ( +/turf/open/floor/plating, +/area/maintenance/electrical) +"afR" = ( +/obj/machinery/mech_bay_recharge_port, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"afS" = ( +/turf/open/floor/mech_bay_recharge_floor, +/area/maintenance/electrical) +"afT" = ( +/obj/machinery/computer/mech_bay_power_console, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/maintenance/electrical) +"afU" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"afV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afW" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afX" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "EVA Power Control and Solar Access"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afY" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"afZ" = ( +/turf/closed/wall, +/area/security/checkpoint) +"aga" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/checkpoint) +"agb" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Arrivals Security Checkpoint"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/checkpoint) +"agc" = ( +/obj/structure/noticeboard, +/turf/closed/wall, +/area/security/checkpoint) +"agd" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"age" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agf" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agg" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agh" = ( +/obj/machinery/gateway{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/gateway) +"agi" = ( +/obj/machinery/gateway{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agj" = ( +/obj/machinery/gateway{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/gateway) +"agk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agl" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/apmaint) +"agm" = ( +/obj/machinery/recycler, +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"agn" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler3" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"ago" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler3" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/apmaint) +"agp" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"agq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"agr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ags" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agt" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agu" = ( +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agv" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agw" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Electrical Maintenance APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agy" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agz" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"agA" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"agB" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"agC" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/security/checkpoint) +"agD" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agE" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agF" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/checkpoint) +"agG" = ( +/obj/item/device/assembly/flash/handheld, +/obj/item/weapon/crowbar/red, +/obj/structure/table/reinforced, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/security/checkpoint) +"agH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agJ" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"agK" = ( +/obj/machinery/gateway{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agL" = ( +/obj/machinery/gateway/centerstation, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"agM" = ( +/obj/machinery/gateway{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"agN" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"agO" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 9 + }, +/area/maintenance/apmaint) +"agP" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler3" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/maintenance/apmaint) +"agQ" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "Recycler3" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"agR" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "Recycler3"; + verted = -1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"agS" = ( +/turf/closed/wall, +/area/maintenance/apmaint) +"agT" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"agU" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agV" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"agY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"agZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aha" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahb" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/fyellow, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahc" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahd" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahe" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Fore" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahg" = ( +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahh" = ( +/obj/structure/rack, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahk" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Customs Deck Maintenance"; + req_access_txt = "1" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/checkpoint) +"aho" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahp" = ( +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint) +"ahr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/checkpoint) +"ahs" = ( +/obj/machinery/door/airlock/security{ + desc = "Have your documents ready."; + name = "Security Checkpoint"; + req_access = null; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/checkpoint) +"aht" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ahu" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"ahv" = ( +/obj/machinery/gateway{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/gateway) +"ahw" = ( +/obj/machinery/gateway, +/obj/structure/cable/orange{ + icon_state = "0-2"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/gateway) +"ahx" = ( +/obj/machinery/gateway{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/gateway) +"ahy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"ahz" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"ahA" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/chair/stool, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"ahB" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Recycler APC"; + pixel_x = 24 + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Recycler"; + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"ahC" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler3" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ahD" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ahE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahH" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ahI" = ( +/obj/structure/table, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"ahJ" = ( +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahK" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahM" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahN" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahO" = ( +/obj/machinery/porta_turret/ai{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ahP" = ( +/obj/structure/closet/crate, +/obj/item/device/assembly/prox_sensor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahS" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahU" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ahW" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Security Checkpoint APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/security/checkpoint) +"ahX" = ( +/obj/structure/closet/wardrobe/red, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/security/checkpoint) +"ahY" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"ahZ" = ( +/obj/machinery/computer/card, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aia" = ( +/obj/machinery/computer/security, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aib" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/checkpoint) +"aic" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/security/checkpoint) +"aid" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aie" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aif" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aig" = ( +/obj/machinery/door/window{ + name = "Gateway Chamber"; + req_access_txt = "62" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aih" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aii" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/gateway) +"aij" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"aik" = ( +/obj/machinery/conveyor_switch{ + id = "Recycler2" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ail" = ( +/obj/machinery/mineral/stacking_unit_console{ + machinedir = 4 + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"aim" = ( +/obj/machinery/mineral/stacking_machine{ + input_dir = 2; + output_dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ain" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/apmaint) +"aio" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aip" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiq" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high/plus, +/obj/item/weapon/stock_parts/cell/high/plus, +/turf/open/floor/plating, +/area/maintenance/electrical) +"air" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ais" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ait" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiu" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiv" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aiw" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aix" = ( +/turf/closed/wall, +/area/storage/tech) +"aiy" = ( +/turf/closed/wall/r_wall, +/area/storage/tech) +"aiz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aiC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/gateway) +"aiD" = ( +/obj/structure/table, +/obj/structure/sign/biohazard{ + pixel_x = -32 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/camera{ + c_tag = "Gateway"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/gateway) +"aiE" = ( +/obj/structure/table, +/obj/item/weapon/paper/pamphlet, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiF" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiG" = ( +/obj/structure/table, +/obj/item/device/radio/off{ + pixel_y = 6 + }, +/obj/item/device/radio/off{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/device/radio/off{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/device/radio/off, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/machinery/recharger, +/obj/structure/sign/biohazard{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/gateway) +"aiI" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window/northright{ + dir = 8; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/obj/machinery/door/window/northright{ + dir = 4; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"aiJ" = ( +/obj/machinery/conveyor{ + dir = 5; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiL" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiM" = ( +/obj/structure/rack, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"aiN" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/apmaint) +"aiO" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"aiP" = ( +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aiR" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiT" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiU" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aiV" = ( +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiW" = ( +/obj/machinery/power/terminal, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 6; + on = 1; + scrub_Toxins = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" + }, +/area/maintenance/electrical) +"aiY" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"aiZ" = ( +/obj/effect/landmark/start{ + name = "AI" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = -10; + pixel_y = 25; + req_access_txt = "16" + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + canhear_range = 6; + freerange = 1; + name = "Common Channel"; + pixel_x = 32; + pixel_y = 10 + }, +/obj/machinery/requests_console{ + department = "AI"; + departmentType = 5; + name = "AI Core RC"; + pixel_x = 30; + pixel_y = 30 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -33; + pixel_y = 33 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"aja" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ajb" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/storage/tech) +"ajc" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/pandemic{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/circuitboard/rdconsole, +/obj/item/weapon/circuitboard/rdserver{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/destructive_analyzer, +/obj/item/weapon/circuitboard/protolathe, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/storage/tech) +"ajd" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/robotics{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/mecha_control{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/machinery/camera{ + c_tag = "Secure Tool Storage"; + dir = 4 + }, +/turf/open/floor/plating, +/area/storage/tech) +"aje" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/storage/tech) +"ajf" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/borgupload{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/aiupload{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plating, +/area/storage/tech) +"ajg" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/message_monitor{ + pixel_y = -5 + }, +/obj/item/weapon/circuitboard/crew{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/weapon/circuitboard/arcade/battle, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/storage/tech) +"ajh" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/storage/tech) +"aji" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ajl" = ( +/obj/machinery/door/airlock/command{ + desc = "A powerful and mysterious object is housed here, and thus, ID restrictions are tight. Can be opened to the public via bridge controls."; + name = "Gateway Access"; + req_access_txt = "62" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/gateway) +"ajm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajq" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/gateway) +"ajr" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/apmaint) +"ajs" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajt" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/supply) +"aju" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/supply) +"ajv" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14"; + dir = 2 + }, +/area/shuttle/supply) +"ajw" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/supply) +"ajx" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajy" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ajA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajC" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/mine/explored) +"ajD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/closed/wall, +/area/maintenance/electrical) +"ajE" = ( +/obj/machinery/computer/monitor{ + name = "backup power monitoring console" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajF" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"ajG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"ajH" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajI" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ajJ" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/item/device/radio/intercom{ + canhear_range = 6; + freerange = 1; + frequency = 1447; + name = "AI Private Channel"; + pixel_x = -30; + pixel_y = -2 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "AI Chamber APC"; + pixel_x = 0; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajL" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 30; + pixel_y = -2 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -4; + pixel_y = 25 + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 4; + pixel_y = 28 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajM" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ajN" = ( +/obj/structure/grille, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"ajO" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"ajP" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajQ" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"ajR" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajS" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajT" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ajV" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"ajW" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/cloning, +/obj/item/weapon/circuitboard/med_data{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/clonescanner, +/obj/item/weapon/circuitboard/clonepod, +/obj/item/weapon/circuitboard/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"ajX" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The high-risk electronic storage area, only a few people can legally access this area."; + name = "Secure Tech Storage"; + req_access_txt = "19;23" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/storage/tech) +"ajY" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/mining, +/obj/item/weapon/circuitboard/autolathe{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/circuitboard/communications{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"ajZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"aka" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"akb" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"akc" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gateshutter"; + name = "Gateway Access Shutter" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/gateway) +"akd" = ( +/turf/open/floor/plasteel, +/area/gateway) +"ake" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/gateway) +"akg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/gateway) +"akh" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/gateway) +"aki" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Recycler2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akj" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akl" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Cargo Atmospheric Control" + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akm" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akn" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3"; + dir = 2 + }, +/area/shuttle/supply) +"ako" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"akp" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f5" + }, +/area/shuttle/supply) +"akq" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall15"; + dir = 2 + }, +/area/shuttle/supply) +"akr" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"aks" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akt" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance"; + req_access_txt = "11" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"aku" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 0 + }, +/turf/closed/wall, +/area/maintenance/electrical) +"akv" = ( +/obj/machinery/door/airlock/engineering{ + name = "Electrical Maintenance"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/electrical) +"akw" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = 4; + pixel_y = -27; + req_access_txt = "16" + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = -8; + pixel_y = 32 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 6; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"akx" = ( +/obj/machinery/door/window{ + dir = 4; + name = "AI Core Door"; + req_access_txt = "16" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"aky" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akz" = ( +/obj/machinery/door/window{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "AI Core Door"; + req_access_txt = "16" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"akE" = ( +/obj/effect/landmark{ + name = "tripai" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the AI chamber door."; + id = "aishutter"; + name = "AI Shutters Control"; + pixel_x = -4; + pixel_y = 27; + req_access_txt = "16" + }, +/obj/machinery/turretid{ + name = "AI Chamber turret control"; + pixel_x = 8; + pixel_y = -32 + }, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -6; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai) +"akF" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Exterior"; + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"akG" = ( +/turf/closed/wall/r_wall, +/area/storage/eva) +"akH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"akI" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/secure_data{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/security{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/card{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akJ" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akK" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/item/device/t_scanner, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/storage/tech) +"akL" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/tech) +"akM" = ( +/obj/structure/table, +/obj/item/weapon/cartridge/signal, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/obj/item/wallframe/camera, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/storage/tech) +"akN" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akO" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/powermonitor{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/stationalert{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/atmos_alert{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/storage/tech) +"akP" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"akQ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gateshutter"; + name = "Gateway Access Shutter" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akR" = ( +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = -22 + }, +/obj/machinery/button/door{ + id = "gateshutter"; + name = "Gateway Shutter Control"; + pixel_x = 6; + pixel_y = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/gateway) +"akS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/closet/emcloset, +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/gateway) +"akT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Gateway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/gateway) +"akU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/closet/secure_closet/exile, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/gateway) +"akV" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/gateway) +"akW" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/apmaint) +"akX" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akY" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Cargo Bay Maintenance APC"; + pixel_x = -24 + }, +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"akZ" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ala" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alb" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alc" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"ald" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ale" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/apmaint) +"alf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/apmaint) +"alg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"alh" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ali" = ( +/obj/machinery/button/door{ + id = "maint3"; + name = "Blast Door Control C"; + pixel_x = 0; + pixel_y = 24; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alk" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"all" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aln" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alo" = ( +/obj/machinery/button/door{ + id = "maint1"; + name = "Blast Door Control A"; + pixel_x = 0; + pixel_y = 24; + req_access_txt = "0" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alp" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8"; + tag = "" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alr" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"als" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"alt" = ( +/obj/machinery/door/poddoor/preopen{ + id = "aishutter"; + name = "AI core shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/turret_protected/ai) +"alu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "aishutter"; + name = "AI core shutters" + }, +/turf/open/floor/plating, +/area/turret_protected/ai) +"alv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"alw" = ( +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"alx" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aly" = ( +/obj/machinery/power/solar{ + id = "auxsolareast"; + name = "Port Auxiliary Solar Array" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"alz" = ( +/turf/closed/mineral/random/low_chance, +/area/maintenance/fpmaint) +"alA" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"alB" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/suit_storage_unit/standard_unit, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"alC" = ( +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tech Storage APC"; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"alD" = ( +/turf/open/floor/plasteel, +/area/storage/tech) +"alE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alF" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/storage/tech) +"alG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"alI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"alJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/storage/tech) +"alK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alM" = ( +/obj/machinery/camera{ + c_tag = "Fore Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"alN" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/apmaint) +"alO" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + desc = "All disposals systems lead here. Take heed, the crusher does not discriminate junk from bodies."; + name = "Recycler Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/apmaint) +"alP" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/apmaint) +"alQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Cargo Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/apmaint) +"alS" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alT" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint3" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alV" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alW" = ( +/obj/machinery/button/door{ + id = "maint2"; + name = "Blast Door Control B"; + pixel_x = 0; + pixel_y = -24; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alX" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"alY" = ( +/obj/machinery/door/poddoor/preopen{ + id = "maint1" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/apmaint) +"alZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ama" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amb" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Port"; + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"amd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ame" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Chamber Starboard"; + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amf" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"amg" = ( +/obj/machinery/button/door{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + pixel_x = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/eva) +"amh" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/storage/eva) +"ami" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"amj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"amk" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Tech Storage Maintenance"; + req_access_txt = "23" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aml" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/storage/tech) +"amm" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amn" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amo" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amp" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/storage/tech) +"amq" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/storage/tech) +"amr" = ( +/obj/machinery/door/airlock/engineering{ + desc = "The high-tech storage wing, with computer and electronic equipment."; + name = "Tech Storage"; + req_access_txt = "23" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/storage/tech) +"ams" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amt" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amu" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amC" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amD" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amE" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amG" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amH" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/server) +"amI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"amJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amK" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"amL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"amM" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"amN" = ( +/turf/open/floor/plasteel, +/area/storage/eva) +"amO" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"amP" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/item/weapon/aiModule/reset, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/storage/tech) +"amQ" = ( +/obj/structure/table, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/item/weapon/wirecutters, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amR" = ( +/obj/structure/table, +/obj/item/weapon/electronics/apc, +/obj/item/weapon/electronics/airlock, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amS" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/device/multitool, +/obj/item/clothing/glasses/meson, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amT" = ( +/obj/machinery/vending/assist, +/obj/machinery/camera{ + c_tag = "Tech Storage"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amU" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amV" = ( +/obj/structure/table, +/obj/item/device/analyzer/plant_analyzer, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amW" = ( +/obj/structure/table, +/obj/item/device/analyzer, +/obj/item/device/healthanalyzer, +/obj/machinery/requests_console{ + department = "Tech storage"; + name = "Tech Storage Requests Console"; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/storage/tech) +"amX" = ( +/obj/structure/table, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/storage/tech) +"amY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"amZ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ana" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Fore Hallway APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anb" = ( +/turf/closed/wall, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anc" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/quartermaster/qm) +"and" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"ane" = ( +/obj/machinery/button/door{ + id = "QMLoaddoor"; + name = "Loading Doors"; + pixel_x = 0; + pixel_y = -24 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"anf" = ( +/turf/open/floor/plasteel/shuttle, +/turf/closed/wall/shuttle/interior{ + icon_state = "swall_f6" + }, +/area/shuttle/supply) +"ang" = ( +/obj/machinery/telecomms/bus/preset_two, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anh" = ( +/obj/machinery/telecomms/processor/preset_one, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ani" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Telecommunications APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anj" = ( +/obj/machinery/telecomms/broadcaster/preset_left, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ank" = ( +/obj/machinery/camera{ + c_tag = "Telecommunications Server Room" + }, +/obj/machinery/telecomms/broadcaster/preset_right, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anl" = ( +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anm" = ( +/obj/machinery/telecomms/processor/preset_three, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ann" = ( +/obj/machinery/telecomms/bus/preset_three, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ano" = ( +/obj/item/clothing/gloves/color/rainbow, +/obj/item/clothing/head/soft/rainbow, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anp" = ( +/obj/machinery/ai_status_display{ + pixel_y = -32 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"ans" = ( +/obj/machinery/ai_slipper{ + icon_state = "motion0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"ant" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anv" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anw" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"any" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anz" = ( +/obj/structure/closet/crate, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anA" = ( +/obj/structure/closet, +/obj/item/device/flashlight, +/obj/item/weapon/extinguisher, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anB" = ( +/obj/structure/cable/orange{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anC" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anD" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anE" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anF" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "Storage area for the station's general-purpose space suits and other critical materials. Can be opened via bridge controls in an emergency."; + name = "Standard E.V.A. Suits"; + req_access_txt = "18" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"anG" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/eva) +"anH" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"anJ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/supply) +"anL" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"anM" = ( +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "Supply Dock Loading Door" + }, +/obj/machinery/conveyor{ + dir = 2; + id = "QMLoad" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/supply) +"anN" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/obj/docking_port/mobile/supply{ + dir = 1; + dwidth = 7; + width = 12 + }, +/obj/docking_port/stationary{ + dir = 1; + dwidth = 7; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"anO" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13"; + dir = 2 + }, +/area/shuttle/supply) +"anP" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/supply) +"anQ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anS" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"anT" = ( +/obj/item/clothing/under/color/rainbow, +/obj/item/clothing/shoes/sneakers/rainbow, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"anU" = ( +/obj/machinery/light, +/turf/open/floor/bluegrid, +/area/turret_protected/ai) +"anV" = ( +/turf/closed/wall/r_wall, +/area/maintenance/auxsolarstarboard) +"anW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"anX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anY" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Mining Atmospherics Control"; + dir = 8; + network = list("SS13","Medbay") + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"anZ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Storage"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aob" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aoc" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aod" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aoe" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = -3 + }, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/storage/eva) +"aof" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/magboots, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aog" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoh" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aok" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Quartermaster's Office APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aol" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aom" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aon" = ( +/obj/structure/rack, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/belt/utility, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "Cargo Bay APC"; + pixel_y = -24 + }, +/obj/structure/cable/orange, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aop" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aoq" = ( +/turf/closed/wall, +/area/quartermaster/office) +"aor" = ( +/obj/machinery/door/airlock/external{ + name = "Supply Dock Airlock"; + req_access_txt = "31" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aos" = ( +/obj/machinery/conveyor{ + id = "QMLoad" + }, +/obj/machinery/door/poddoor{ + id = "QMLoaddoor"; + name = "Supply Dock Loading Door" + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aot" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aou" = ( +/obj/machinery/telecomms/processor/preset_two, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aov" = ( +/obj/machinery/telecomms/bus/preset_one, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aow" = ( +/obj/machinery/telecomms/receiver/preset_left, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aox" = ( +/obj/machinery/telecomms/receiver/preset_right, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoy" = ( +/obj/machinery/telecomms/bus/preset_four, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoz" = ( +/obj/machinery/telecomms/processor/preset_four, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aoA" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The heart of the AI, defended by autoturrets and motion alarms."; + icon_state = "door_locked"; + locked = 1; + name = "AI Chamber"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai) +"aoB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai) +"aoC" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoD" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoF" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aoG" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aoH" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoI" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoK" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoL" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/storage/eva) +"aoO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/head/welding, +/obj/item/weapon/crowbar, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aoP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoQ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoR" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"aoS" = ( +/obj/machinery/door/airlock/maintenance{ + name = "E.V.A. Maintenance"; + req_access_txt = "18"; + req_one_access_txt = "0" + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoT" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aoU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aoV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aoW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/quartermaster/office) +"aoX" = ( +/turf/closed/wall, +/area/quartermaster/qm) +"aoY" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/qm) +"aoZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"apa" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/office) +"apb" = ( +/turf/open/floor/plating, +/area/quartermaster/office) +"apc" = ( +/obj/machinery/conveyor{ + id = "QMLoad" + }, +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/quartermaster/office) +"apd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"ape" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"apf" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"apg" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aph" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"api" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/porta_turret/ai, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apj" = ( +/obj/machinery/flasher{ + id = "AI"; + pixel_x = 6; + pixel_y = 32 + }, +/obj/machinery/computer/upload/ai, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apk" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"apl" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/computer/upload/borg, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apm" = ( +/obj/structure/sign/kiddieplaque{ + pixel_x = 32 + }, +/obj/machinery/porta_turret/ai, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"apn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apo" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"app" = ( +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apr" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aps" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"apt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apu" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apv" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apw" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"apx" = ( +/obj/machinery/power/tracker, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/auxstarboard) +"apy" = ( +/turf/closed/wall, +/area/quartermaster/miningdock) +"apz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Mining Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/fpmaint) +"apB" = ( +/obj/structure/rack, +/obj/item/weapon/storage/belt/utility, +/obj/item/clothing/mask/gas, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apC" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apD" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apE" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/belt/utility, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apF" = ( +/obj/structure/rack, +/obj/item/weapon/tank/jetpack/carbondioxide, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apG" = ( +/obj/structure/rack, +/obj/item/weapon/tank/jetpack/carbondioxide, +/obj/machinery/camera{ + c_tag = "E.V.A."; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"apH" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"apI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/power/apc{ + dir = 4; + name = "Vacant Office APC"; + pixel_x = 24 + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/vacantoffice) +"apJ" = ( +/turf/closed/wall, +/area/security/vacantoffice) +"apK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"apL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"apM" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/quartermaster/office) +"apN" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/quartermaster/office) +"apO" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/quartermaster/office) +"apP" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apQ" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apR" = ( +/obj/structure/closet/secure_closet/quartermaster, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + name = "Cargo Bay Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apS" = ( +/obj/structure/table/glass, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/quartermaster, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/weapon/coin/silver, +/obj/machinery/camera{ + c_tag = "Quartermaster's Office" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apT" = ( +/obj/structure/table/glass, +/obj/item/weapon/clipboard, +/obj/item/weapon/stamp/qm, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apU" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/qm) +"apV" = ( +/obj/machinery/photocopier, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) +"apW" = ( +/obj/structure/table/glass, +/obj/item/device/toner, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"apX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/quartermaster/office) +"apY" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"apZ" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aqa" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "QMLoad" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aqb" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/quartermaster/office) +"aqc" = ( +/obj/machinery/button/door{ + id = "QMLoaddoor"; + name = "Loading Doors"; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/quartermaster/office) +"aqd" = ( +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aqe" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aqf" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #1" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1400; + home_destination = "QM #1"; + suffix = "#1" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqg" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #2" + }, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #2"; + suffix = "#2" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqh" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #3" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1450 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqi" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "QM #4" + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1455 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/quartermaster/office) +"aqj" = ( +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Telecommunications Maintenance APC"; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aqk" = ( +/obj/machinery/telecomms/relay/preset/station, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aql" = ( +/obj/machinery/telecomms/hub/preset, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqm" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqn" = ( +/obj/machinery/blackbox_recorder, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqo" = ( +/obj/machinery/message_server, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"aqp" = ( +/obj/structure/grille, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"aqq" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/core/full/antimov, +/obj/item/weapon/aiModule/reset/purge, +/obj/item/weapon/aiModule/zeroth/oneHuman, +/obj/item/weapon/aiModule/supplied/oxygen, +/obj/machinery/door/window/southleft{ + layer = 2.9; + name = "High-Risk Modules"; + req_access_txt = "20" + }, +/obj/item/weapon/aiModule/core/full/tyrant, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"aqr" = ( +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"aqs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai_upload) +"aqt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/turret_protected/ai_upload) +"aqu" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/core/full/corp, +/obj/item/weapon/aiModule/core/freeformcore, +/obj/item/weapon/aiModule/core/full/asimov, +/obj/machinery/door/window/southright{ + layer = 2.9; + name = "Core Modules"; + req_access_txt = "20" + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"aqv" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Fore Starboard Solar APC"; + pixel_x = -25; + pixel_y = 3 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqx" = ( +/obj/structure/chair/stool, +/obj/machinery/camera{ + c_tag = "Fore Starboard Solar Control"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqy" = ( +/obj/machinery/power/solar_control{ + id = "auxsolareast"; + name = "Fore Starboard Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"aqz" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"aqA" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = -3 + }, +/obj/item/weapon/pickaxe{ + desc = "The pickaxe looks blunt."; + force = 5; + pixel_x = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqB" = ( +/obj/structure/rack, +/obj/item/weapon/shovel{ + pixel_x = 3 + }, +/obj/item/weapon/shovel{ + pixel_x = -3 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqC" = ( +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqD" = ( +/obj/machinery/suit_storage_unit/mining, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqE" = ( +/obj/structure/table, +/obj/item/device/mining_scanner, +/obj/item/device/mining_scanner, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqF" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqG" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets, +/obj/machinery/requests_console{ + department = "Mining"; + name = "Mining Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqH" = ( +/obj/machinery/mineral/input, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqI" = ( +/obj/machinery/mineral/mint, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqJ" = ( +/obj/machinery/mineral/output, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aqK" = ( +/obj/structure/closet/crate, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/extinguisher, +/obj/item/clothing/glasses/meson, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aqL" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/rglass{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/machinery/button/door{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + pixel_x = -26; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqM" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqN" = ( +/obj/structure/table/reinforced, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqO" = ( +/obj/structure/closet/crate/rcd, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"aqP" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aqQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/pen/red, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqR" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqT" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqU" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqV" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqW" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqX" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqY" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/red, +/obj/machinery/newscaster/security_unit{ + pixel_x = 30 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aqZ" = ( +/obj/structure/filingcabinet, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/quartermaster/office) +"ara" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/quartermaster/office) +"arb" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"arc" = ( +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"ard" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"are" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"arf" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/qm) +"arg" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"arh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/quartermaster/office) +"ari" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"arj" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"ark" = ( +/obj/machinery/conveyor_switch{ + id = "QMLoad" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/quartermaster/office) +"arl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/quartermaster/office) +"arm" = ( +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"arn" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"aro" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"arp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/tcommsat/server) +"arq" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The main server room. Dangerously cold to protect the sensitive machinery."; + name = "Telecommunications Server Room"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel, +/area/tcommsat/server) +"arr" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ars" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"art" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"aru" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"arv" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"arw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"arx" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ary" = ( +/obj/machinery/door/airlock/engineering{ + name = "Fore Starboard Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/auxsolarstarboard) +"arz" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/auxsolarstarboard) +"arA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"arB" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arC" = ( +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arF" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"arG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"arH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"arJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mining Maintenance"; + req_access_txt = "48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arN" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arO" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arP" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/plasteel, +/obj/machinery/requests_console{ + department = "E.V.A."; + name = "E.V.A. Requests Console"; + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"arQ" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/eva) +"arU" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"arV" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"arW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Vacant Office Maintenance"; + req_access_txt = "32" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/vacantoffice) +"arX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"arY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"arZ" = ( +/turf/open/floor/wood, +/area/security/vacantoffice) +"asa" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"asb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"asc" = ( +/obj/machinery/door/airlock/engineering{ + desc = "As the name suggests, this office space is available for any purpose, and currently has none."; + name = "Vacant Office"; + req_access_txt = "32" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/vacantoffice) +"asd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ase" = ( +/obj/structure/closet/secure_closet/security/cargo, +/obj/machinery/camera{ + c_tag = "Cargo Security Post"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/quartermaster/office) +"asf" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/quartermaster/office) +"asg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"ash" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"asi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"asj" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) +"ask" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/qm) +"asl" = ( +/obj/machinery/door/airlock/mining{ + desc = "The office of the station's chief Supply officer, the Quartermaster. Smells faintly of swag."; + name = "Quartermaster's Office"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/qm) +"asm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"asn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aso" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"asr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ass" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ast" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"asu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Bay Maintenance"; + req_access_txt = "31"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"asv" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"asw" = ( +/obj/machinery/telecomms/server/presets/service, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asx" = ( +/obj/machinery/telecomms/server/presets/supply, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asy" = ( +/obj/machinery/telecomms/server/presets/science, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asz" = ( +/obj/machinery/telecomms/server/presets/medical, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asA" = ( +/turf/open/floor/plasteel, +/area/tcommsat/server) +"asB" = ( +/obj/machinery/telecomms/server/presets/command, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asC" = ( +/obj/machinery/telecomms/server/presets/common, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asD" = ( +/obj/machinery/telecomms/server/presets/security, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asE" = ( +/obj/machinery/telecomms/server/presets/engineering, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/tcommsat/server) +"asF" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/supplied/freeform, +/obj/item/weapon/aiModule/supplied/protectStation, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asG" = ( +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Upload APC"; + pixel_y = -24 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asI" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asK" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Upload"; + dir = 1 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_y = -25 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"asL" = ( +/obj/structure/table, +/obj/item/weapon/aiModule/reset, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"asM" = ( +/turf/closed/wall, +/area/turret_protected/ai_upload_foyer) +"asN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"asO" = ( +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"asP" = ( +/turf/closed/wall, +/area/maintenance/disposal) +"asQ" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"asR" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/ore{ + pixel_y = 3 + }, +/obj/item/weapon/storage/bag/ore{ + pixel_x = -3 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/machinery/camera{ + c_tag = "Mining Equipment Room"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asS" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asT" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asU" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining Equipment Room"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asV" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"asY" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"asZ" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Mining APC"; + pixel_x = -24 + }, +/obj/structure/cable/orange{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"ata" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atb" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"ate" = ( +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + dir = 4; + name = "EVA APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/storage/eva) +"atf" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"atg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/storage/eva) +"ath" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/off, +/obj/item/device/radio/off, +/obj/item/device/assembly/prox_sensor, +/obj/item/device/assembly/prox_sensor, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/eva) +"ati" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"atj" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atk" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atl" = ( +/obj/structure/table/wood, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atm" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"atn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/chair/office/dark, +/turf/open/floor/wood, +/area/security/vacantoffice) +"ato" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"atp" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"atq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/vacantoffice) +"atr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"ats" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/quartermaster/office) +"att" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/quartermaster/office) +"atu" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/quartermaster/office) +"atv" = ( +/obj/effect/landmark/start{ + name = "Quartermaster" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/qm) +"atw" = ( +/obj/machinery/computer/cargo, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atx" = ( +/obj/machinery/photocopier, +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"aty" = ( +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/qm) +"atA" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/qm) +"atB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/office) +"atF" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"atG" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Cargo Loading Dock"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"atH" = ( +/obj/structure/closet/wardrobe/cargotech, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"atI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atK" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_y = -24; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atL" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atM" = ( +/obj/structure/table/glass, +/obj/item/device/taperecorder/empty, +/obj/item/device/tape/random, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"atN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"atO" = ( +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"atP" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/tcommsat/computer) +"atQ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/tcommsat/computer) +"atR" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The main server room. Dangerously cold to protect the sensitive machinery."; + name = "Telecommunications Server Room"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/tcommsat/computer) +"atS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/tcommsat/computer) +"atT" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/tcommsat/computer) +"atU" = ( +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"atV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/porta_turret/ai{ + dir = 1 + }, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"atW" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"atX" = ( +/obj/machinery/porta_turret/ai{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/bluegrid, +/area/turret_protected/ai_upload) +"atY" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"atZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aua" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aub" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"auc" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aud" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aue" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"auf" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aug" = ( +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"auh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "1; 12; 18; 23; 32; 48" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aui" = ( +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"auj" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/door/poddoor/shutters{ + id = "evashutter"; + name = "E.V.A. Storage Shutter" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"auk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/eva) +"aul" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_command{ + desc = "Storage area for the station's general-purpose space suits and other critical materials. Can be opened via bridge controls in an emergency."; + name = "E.V.A."; + req_access_txt = "18" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/storage/eva) +"aum" = ( +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/eva) +"aun" = ( +/obj/structure/cable/orange, +/obj/machinery/power/apc{ + name = "Tool Storage APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"auo" = ( +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aup" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"auq" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/turf/open/floor/carpet, +/area/security/vacantoffice) +"aur" = ( +/obj/machinery/light, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aus" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/white, +/obj/machinery/camera{ + c_tag = "Vacant Office"; + dir = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"aut" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auu" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auv" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/vacantoffice) +"auw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"aux" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"auy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Fore Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/fore{ + name = "Fore Hallway" + }) +"auz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/office) +"auA" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The guardpost for the Cargo Bay. High turnover rate due to allegations of corruption, bribery, and weapons trafficking."; + name = "Security Post"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/quartermaster/office) +"auB" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + name = "Quartermaster Desk"; + req_access_txt = "41" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/qm) +"auC" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/qm) +"auD" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/qm) +"auE" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"auH" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/device/multitool, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"auI" = ( +/obj/machinery/door/poddoor/shutters{ + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"auJ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "qm_warehouse"; + name = "Warehouse Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"auK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/grille, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"auL" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Telecommunications Control APC"; + pixel_x = 24 + }, +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/tcommsat/computer) +"auM" = ( +/obj/machinery/computer/message_monitor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"auN" = ( +/obj/machinery/computer/telecomms/monitor{ + network = "tcommsat" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/tcommsat/computer) +"auO" = ( +/obj/machinery/computer/telecomms/server{ + network = "tcommsat" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"auP" = ( +/obj/structure/table, +/obj/item/weapon/paper/monitorkey, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/tcommsat/computer) +"auQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auR" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/tcommsat/computer) +"auS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/tcommsat/computer) +"auT" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/ansible, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/obj/item/weapon/stock_parts/subspace/crystal, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auU" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/transmitter, +/obj/item/weapon/stock_parts/subspace/transmitter, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/item/weapon/stock_parts/subspace/amplifier, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auV" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/obj/item/weapon/stock_parts/subspace/analyzer, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/tcommsat/computer) +"auW" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"auX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"auY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"auZ" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "Byond this door lies the AI's Upload and Core areas, defended by autoturrets. Few are ever allowed inside."; + icon_state = "door_locked"; + locked = 1; + name = "AI Upload"; + req_access_txt = "16" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload) +"ava" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload) +"avb" = ( +/obj/machinery/computer/aifixer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"avc" = ( +/obj/structure/table, +/obj/item/weapon/phone, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"avd" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"ave" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avf" = ( +/obj/structure/closet/secure_closet/miner, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avg" = ( +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avh" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avi" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"avj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"avk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"avl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Mining North"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/quartermaster/miningdock) +"avm" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avn" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avo" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avp" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avq" = ( +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avs" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"avz" = ( +/turf/closed/wall, +/area/storage/primary{ + name = "Tool Storage" + }) +"avA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Tool Storage Maintenance"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"avB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Fore Hallway Aft"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"avE" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avG" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/quartermaster/office) +"avJ" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageExternal" + }, +/obj/structure/plasticflaps, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"avK" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageExternal" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/office) +"avL" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avM" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avN" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + name = "Cargo Bay Requests Console"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Cargo Port" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/office) +"avO" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"avP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"avR" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"avS" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avT" = ( +/turf/open/floor/plasteel{ + icon_state = "warndarkcorners"; + dir = 8 + }, +/area/quartermaster/office) +"avU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/quartermaster/office) +"avV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/quartermaster/office) +"avW" = ( +/obj/machinery/button/door{ + id = "qm_warehouse"; + name = "Warehouse Door Control"; + pixel_y = 24; + req_access_txt = "50" + }, +/turf/open/floor/plasteel{ + icon_state = "warndarkcorners"; + dir = 4 + }, +/area/quartermaster/office) +"avX" = ( +/obj/machinery/status_display{ + pixel_y = 32; + supply_display = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avY" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"avZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awa" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awb" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Telecommunications Maintenance"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"awc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awf" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The control facility for station telecomms, where a variety of functions can be changed."; + name = "Telecommunications Control"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awh" = ( +/obj/machinery/door/airlock/glass_engineering{ + desc = "The secured storage area for highly valuable comms equipment."; + name = "Telecommunications Storage"; + req_access_txt = "61" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"awk" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/item/weapon/stock_parts/subspace/treatment, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/tcommsat/computer) +"awl" = ( +/obj/machinery/computer/message_monitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awm" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awn" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "A small monitoring station to allow the AI to keep tabs on the crew and (usually) help."; + name = "AI Monitoring Station"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awo" = ( +/obj/machinery/turretid{ + control_area = "AI Upload Chamber"; + name = "AI Upload turret control"; + pixel_x = 8; + pixel_y = 24 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1447; + name = "Private AI Channel"; + pixel_x = -8; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awq" = ( +/obj/machinery/camera/motion{ + c_tag = "AI Upload Foyer" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awr" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "A small maintenance area to allow the AI to be repaired in case of damage, and for its borgs to recharge."; + name = "AI Maintenance Control"; + req_access_txt = "16" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"aws" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awt" = ( +/obj/machinery/camera{ + c_tag = "AI Maintenance Control"; + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"awu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/auxstarboard) +"awv" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aww" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"awx" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining Equipment Room"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"awy" = ( +/obj/machinery/mineral/equipment_vendor, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"awz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"awA" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"awB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Port Central Hallway Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"awG" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/requests_console{ + department = "Tool Storage"; + name = "Tool Storage Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awJ" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awK" = ( +/obj/structure/table, +/obj/item/weapon/wirecutters, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awL" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awM" = ( +/obj/structure/table, +/obj/item/device/assembly/igniter{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/device/assembly/igniter, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/machinery/camera{ + c_tag = "Tool Storage" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awN" = ( +/obj/structure/table, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/item/device/multitool, +/obj/item/device/multitool{ + pixel_x = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awO" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awP" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awQ" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/weapon/screwdriver{ + pixel_y = 16 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awR" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"awS" = ( +/obj/machinery/vending/tool, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"awT" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"awU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"awV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"awW" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awY" = ( +/obj/machinery/computer/cargo/request, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"awZ" = ( +/obj/machinery/conveyor_switch/oneway{ + convdir = -1; + id = "packageExternal" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"axa" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axb" = ( +/obj/machinery/hologram/holopad, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/quartermaster/office) +"axg" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"axh" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft, +/obj/machinery/camera{ + c_tag = "Cargo Starboard"; + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"axi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/quartermaster/office) +"axj" = ( +/obj/structure/closet/crate/freezer, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axl" = ( +/obj/structure/closet/crate/hydroponics, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axm" = ( +/obj/structure/closet/crate, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"axo" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axp" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axq" = ( +/obj/item/device/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Telecoms)"; + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Telecoms Admin"; + departmentType = 5; + name = "Telecoms Requests Console"; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axs" = ( +/obj/machinery/light/small, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/tcommsat/computer) +"axt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"axu" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/tcommsat/computer) +"axv" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/camera{ + c_tag = "Telecommunications"; + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/tcommsat/computer) +"axw" = ( +/obj/structure/rack, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/processor, +/obj/item/weapon/circuitboard/telecomms/receiver, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/server, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/bus, +/obj/item/weapon/circuitboard/telecomms/broadcaster, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/tcommsat/computer) +"axx" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/manipulator, +/obj/item/weapon/stock_parts/capacitor, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/item/weapon/stock_parts/micro_laser/high, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/tcommsat/computer) +"axy" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/obj/item/weapon/stock_parts/subspace/filter, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/tcommsat/computer) +"axz" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"axA" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axB" = ( +/obj/machinery/camera{ + c_tag = "AI Monitoring Station"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axC" = ( +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "AI Upload Access APC"; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axD" = ( +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axE" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/effect/landmark/start{ + name = "Cyborg" + }, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axF" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"axG" = ( +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Disposal APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"axH" = ( +/obj/machinery/conveyor_switch{ + id = "Disposal" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"axI" = ( +/obj/machinery/button/massdriver{ + id = "trash"; + pixel_x = 6; + pixel_y = 24 + }, +/obj/structure/chair/stool, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/disposal) +"axJ" = ( +/obj/structure/table, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/device/gps/mining, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axK" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axL" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axM" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axN" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/quartermaster/miningdock) +"axP" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 8; + output_dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"axQ" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"axW" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"axZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aya" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayc" = ( +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aye" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"ayf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"ayg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayj" = ( +/obj/machinery/door/window/eastright{ + name = "Cargo Front Desk"; + req_access_txt = "50" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aym" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"ayn" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/office) +"ayo" = ( +/obj/structure/closet/crate/internals, +/obj/machinery/camera{ + c_tag = "Cargo Warehouse'"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayq" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ayr" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"ays" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31; 61" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ayt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"ayu" = ( +/obj/machinery/door/airlock/engineering{ + desc = "The nerve center of all station communications. Locked except to Engineering staff."; + name = "Telecommunications"; + req_access_txt = "61" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/tcommsat/computer) +"ayv" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/r_wall, +/area/tcommsat/computer) +"ayw" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "12; 31; 61" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plating, +/area/maintenance/apmaint) +"ayx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/apmaint) +"ayy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayz" = ( +/obj/machinery/ai_status_display, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayA" = ( +/obj/machinery/door/airlock/highsecurity{ + desc = "The main area for the facility's hyper-advanced AI. A highly restricted area."; + name = "AI Upload Foyer"; + req_access_txt = "19" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/turret_protected/ai_upload_foyer) +"ayB" = ( +/obj/machinery/ai_status_display, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/closed/wall/r_wall, +/area/turret_protected/ai_upload_foyer) +"ayC" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"ayD" = ( +/obj/machinery/door/airlock/maintenance{ + desc = "All disposals systems lead here. Take heed, the crusher does not discriminate junk from bodies."; + name = "Disposal Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"ayE" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/disposal) +"ayF" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/disposal) +"ayG" = ( +/obj/structure/window/reinforced, +/obj/machinery/door/window/northright{ + dir = 4; + name = "Disposal Exit"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/maintenance/disposal) +"ayH" = ( +/obj/machinery/mass_driver{ + dir = 4; + id = "trash" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/disposal) +"ayI" = ( +/obj/machinery/door/poddoor{ + id = "trash"; + name = "Disposal External Door" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"ayJ" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"ayK" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayL" = ( +/obj/machinery/door/airlock/external{ + name = "Mining External Airlock"; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_mining{ + desc = "Storage of the Company's specialized mining gear."; + name = "Mining E.V.A."; + req_access_txt = "54" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"ayO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"ayQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"ayT" = ( +/obj/machinery/door/airlock/glass{ + desc = "The primary storage area for tools aboard the station. Any spaceman knows this place by heart."; + name = "Tool Storage" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayV" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayW" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"ayZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aza" = ( +/obj/machinery/door/airlock/glass{ + desc = "The primary storage area for tools aboard the station. Any spaceman knows this place by heart."; + name = "Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"azb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"azc" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/quartermaster/office) +"azd" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aze" = ( +/obj/machinery/computer/cargo, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/office) +"azf" = ( +/obj/item/weapon/stamp, +/obj/item/weapon/stamp/denied{ + force = 15; + pixel_x = 3; + pixel_y = 2 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azg" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azi" = ( +/obj/effect/landmark/start{ + name = "Cargo Technician" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"azk" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/office) +"azl" = ( +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"azm" = ( +/obj/machinery/autolathe, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/office) +"azn" = ( +/obj/structure/closet/crate, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"azo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azp" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azt" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azv" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azC" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "caution" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azG" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"azH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"azL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/disposal) +"azM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/disposal) +"azN" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 9 + }, +/area/maintenance/disposal) +"azO" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Disposal" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/disposal) +"azP" = ( +/obj/machinery/conveyor{ + dir = 10; + id = "Disposal" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/disposal) +"azQ" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azR" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azS" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azT" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azU" = ( +/obj/machinery/camera{ + c_tag = "Mining E.V.A."; + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/mech_bay_recharge_floor, +/area/quartermaster/miningdock) +"azV" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azW" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"azX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"azY" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"azZ" = ( +/obj/machinery/camera{ + c_tag = "Port Central Hallway Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAa" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAb" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAc" = ( +/obj/structure/table, +/obj/item/weapon/weldingtool, +/obj/item/weapon/crowbar, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aAe" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aAf" = ( +/obj/machinery/door/airlock/glass_mining{ + desc = "The station's cargo bay, where supplies can be ordered and certain items sold for a profit back to CentCom."; + name = "Cargo Bay"; + req_access_txt = "31" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/quartermaster/office) +"aAg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/conveyor_switch/oneway{ + id = "packageSort2" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAj" = ( +/obj/structure/table/glass, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/device/destTagger{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAk" = ( +/obj/structure/table/glass, +/obj/item/stack/wrapping_paper, +/obj/item/stack/wrapping_paper, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAl" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/obj/item/weapon/storage/box, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/quartermaster/office) +"aAm" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAp" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aAr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAs" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAy" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StHF2"; + location = "AI" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aAI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAJ" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAK" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aAL" = ( +/turf/closed/wall, +/area/construction/Storage{ + name = "Construction Site" + }) +"aAM" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aAN" = ( +/obj/machinery/camera{ + c_tag = "Mining External"; + dir = 8 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aAO" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/quartermaster/miningdock) +"aAP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aAS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_mining{ + desc = "The base for the station's critical mining efforts."; + name = "Mining"; + req_access_txt = "48" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aAT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aAY" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aAZ" = ( +/obj/structure/table, +/obj/item/weapon/wrench, +/obj/item/device/analyzer, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBa" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBb" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBc" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBd" = ( +/obj/structure/table, +/obj/item/weapon/crowbar, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/clothing/gloves/color/fyellow, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBe" = ( +/obj/structure/table, +/obj/item/weapon/storage/belt/utility, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBf" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBg" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBh" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aBi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aBj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aBk" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/camera{ + c_tag = "Cargo Lobby"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBl" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBm" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"aBo" = ( +/obj/structure/disposaloutlet{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBp" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBq" = ( +/obj/machinery/light, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBr" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBs" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/door/window/northright{ + layer = 2.8; + name = "Disposals Conveyor"; + req_access_txt = "31" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBt" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/door/window/northleft{ + layer = 2.8; + name = "Disposals Conveyor"; + req_access_txt = "31" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBu" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/quartermaster/office) +"aBv" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/quartermaster/office) +"aBw" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2"; + layer = 2.7 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/quartermaster/office) +"aBx" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plating, +/area/quartermaster/office) +"aBy" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBz" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBA" = ( +/obj/structure/closet/crate/medical, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/quartermaster/office) +"aBC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Starboard Hallway APC"; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBM" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBS" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aBT" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aBU" = ( +/turf/closed/wall, +/area/maintenance/maintcentral) +"aBV" = ( +/obj/item/weapon/pickaxe{ + pixel_x = 5 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBW" = ( +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBX" = ( +/obj/machinery/constructable_frame/machine_frame, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBY" = ( +/obj/structure/computerframe, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aBZ" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCa" = ( +/obj/item/weapon/screwdriver, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCb" = ( +/obj/item/weapon/rack_parts, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCc" = ( +/obj/structure/closet, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCd" = ( +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aCe" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/quartermaster/miningdock) +"aCf" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/obj/item/weapon/paper{ + info = "A hastily written note has been scribbled here...

Please use the ore redemption machine in the mining bay wing for smelting. PLEASE!

--The Research Staff"; + name = "URGENT!" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/quartermaster/miningdock) +"aCg" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/obj/structure/plasticflaps/mining, +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCh" = ( +/obj/machinery/mineral/unloading_machine, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCi" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCj" = ( +/obj/machinery/conveyor{ + dir = 9; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCk" = ( +/obj/machinery/mineral/stacking_unit_console{ + machinedir = 10 + }, +/turf/closed/wall, +/area/quartermaster/miningdock) +"aCl" = ( +/obj/machinery/camera{ + c_tag = "Mining South" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCn" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/quartermaster/miningdock) +"aCo" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCr" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aCs" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/storage/primary{ + name = "Tool Storage" + }) +"aCt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aCu" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/quartermaster/office) +"aCv" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"aCw" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/quartermaster/office) +"aCx" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/office) +"aCy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCA" = ( +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aCB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aCC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCE" = ( +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aCF" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCG" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCH" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCI" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Bridge Power Control" + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aCJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCK" = ( +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCL" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aCM" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Mininginput" + }, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aCN" = ( +/obj/machinery/mineral/processing_unit, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCO" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aCP" = ( +/obj/machinery/conveyor_switch/oneway{ + id = "Mininginput" + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aCR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aCS" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aCT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 9 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aCZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aDa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aDb" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Port" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 40 + }, +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDj" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = 32 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = 40 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + icon_state = "pipe-j2s"; + sortType = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "brown" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Starboard" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = 24 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = 32 + }, +/obj/structure/sign/directions/medical{ + pixel_y = 40 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aDy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDB" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDC" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDD" = ( +/obj/structure/closet/secure_closet/personal, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDE" = ( +/obj/machinery/washing_machine, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDF" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDG" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDH" = ( +/obj/structure/table, +/obj/item/clothing/under/suit_jacket/really_black{ + pixel_x = -2 + }, +/obj/item/clothing/under/suit_jacket/female, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aDI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aDK" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDL" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDM" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aDN" = ( +/turf/closed/wall/r_wall, +/area/maintenance/maintcentral) +"aDO" = ( +/obj/item/weapon/shovel{ + pixel_x = -5 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDP" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDQ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDR" = ( +/obj/structure/door_assembly/door_assembly_ext{ + anchored = 0; + name = "Broken External Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDS" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDT" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aDU" = ( +/obj/structure/ore_box, +/turf/open/floor/plating/asteroid/airless, +/area/quartermaster/miningdock) +"aDV" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "Mininginput" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aDW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aDX" = ( +/obj/effect/landmark/start{ + name = "Shaft Miner" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aDY" = ( +/obj/structure/table, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aDZ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEa" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=FrCH1"; + location = "PtCH" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEe" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEf" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEg" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Arrival"; + location = "FrCH1" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEl" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StHF1"; + location = "FrCH2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEn" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AI"; + location = "StHF1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEs" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/red, +/obj/machinery/button/door{ + id = "Dorm1"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEu" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/blue, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEv" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/yellow, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEw" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/purple, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEy" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aEz" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StAF2"; + location = "StHF2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aEC" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aED" = ( +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEE" = ( +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/airlock/engineering{ + name = "Bridge Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEG" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable/blue, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aEH" = ( +/turf/open/floor/plating/asteroid/airless, +/area/space) +"aEI" = ( +/obj/item/wallframe/apc, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEJ" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEK" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/construction/Storage{ + name = "Construction Site" + }) +"aEL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'AREA UNDER CONSTRUCTION"; + name = "AREA UNDER CONSTRUCTION"; + pixel_x = -32 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aEM" = ( +/obj/machinery/conveyor{ + dir = 6; + id = "Mininginput"; + verted = -1 + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aEN" = ( +/obj/machinery/mineral/stacking_machine, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aEO" = ( +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/quartermaster/miningdock) +"aEP" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/quartermaster/miningdock) +"aEQ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aER" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Port Central Hallway Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aET" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aEX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Central Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aEZ" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Central Hallway Central"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFr" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Port"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFw" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFy" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFz" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFA" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm4"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFB" = ( +/obj/structure/table, +/obj/item/clothing/under/blackskirt, +/obj/item/clothing/under/space, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aFC" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aFF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFG" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/maintcentral) +"aFJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFK" = ( +/obj/structure/cable/blue, +/obj/machinery/power/apc{ + dir = 4; + name = "Bridge Maintenance APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aFL" = ( +/obj/structure/table, +/obj/item/device/paicard, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFM" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFN" = ( +/obj/item/wallframe/airalarm, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aFO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aFP" = ( +/obj/structure/table, +/obj/item/device/flashlight/lantern{ + pixel_y = 5 + }, +/obj/item/device/flashlight/lantern{ + pixel_x = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"aFQ" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "browncorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFT" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Port Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aFV" = ( +/turf/closed/wall, +/area/maintenance/aft) +"aFW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aFX" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFY" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aFZ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGa" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGb" = ( +/obj/machinery/door/airlock/glass{ + name = "Fore Starboard Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGc" = ( +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + desc = "Supplies available to the public to help with cultivating the open hydro trays in the hallways."; + name = "Public Garden Storage" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGg" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGi" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGl" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/camera/xray{ + c_tag = "Fore Dormitory Cabins" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGn" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGo" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGs" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGt" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aGu" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGw" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aGx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aGy" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/turf/open/floor/plating, +/area/construction/Storage{ + name = "Construction Site" + }) +"aGz" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel, +/area/construction/Storage{ + name = "Construction Site" + }) +"aGA" = ( +/turf/closed/wall/r_wall, +/area/security/detectives_office) +"aGB" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGC" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGD" = ( +/obj/structure/grille, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "detffice"; + name = "detective's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/detectives_office) +"aGE" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGF" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGG" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/quartermaster/miningdock) +"aGI" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGM" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/device/gps, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGP" = ( +/obj/structure/chair, +/obj/machinery/camera{ + c_tag = "Fore Port Transit" + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGQ" = ( +/obj/structure/chair, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aGR" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGS" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGT" = ( +/turf/open/floor/plating, +/area/maintenance/aft) +"aGU" = ( +/obj/item/clothing/under/rank/mailman, +/obj/item/clothing/head/mailman, +/obj/structure/closet, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGV" = ( +/obj/structure/rack, +/obj/item/weapon/storage/fancy/cigarettes, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGW" = ( +/obj/structure/rack, +/obj/item/weapon/crowbar, +/obj/item/weapon/wrench, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aGY" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Fore Central Hallway APC"; + pixel_y = 24 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aGZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHa" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHb" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHd" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHe" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/bag/plants/portaseeder, +/obj/item/device/analyzer/plant_analyzer, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHf" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHg" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aHi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHl" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Fore Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aHr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aHt" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aHu" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aHv" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHw" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHx" = ( +/obj/structure/rack, +/obj/item/weapon/storage/briefcase, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHy" = ( +/obj/machinery/photocopier, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHz" = ( +/obj/structure/closet/secure_closet/detective, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHA" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Detective's Office" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aHB" = ( +/turf/closed/wall, +/area/security/detectives_office) +"aHC" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/security/main) +"aHD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/security/main) +"aHE" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Security Office APC"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/security/main) +"aHF" = ( +/turf/open/floor/plating, +/area/security/main) +"aHG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Brig Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 63" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aHH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHM" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHN" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHO" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHP" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aHR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHS" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/aft) +"aHT" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"aHU" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHV" = ( +/obj/item/weapon/rack_parts, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHW" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHX" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aHY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/aft) +"aHZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aIa" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Fore Starboard Transit Maintenance"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aIb" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aId" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIe" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIf" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Fore Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIs" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIt" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/maintcentral) +"aIw" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Bridge Atmospheric Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aIy" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aIz" = ( +/turf/open/floor/carpet, +/area/security/detectives_office) +"aIA" = ( +/turf/open/floor/wood, +/area/security/detectives_office) +"aIB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aIC" = ( +/obj/item/device/taperecorder, +/obj/structure/table/wood, +/obj/machinery/requests_console{ + department = "Detective's Office"; + name = "Detective's Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aID" = ( +/turf/closed/wall, +/area/security/main) +"aIE" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Brig Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fpmaint) +"aIF" = ( +/turf/closed/wall/r_wall, +/area/security/main) +"aIG" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Port Central Hallway APC"; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aII" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIJ" = ( +/obj/structure/transit_tube{ + icon_state = "Block" + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIK" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIL" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aIM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"aIN" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIP" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Fore Starboard Transit"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIR" = ( +/obj/machinery/seed_extractor, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIU" = ( +/obj/machinery/door/airlock/glass{ + desc = "Supplies available to the public to help with cultivating the open hydro trays in the hallways."; + name = "Public Garden Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aIV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aIX" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIY" = ( +/obj/structure/closet/wardrobe/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aIZ" = ( +/obj/machinery/light, +/obj/structure/closet/wardrobe/grey, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJa" = ( +/obj/structure/closet/wardrobe/green, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJd" = ( +/obj/structure/table/wood, +/obj/item/device/paicard, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJe" = ( +/obj/structure/table/wood, +/obj/item/device/camera, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJf" = ( +/obj/machinery/light, +/obj/structure/table/wood, +/obj/item/weapon/coin/silver, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/slot_machine, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Fore Dormitory"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJl" = ( +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aJo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJp" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Fore Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aJr" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJs" = ( +/obj/machinery/power/apc{ + dir = 6; + name = "Captain's Quarters APC"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/cable/blue{ + icon_state = "0-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aJt" = ( +/obj/machinery/door/airlock/atmos{ + name = "Bridge Atmospheric Control"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJu" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJv" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aJw" = ( +/obj/machinery/computer/secure_data, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJx" = ( +/obj/effect/landmark/start{ + name = "Detective" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJy" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aJz" = ( +/obj/structure/table/wood, +/obj/item/device/camera/detective, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aJA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/main) +"aJB" = ( +/turf/open/floor/plasteel, +/area/security/main) +"aJC" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aJD" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel, +/area/security/main) +"aJE" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel, +/area/security/main) +"aJF" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aJG" = ( +/obj/machinery/door/window/northright{ + dir = 8; + name = "Brig Deliveries"; + req_access_txt = "1" + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/security/main) +"aJH" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Security" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/security/main) +"aJI" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJJ" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJK" = ( +/obj/machinery/camera{ + c_tag = "Port Central Hallway Aft"; + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJL" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJM" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJO" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 4 + }, +/obj/structure/transit_tube_pod, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aJQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "External Airlock Access"; + req_access_txt = "13" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aJR" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/aft) +"aJS" = ( +/obj/machinery/door/airlock/external{ + name = "External Access"; + req_access = null; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/aft) +"aJT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/aft) +"aJU" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/space/nearstation) +"aJV" = ( +/turf/open/floor/plating/asteroid/airless, +/area/space/nearstation) +"aJW" = ( +/turf/closed/mineral/random/low_chance, +/area/space/nearstation) +"aJX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aJY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aJZ" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKa" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKb" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez, +/obj/item/weapon/reagent_containers/spray/pestspray, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKe" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Cabin 5" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKf" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + id_tag = "shutbath"; + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aKh" = ( +/turf/closed/wall, +/area/crew_quarters/captain) +"aKi" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aKj" = ( +/turf/closed/wall/r_wall, +/area/mine/explored) +"aKk" = ( +/obj/machinery/computer/security/wooden_tv, +/obj/machinery/button/door{ + id = "detffice"; + name = "Detective's Shutters Control"; + pixel_x = -26; + req_access_txt = "0" + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aKl" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aKm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aKn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/main) +"aKo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aKp" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = 30 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aKq" = ( +/turf/closed/wall/r_wall, +/area/lawoffice) +"aKr" = ( +/turf/closed/wall, +/area/lawoffice) +"aKs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aKv" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aKw" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"aKx" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aKy" = ( +/obj/structure/transit_tube{ + icon_state = "D-SE" + }, +/turf/open/space, +/area/space/nearstation) +"aKz" = ( +/obj/structure/transit_tube{ + icon_state = "E-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aKA" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKB" = ( +/obj/structure/transit_tube, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKC" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKD" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKE" = ( +/obj/structure/table/glass, +/obj/item/weapon/hatchet, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKF" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKG" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/seeds/carrot, +/obj/item/seeds/corn, +/obj/item/seeds/berry, +/obj/item/seeds/watermelon, +/obj/item/seeds/ambrosia, +/obj/item/seeds/wheat, +/obj/item/seeds/grape, +/obj/item/seeds/grass, +/obj/item/seeds/sunflower/moonflower, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/construction{ + name = "Fore Central Hallway" + }) +"aKI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKK" = ( +/obj/structure/closet, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKL" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKM" = ( +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aKN" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKO" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKQ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aKR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKS" = ( +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKT" = ( +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKU" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/weapon/soap, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/button/door{ + id = "shutbath"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKV" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKW" = ( +/obj/structure/toilet, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aKX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKY" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aKZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aLa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aLb" = ( +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aLc" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/machinery/door/window/westright{ + dir = 4 + }, +/obj/item/weapon/soap/deluxe, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/captain) +"aLd" = ( +/obj/structure/toilet{ + pixel_y = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aLe" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aLf" = ( +/obj/structure/grille, +/obj/structure/cable/blue{ + icon_state = "0-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "capffice"; + name = "captain's shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/captain) +"aLg" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLh" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/restraints/handcuffs, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLi" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/security/detectives_office) +"aLj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Detective's Office APC"; + pixel_y = -24 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/security/detectives_office) +"aLm" = ( +/obj/machinery/door/airlock/security{ + desc = "The occupant of this office will know that you're trouble as soon as you walk in the door."; + name = "Detective's Office"; + req_access = null; + req_access_txt = "4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/security/main) +"aLn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aLo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/chair, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aLr" = ( +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/security/main) +"aLs" = ( +/obj/structure/closet/lawcloset, +/turf/open/floor/wood, +/area/lawoffice) +"aLt" = ( +/obj/structure/table/wood, +/obj/item/device/taperecorder, +/obj/item/device/taperecorder, +/obj/item/weapon/cartridge/lawyer, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLu" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/law, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLv" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "law"; + pixel_y = 25 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aLx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + name = "Prison Monitor"; + network = list("Prison"); + pixel_y = 30 + }, +/obj/structure/rack, +/obj/item/weapon/storage/briefcase, +/turf/open/floor/wood, +/area/lawoffice) +"aLy" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/lawoffice) +"aLz" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "law"; + layer = 2.9 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/lawoffice) +"aLA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aLD" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aLE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/construction/hallway{ + name = "Port Central Hallway" + }) +"aLF" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aLG" = ( +/obj/structure/transit_tube{ + icon_state = "NE-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aLH" = ( +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aLI" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLK" = ( +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aLL" = ( +/turf/closed/wall, +/area/engine/gravity_generator) +"aLM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/engine/gravity_generator) +"aLN" = ( +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Bar Maintenance APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLO" = ( +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLP" = ( +/obj/structure/chair/stool, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Fore Dormitory APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLQ" = ( +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLR" = ( +/obj/machinery/camera{ + c_tag = "Crew Area Atmospheric Control"; + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLS" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLT" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aLU" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLV" = ( +/obj/machinery/light/small, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLW" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/green, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLX" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aLZ" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + name = "Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aMa" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_female{ + name = "Fore Dormitory" + }) +"aMb" = ( +/obj/machinery/door/airlock/silver{ + desc = "Because the boss knows that what the boss says goes and if the boss's suffered losses then that's what the boss chose!"; + name = "Bathroom" + }, +/turf/open/floor/plasteel{ + icon_state = "white"; + temperature = 273.15 + }, +/area/crew_quarters/captain) +"aMc" = ( +/obj/structure/displaycase/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMd" = ( +/obj/structure/table/wood, +/obj/item/weapon/pinpointer, +/obj/item/weapon/disk/nuclear, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMe" = ( +/obj/structure/table/wood, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMf" = ( +/obj/structure/table/wood, +/obj/item/weapon/melee/chainofcommand, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/cell_charger, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMg" = ( +/obj/structure/table/wood, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/item/device/paicard, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMh" = ( +/obj/structure/table/wood, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMi" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/lockbox/medal, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/camera{ + c_tag = "Captain's Office" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMj" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aMk" = ( +/turf/closed/wall/r_wall, +/area/security/prison) +"aMl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aMm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMn" = ( +/obj/structure/table/wood, +/obj/item/weapon/restraints/handcuffs, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/security/main) +"aMo" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/donut_box, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMp" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel, +/area/security/main) +"aMq" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aMr" = ( +/obj/machinery/requests_console{ + department = "Law office"; + name = "Lawyer's Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMs" = ( +/obj/effect/landmark/start{ + name = "Lawyer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMt" = ( +/turf/open/floor/wood, +/area/lawoffice) +"aMu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMw" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMx" = ( +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aMy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aMB" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/maintenance/aft) +"aMC" = ( +/obj/structure/transit_tube{ + icon_state = "N-SE" + }, +/turf/open/space, +/area/space/nearstation) +"aMD" = ( +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"aME" = ( +/obj/structure/transit_tube{ + icon_state = "D-SE" + }, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aMF" = ( +/obj/structure/transit_tube{ + icon_state = "E-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMG" = ( +/obj/structure/transit_tube, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMH" = ( +/obj/structure/transit_tube{ + icon_state = "E-W-Pass" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aMI" = ( +/obj/structure/transit_tube, +/turf/open/space, +/area/space/nearstation) +"aMJ" = ( +/obj/structure/transit_tube{ + icon_state = "E-W-Pass" + }, +/turf/open/space, +/area/space/nearstation) +"aMK" = ( +/obj/structure/transit_tube{ + icon_state = "W-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aML" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aMM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/weapon/paper/gravity_gen, +/obj/item/weapon/pen/blue, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/gravity_generator) +"aMS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/closet/radiation, +/obj/machinery/camera{ + c_tag = "Gravity Generator Entrance"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/closet/radiation, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aMU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/gravity_generator) +"aMV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aMW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aMX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aMY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/atmos{ + name = "Crew Area Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aMZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aNa" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aNb" = ( +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNc" = ( +/obj/machinery/camera{ + c_tag = "Captain's Quarters" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNd" = ( +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNe" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters"; + req_access = null; + req_access_txt = "20" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNf" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNh" = ( +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNi" = ( +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aNj" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 35; + pixel_y = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aNk" = ( +/turf/closed/mineral/random/labormineral, +/area/mine/explored) +"aNl" = ( +/obj/structure/toilet{ + cistern = 1; + desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one has a heart drawn on the cistern."; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNm" = ( +/obj/structure/sink{ + pixel_y = 28 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNn" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aNo" = ( +/turf/closed/wall, +/area/security/prison) +"aNp" = ( +/obj/structure/table/glass, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/clothing/mask/muzzle, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/security/prison) +"aNq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/security/prison) +"aNr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/security/prison) +"aNs" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/security/prison) +"aNt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/prison) +"aNu" = ( +/obj/structure/table/glass, +/obj/item/stack/medical/ointment{ + pixel_y = 4 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = 10; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNv" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/device/electropack, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNw" = ( +/obj/structure/table/glass, +/obj/item/weapon/razor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aNx" = ( +/obj/structure/table, +/obj/item/weapon/folder/red, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "interrogation"; + name = "Interrogation Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNC" = ( +/obj/machinery/door/airlock/security{ + desc = "Keep this place dark to allow covert surveilance of interrogations."; + name = "Interrogation Observation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/security/main) +"aND" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aNE" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNF" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNG" = ( +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aNI" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/security/sec, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/security/main) +"aNJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNL" = ( +/obj/effect/landmark/start{ + name = "Lawyer" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNM" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/lawoffice) +"aNN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aNO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aNR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Port Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aNS" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"aNT" = ( +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aNU" = ( +/obj/structure/transit_tube{ + icon_state = "S-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aNV" = ( +/obj/structure/transit_tube{ + icon_state = "NE-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aNW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/power/apc{ + dir = 8; + name = "Gravity Generator APC"; + pixel_x = -25; + pixel_y = 1 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNY" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aNZ" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aOa" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/engine/gravity_generator) +"aOb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aOc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aOd" = ( +/obj/machinery/door/airlock/engineering{ + name = "Gravity Generator"; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/engine/gravity_generator) +"aOe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOg" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "12; 25; 28; 30" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aOo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/hydroponics) +"aOp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + freq = 1400; + location = "Hydroponics" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/hydroponics) +"aOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/door/window/eastleft{ + dir = 2; + name = "Hydroponics Deliveries"; + req_access_txt = "35" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hydroponics) +"aOr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/closet/secure_closet/hydroponics, +/obj/machinery/camera{ + c_tag = "Hydroponics" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOt" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOu" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/sink{ + pixel_y = 28 + }, +/obj/structure/closet/crate/hydroponics, +/obj/item/weapon/shovel/spade, +/obj/item/weapon/wrench, +/obj/item/weapon/screwdriver, +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOv" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/weapon/paper/hydroponics, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hydroponics) +"aOw" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/table, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/grenade/chem_grenade/antiweed, +/obj/item/weapon/grenade/chem_grenade/antiweed, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 5 + }, +/area/hydroponics) +"aOx" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/hydroponics) +"aOy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOz" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aOB" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/photo_album, +/obj/item/device/camera, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOC" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/hand_tele, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain's Requests Console"; + pixel_x = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOD" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOE" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOF" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aOG" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/mob/living/simple_animal/pet/fox/Renault, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aOH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aOI" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aOJ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/syringe/lethal/choral, +/obj/item/weapon/reagent_containers/syringe/lethal/choral{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/syringe/lethal/choral{ + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/security/prison) +"aOK" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOL" = ( +/obj/structure/bed, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOM" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/security/prison) +"aON" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Prisoner Treatment Center"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/security/prison) +"aOO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aOQ" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/machinery/camera{ + c_tag = "Interrogation Observation"; + dir = 4 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOR" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/security/main) +"aOS" = ( +/obj/structure/chair, +/obj/item/device/radio/intercom{ + broadcasting = 1; + freerange = 1; + frequency = 1424; + layer = 3.3; + listening = 0; + name = "Interrogation Intercom"; + pixel_y = -31 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/table, +/obj/item/weapon/phone{ + desc = "Supposedly a direct line to NanoTrasen Central Command. It's not even plugged in."; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aOU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aOV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aOW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aOX" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/lawoffice) +"aOY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/lawoffice) +"aOZ" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Law Office APC"; + pixel_y = -24 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPa" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/machinery/camera{ + c_tag = "Law Office"; + dir = 1 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPb" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/red, +/obj/machinery/light, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/wood, +/area/lawoffice) +"aPc" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/lawoffice) +"aPd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aPe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aPf" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/space, +/area/space/nearstation) +"aPg" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/space, +/area/space/nearstation) +"aPh" = ( +/turf/closed/wall/r_wall, +/area/engine/engineering) +"aPi" = ( +/turf/closed/wall/r_wall, +/area/engine/chiefs_office) +"aPj" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aPk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPl" = ( +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Gravity Generator"; + req_access_txt = "11"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPo" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/gravity_generator) +"aPp" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aPq" = ( +/turf/open/floor/plasteel, +/area/engine/gravity_generator) +"aPr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aPs" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Crew Area Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPt" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aPu" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPv" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPw" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aPx" = ( +/turf/closed/wall, +/area/hydroponics) +"aPy" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aPz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hydroponics) +"aPA" = ( +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aPB" = ( +/turf/open/floor/plasteel, +/area/hydroponics) +"aPC" = ( +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aPD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aPE" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/clothing/mask/cigarette/cigar, +/obj/item/weapon/storage/box/matches, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPF" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPG" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPH" = ( +/obj/machinery/computer/card, +/obj/item/weapon/card/id/captains_spare, +/obj/machinery/button/door{ + id = "capffice"; + name = "Captain's Shutters Control"; + pixel_x = -24; + req_access_txt = "22" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPI" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPJ" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPK" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPM" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aPO" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aPP" = ( +/turf/closed/mineral, +/area/mine/explored) +"aPQ" = ( +/obj/machinery/shower{ + pixel_y = 20 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aPR" = ( +/obj/item/weapon/soap/nanotrasen, +/obj/machinery/shower{ + pixel_y = 20 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aPS" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/security/prison) +"aPT" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/security/prison) +"aPU" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/security/prison) +"aPV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warnwhite" + }, +/area/security/prison) +"aPW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/prison) +"aPX" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aPY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aPZ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aQa" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters{ + id = "interrogation"; + name = "interrogation shutters" + }, +/turf/open/floor/plating, +/area/security/main) +"aQb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aQc" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aQd" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel, +/area/security/main) +"aQe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/main) +"aQf" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aQg" = ( +/obj/machinery/computer/secure_data, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/main) +"aQh" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/main) +"aQi" = ( +/turf/closed/wall/r_wall, +/area/security/brig) +"aQj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock{ + name = "Law Office"; + req_access_txt = "38" + }, +/turf/open/floor/wood, +/area/security/brig) +"aQk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/security/brig) +"aQl" = ( +/turf/closed/wall, +/area/security/brig) +"aQm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aQn" = ( +/obj/structure/transit_tube{ + icon_state = "S-NE" + }, +/turf/open/space, +/area/space/nearstation) +"aQo" = ( +/obj/machinery/field/generator, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/engine/engineering) +"aQp" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating, +/area/engine/engineering) +"aQq" = ( +/obj/machinery/power/port_gen/pacman, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQr" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/camera{ + c_tag = "Engineering Secure Storage" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQs" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aQt" = ( +/obj/structure/closet/secure_closet/engineering_chief, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 3; + name = "Chief Engineer's Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQu" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQv" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/computer/card/minor/ce, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQw" = ( +/obj/structure/table, +/obj/item/device/flashlight/lamp, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQx" = ( +/obj/machinery/disposal/bin, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQy" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aQz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aQA" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aQB" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/gravity_generator) +"aQC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQE" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/device/multitool, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQF" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/fsmaint2) +"aQG" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQH" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQI" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQJ" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQK" = ( +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aQM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQN" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aQO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/botany{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aQQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/flask{ + pixel_x = 8 + }, +/obj/item/weapon/razor{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aQU" = ( +/obj/machinery/computer/communications, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQV" = ( +/obj/structure/table/wood, +/obj/item/device/laser_pointer/green, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aQX" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aQY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aQZ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/crew_quarters/captain) +"aRa" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aRb" = ( +/turf/closed/wall/r_wall, +/area/bridge) +"aRc" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRd" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 2; + icon_state = "right"; + name = "Unisex Showers"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRe" = ( +/obj/structure/window/reinforced, +/obj/item/weapon/bikehorn/rubberducky, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/prison) +"aRf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/security/prison) +"aRg" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Prison Medbay"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aRh" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Prison Medbay"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/security/prison) +"aRi" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRj" = ( +/obj/structure/chair, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRl" = ( +/obj/machinery/door/airlock/security{ + desc = "The room set aside for the interrogation of prisoners, suspects, and witnesses."; + name = "Interrogation Room"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aRm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aRn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aRo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aRq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRr" = ( +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aRs" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aRt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRv" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 1"; + name = "Cell One"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRw" = ( +/turf/open/floor/plasteel, +/area/security/brig) +"aRx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell One"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aRy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aRz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aRA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Port Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aRE" = ( +/obj/structure/transit_tube{ + icon_state = "N-S-Pass" + }, +/turf/open/space, +/area/space/nearstation) +"aRF" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"aRG" = ( +/obj/item/weapon/reagent_containers/dropper, +/turf/open/space, +/area/space/nearstation) +"aRH" = ( +/obj/machinery/shieldgen, +/turf/open/floor/plating, +/area/engine/engineering) +"aRI" = ( +/turf/open/floor/plating, +/area/engine/engineering) +"aRJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/camera{ + c_tag = "Chief Engineer's Office"; + dir = 4 + }, +/obj/machinery/suit_storage_unit/ce, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aRK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRL" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Chief Engineer" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRM" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/stamp/ce, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRN" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aRO" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aRP" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aRQ" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 1 + }, +/area/engine/gravity_generator) +"aRR" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aRS" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 4 + }, +/area/engine/gravity_generator) +"aRT" = ( +/obj/machinery/camera{ + c_tag = "Gravity Generator Room"; + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aRU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aRV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aRW" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Crew Area Power Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aRX" = ( +/obj/structure/cable/green, +/obj/machinery/computer/monitor, +/obj/structure/cable/green{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aRY" = ( +/obj/machinery/power/apc{ + dir = 2; + name = "Kitchen APC"; + pixel_x = 0; + pixel_y = -25 + }, +/obj/structure/cable/green, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"aRZ" = ( +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aSa" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Hydroponics APC"; + pixel_x = 25 + }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/hydroponics) +"aSb" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aSd" = ( +/obj/machinery/door/airlock/glass{ + desc = "A place to grow plants, a vital part of a space station's long-term sustainability."; + name = "Hydroponics"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hydroponics) +"aSe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aSf" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSg" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/captain, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/landmark/start{ + name = "Captain" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/closet/secure_closet/captains, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aSj" = ( +/obj/item/device/radio/intercom{ + dir = 8; + freerange = 1; + name = "Station Intercom (Captain)"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/captain, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSk" = ( +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSl" = ( +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 + }, +/obj/machinery/door/window/eastleft{ + req_access_txt = "20" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSm" = ( +/obj/machinery/light, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSn" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSp" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSq" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aSr" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/bridge) +"aSs" = ( +/turf/open/floor/plating, +/area/bridge) +"aSt" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_3) +"aSu" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/pod_3) +"aSv" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_3) +"aSw" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space) +"aSx" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/machinery/camera{ + c_tag = "Prison Fore"; + dir = 4; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSy" = ( +/turf/open/floor/plasteel, +/area/security/prison) +"aSz" = ( +/obj/machinery/washing_machine, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/security/prison) +"aSA" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/security/prison) +"aSB" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSC" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 1"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 1"; + network = list("SS13","Prison") + }, +/obj/item/weapon/razor, +/turf/open/floor/plasteel, +/area/security/prison) +"aSD" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/button/flasher{ + id = "PCell 1"; + pixel_x = -25 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aSF" = ( +/turf/open/floor/plasteel{ + icon_state = "whitehall"; + dir = 1 + }, +/area/security/prison) +"aSG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall"; + dir = 1 + }, +/area/security/prison) +"aSH" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSI" = ( +/obj/structure/table, +/obj/item/device/taperecorder, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSJ" = ( +/obj/structure/table, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSK" = ( +/obj/structure/table, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aSM" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/security/main) +"aSN" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/main) +"aSO" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin{ + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel, +/area/security/main) +"aSP" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/security/main) +"aSQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aSR" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aSS" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aST" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_security{ + name = "Security Office"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/main) +"aSU" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aSV" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aSY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 1" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aSZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aTa" = ( +/obj/structure/bed, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/bedsheet/brown, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aTb" = ( +/obj/structure/grille, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aTc" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTf" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aTg" = ( +/obj/machinery/power/emitter, +/turf/open/floor/plating, +/area/engine/engineering) +"aTh" = ( +/obj/machinery/the_singularitygen, +/turf/open/floor/plating, +/area/engine/engineering) +"aTi" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Secure Storage"; + name = "Engineering Secure Storage"; + pixel_x = -24; + pixel_y = 4; + req_access_txt = "11" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22; + pixel_y = -6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aTj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTk" = ( +/obj/structure/table, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/storage/box/permits{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/medical/bruise_pack{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTl" = ( +/obj/structure/table, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/parrot/Poly, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/chiefs_office) +"aTn" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aTo" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aTp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aTr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aTt" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTv" = ( +/obj/structure/cable, +/obj/machinery/power/terminal{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTw" = ( +/obj/structure/cable/green, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTx" = ( +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aTy" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Kitchen" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/crew_quarters/kitchen) +"aTz" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance"; + req_access_txt = "28"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aTA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aTD" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aTE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hydroponics) +"aTF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 21 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aTG" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aTH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/command{ + desc = "The office of the station's commanding officer, answerable only to Central Command and Space Law."; + name = "Captain's Quarters"; + req_access = null; + req_access_txt = "20" + }, +/turf/open/floor/wood, +/area/crew_quarters/captain) +"aTI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/captain) +"aTJ" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Bridge Escape Pod"; + dir = 4 + }, +/turf/open/floor/plating, +/area/bridge) +"aTK" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + dir = 4; + id = "pod3"; + name = "escape pod 3" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTL" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTM" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTN" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_3) +"aTO" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/security/prison) +"aTP" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/security/prison) +"aTQ" = ( +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell1"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt1"; + name = "Cell 1" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aTU" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Cell 1"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aTV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/security/prison) +"aTW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTX" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTY" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + frequency = 1424; + name = "Interrogation Intercom"; + pixel_y = -31 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aTZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/camera{ + c_tag = "Interrogation Room"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/main) +"aUa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/security/main) +"aUb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/newscaster/security_unit{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/security/main) +"aUc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) +"aUd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Security Officer" + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/main) +"aUe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/main) +"aUf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aUg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aUh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aUi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aUj" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 1"; + name = "Cell One Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aUk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aUl" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aUm" = ( +/obj/machinery/door/poddoor{ + id = "Secure Storage"; + name = "Secure Storage" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aUn" = ( +/obj/item/weapon/cartridge/engineering{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/engineering{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/item/weapon/cartridge/engineering{ + pixel_x = 3 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/structure/table, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Chief Engineer's Office APC"; + pixel_x = -24 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/chiefs_office) +"aUo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUp" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUr" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUs" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/chiefs_office) +"aUt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aUu" = ( +/obj/machinery/gravity_generator/main/station, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/gravity_generator) +"aUv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Central Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUx" = ( +/turf/closed/wall, +/area/crew_quarters/bar) +"aUy" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Bar Storage Maintenance"; + req_access_txt = "25"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/fsmaint2) +"aUz" = ( +/obj/machinery/door/window/southleft{ + dir = 4; + name = "Kitchen Deliveries"; + req_access_txt = "28" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/kitchen) +"aUA" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUB" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUC" = ( +/obj/machinery/gibber, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aUD" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/landmark/start{ + name = "Botanist" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aUE" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aUG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aUH" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/westright{ + name = "Hydroponics Desk"; + req_access_txt = "35"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hydroponics) +"aUI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aUK" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "19"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"aUL" = ( +/turf/open/floor/plasteel, +/area/bridge) +"aUM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"aUN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUO" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aUP" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Bridge Escape Pod"; + req_access = null; + req_access_txt = "0" + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/bridge) +"aUQ" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_3) +"aUR" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_3) +"aUS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/security/prison) +"aUT" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUU" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUV" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison) +"aUW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUY" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aUZ" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVa" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVb" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aVc" = ( +/obj/machinery/button/door{ + name = "Cell 1 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell1" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aVd" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + dir = 8; + name = "Prison Monitor"; + network = list("Prison"); + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aVe" = ( +/obj/structure/closet/wardrobe/red, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/main) +"aVf" = ( +/obj/machinery/photocopier, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVg" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVh" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/main) +"aVj" = ( +/obj/machinery/vending/coffee, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/security/main) +"aVk" = ( +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aVl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aVm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVn" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 2"; + name = "Cell Two"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVp" = ( +/obj/machinery/camera{ + c_tag = "Brig Cell Two"; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aVq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aVr" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aVs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVt" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVv" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aVw" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"aVx" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVy" = ( +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVA" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Fore"; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVB" = ( +/obj/item/weapon/weldingtool, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVC" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aVD" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aVE" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aVF" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"aVG" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVH" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVI" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVJ" = ( +/obj/structure/tank_dispenser, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aVK" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVL" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVM" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The office of the Head directly responsible for heat, power, and air pressure concerns aboard SS13."; + name = "Chief Engineer's Office"; + req_access_txt = "56" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/chiefs_office) +"aVN" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/chiefs_office) +"aVO" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/engine/gravity_generator) +"aVP" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Bar" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/crew_quarters/bar) +"aVQ" = ( +/obj/machinery/door/window/eastleft{ + name = "Bar Deliveries"; + req_access_txt = "25" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/bar) +"aVR" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVS" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVT" = ( +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aVU" = ( +/obj/structure/kitchenspike, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aVV" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aVW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aVX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aVZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel, +/area/hydroponics) +"aWa" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aWb" = ( +/obj/machinery/biogenerator, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aWc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aWd" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aWe" = ( +/turf/closed/wall, +/area/crew_quarters/heads) +"aWf" = ( +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + dir = 1; + freq = 1400; + location = "Bridge" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/crew_quarters/heads) +"aWg" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/heads) +"aWh" = ( +/turf/closed/wall, +/area/bridge) +"aWi" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel, +/area/bridge) +"aWj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/bridge) +"aWk" = ( +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/bridge) +"aWl" = ( +/obj/structure/sign/pods, +/turf/closed/wall/r_wall, +/area/bridge) +"aWm" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/potato, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"aWn" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aWo" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel, +/area/security/prison) +"aWp" = ( +/obj/structure/table, +/obj/item/weapon/storage/pill_bottle/dice, +/turf/open/floor/plasteel, +/area/security/prison) +"aWq" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aWr" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/closed/wall, +/area/security/prison) +"aWs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aWt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aWu" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall, +/area/security/prison) +"aWv" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/prisoner, +/obj/item/weapon/paper{ + icon_state = "paper_words"; + info = "ATTN: Please ensure any prisoner being assigned to Rehabilitation Labor Detail is tracking/chem implanted. Please monitor via consoles to ensure security."; + name = "Notice" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/security/prison) +"aWw" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison) +"aWx" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/plasteel, +/area/security/prison) +"aWy" = ( +/obj/machinery/camera{ + c_tag = "Prison Access"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/structure/closet/secure_closet/brig, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/security/prison) +"aWz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/main) +"aWA" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Office"; + req_access_txt = "0"; + req_one_access_txt = "1; 4" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/main) +"aWB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aWC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"aWE" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aWF" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aWH" = ( +/obj/structure/bed, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/bedsheet/brown, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aWI" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/aft) +"aWJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/aft) +"aWK" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aWL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aWM" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aWN" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner" + }, +/area/engine/engineering) +"aWO" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWP" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/emitter{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWQ" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWR" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"aWS" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"aWT" = ( +/turf/closed/wall, +/area/engine/engineering) +"aWU" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aWV" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"aWW" = ( +/turf/open/floor/plasteel, +/area/engine/engineering) +"aWX" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aWY" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aWZ" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXa" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXb" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXc" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXd" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXe" = ( +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXf" = ( +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"aXg" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/aft) +"aXh" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/bar, +/obj/machinery/camera{ + c_tag = "Bar Storage"; + dir = 8 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aXl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"aXm" = ( +/obj/structure/kitchenspike, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aXn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/mob/living/simple_animal/hostile/retaliate/goat{ + name = "Pete" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aXo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aXp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"aXq" = ( +/obj/machinery/seed_extractor, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aXr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Central Starboard"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aXu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/heads) +"aXv" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/window{ + name = "Bridge Deliveries"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/crew_quarters/heads) +"aXw" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXx" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXy" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXz" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXA" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXB" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aXC" = ( +/obj/structure/closet, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"aXD" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/bridge) +"aXE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aXF" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/bridge) +"aXG" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"aXH" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "bridgeshut"; + name = "Bridge Shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"aXI" = ( +/obj/structure/grille, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"aXJ" = ( +/obj/machinery/computer/arcade, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXK" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets, +/turf/open/floor/plasteel, +/area/security/prison) +"aXL" = ( +/obj/structure/table, +/obj/item/toy/cards/deck, +/turf/open/floor/plasteel, +/area/security/prison) +"aXM" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXN" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXO" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 2"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 2"; + network = list("SS13","Prison") + }, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/security/prison) +"aXP" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXQ" = ( +/obj/machinery/button/flasher{ + pixel_x = -26; + id = "PCell 2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/camera{ + dir = 4; + network = list("SS13","Prison"); + c_tag = "Prison Hallway Fore" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aXT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"aXU" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"aXV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aXW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"aXX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"aXY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"aXZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/security/brig) +"aYa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/brig) +"aYb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/brig) +"aYc" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/security/brig) +"aYd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aYe" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 2"; + name = "Cell Two Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"aYf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/security/brig) +"aYg" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aYh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aYi" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aYj" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"aYk" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aYl" = ( +/obj/structure/cable{ + icon_state = "2-4"; + tag = "icon-2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 9 + }, +/area/engine/engineering) +"aYm" = ( +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYn" = ( +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/obj/structure/cable{ + tag = "icon-1-8"; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYo" = ( +/obj/structure/cable{ + tag = "icon-0-8"; + icon_state = "0-8" + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"aYp" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 5 + }, +/area/engine/engineering) +"aYq" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aYr" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/engine/engineering) +"aYs" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aYt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aYB" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aYC" = ( +/obj/item/stack/sheet/plasteel{ + amount = 50 + }, +/obj/item/stack/sheet/plasteel{ + amount = 50 + }, +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 4; + name = "Engineering Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"aYD" = ( +/turf/closed/wall/r_wall, +/area/maintenance/aft) +"aYE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYG" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Engineering Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"aYJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYM" = ( +/obj/machinery/vending/cola, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYN" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYO" = ( +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYP" = ( +/obj/machinery/chem_master, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"aYQ" = ( +/obj/machinery/chem_master/condimaster, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"aYT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/hydroponics) +"aYU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/hydroponics) +"aYV" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hydroponics) +"aYW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"aYZ" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"aZa" = ( +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZc" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"aZh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"aZi" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"aZj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/bridge) +"aZm" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/bridge) +"aZn" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"aZo" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "bridgeshut"; + name = "Bridge Shutters" + }, +/turf/open/floor/plating, +/area/bridge) +"aZp" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/security/prison) +"aZq" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/security/prison) +"aZt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell2"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt2"; + name = "Cell 2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_security{ + name = "Cell 2"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"aZA" = ( +/obj/machinery/door/airlock/glass_security{ + layer = 2.8; + name = "Prison Wing"; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/security/prison) +"aZB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"aZC" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"aZD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"aZE" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The station's long-term incarceration and labor facility. Remember, only the Captain or HoS can authorize sending people here! (Or the Warden, at a pinch.)"; + name = "Prison Access"; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/prison) +"aZF" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"aZG" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"aZJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/brig) +"aZK" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 3"; + name = "Cell Three"; + req_access_txt = "2"; + state_open = 0 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell Three"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"aZM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"aZN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"aZO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"aZP" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"aZQ" = ( +/obj/item/weapon/crowbar, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aZR" = ( +/obj/machinery/field/generator{ + anchored = 1; + state = 2 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aZS" = ( +/obj/structure/lattice, +/turf/open/space, +/area/engine/engineering) +"aZT" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"aZU" = ( +/obj/machinery/power/emitter{ + anchored = 1; + dir = 8; + state = 2 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"aZV" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aZW" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"aZX" = ( +/obj/structure/rack, +/obj/item/clothing/mask/gas{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = -25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"aZY" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/weapon/tank/internals/emergency_oxygen/engi, +/obj/item/weapon/tank/internals/emergency_oxygen/engi, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"aZZ" = ( +/obj/structure/closet/crate{ + name = "solar pack crate" + }, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/weapon/circuitboard/solar_control, +/obj/item/weapon/electronics/tracker, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"baa" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bab" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bac" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bad" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bae" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"baf" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bag" = ( +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/structure/table, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bah" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/aft) +"bai" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/aft) +"baj" = ( +/obj/machinery/camera{ + c_tag = "Engineering Atmospherics Control"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bak" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bal" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bam" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Engineering Maintenance APC"; + pixel_x = 25; + pixel_y = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"ban" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bao" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bap" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/bar) +"bar" = ( +/obj/structure/closet/gmcloset, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bas" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bat" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bau" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/obj/machinery/power/apc{ + dir = 4; + name = "Bar APC"; + pixel_x = 24 + }, +/obj/structure/cable/green, +/obj/item/weapon/gun/projectile/revolver/doublebarrel{ + name = "bartender's shotgun" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bav" = ( +/obj/machinery/icecream_vat, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"baw" = ( +/obj/machinery/camera{ + c_tag = "Kitchen Cold Room"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bax" = ( +/obj/structure/closet/gmcloset, +/obj/item/clothing/under/waiter, +/obj/item/clothing/under/waiter, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bay" = ( +/obj/machinery/requests_console{ + department = "Hydroponics"; + departmentType = 2; + name = "Hydroponics Requests Console"; + pixel_x = -32 + }, +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/obj/item/weapon/reagent_containers/glass/beaker, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/hydroponics) +"baz" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baB" = ( +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/hydroponics) +"baC" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "green" + }, +/area/hydroponics) +"baD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"baF" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"baG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"baJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"baK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/camera{ + c_tag = "Bridge Fore Entrance"; + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"baL" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baM" = ( +/obj/machinery/power/apc{ + name = "Head of Personnel APC"; + pixel_y = -24 + }, +/obj/structure/cable/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"baO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"baP" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"baQ" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"baR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/bridge) +"baS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"baT" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/bridge) +"baU" = ( +/obj/item/clothing/under/rank/prisoner, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"baV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"baW" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel, +/area/security/prison) +"baX" = ( +/obj/structure/closet, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"baY" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/security/prison) +"baZ" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/brown, +/turf/open/floor/plasteel, +/area/security/prison) +"bba" = ( +/obj/machinery/button/door{ + name = "Cell 2 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bbc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"bbd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/security/prison) +"bbe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "Prison Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -28; + pixel_y = -24; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bbg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/prison) +"bbh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/prison) +"bbi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bbj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"bbk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbm" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bbn" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bbo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bbp" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbq" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bbr" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bbs" = ( +/obj/machinery/door/window/northleft, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bbt" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bbu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bbv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bbw" = ( +/turf/open/space, +/area/engine/engineering) +"bbx" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bby" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"bbz" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/camera{ + c_tag = "Engineering Fore"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bbA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bbB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bbF" = ( +/obj/machinery/computer/station_alert, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bbG" = ( +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbH" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbI" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbK" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bbL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "10; 12" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/aft) +"bbM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbO" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbP" = ( +/obj/machinery/door/airlock{ + desc = "The backroom of the bar, a place few can ever visit."; + name = "Bar Storage"; + req_access_txt = "25" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bbQ" = ( +/obj/machinery/door/airlock{ + desc = "The chef's freezer room. Ignore the smell of frequent cleanings."; + name = "Kitchen Cold Room"; + req_access_txt = "28" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/crew_quarters/kitchen) +"bbR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/hydroponics) +"bbS" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + name = "Hydroponics Desk"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 1 + }, +/area/hydroponics) +"bbT" = ( +/obj/machinery/smartfridge, +/turf/closed/wall, +/area/hydroponics) +"bbU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbV" = ( +/turf/closed/wall/r_wall, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bbW" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bbX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -24; + req_access_txt = "19" + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Bridge Fore"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bbY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bbZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/bridge) +"bca" = ( +/obj/structure/table, +/obj/item/weapon/storage/fancy/donut_box, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/bridge) +"bcb" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bcc" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bce" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green" + }, +/area/security/prison) +"bcg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "greencorner" + }, +/area/security/prison) +"bch" = ( +/obj/machinery/vending/sustenance, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bci" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bcj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bck" = ( +/obj/structure/sign/securearea, +/turf/closed/wall, +/area/security/prison) +"bcl" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/security/prison) +"bcm" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/trackimp, +/turf/open/floor/plasteel, +/area/security/prison) +"bcn" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/light, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bco" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/power/apc{ + cell_type = 5000; + name = "Prison Wing APC"; + pixel_y = -24 + }, +/obj/structure/cable, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/security/prison) +"bcp" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/security/brig) +"bcq" = ( +/obj/machinery/computer/security, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcr" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcs" = ( +/obj/structure/table, +/obj/machinery/light, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bct" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcu" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcv" = ( +/obj/machinery/vending/security, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/security/brig) +"bcw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/security/brig) +"bcx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bcy" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 3"; + name = "Cell Three Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bcz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bcA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcB" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bcC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcD" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bcE" = ( +/obj/structure/lattice, +/obj/item/clothing/head/hardhat, +/turf/open/space, +/area/engine/engineering) +"bcF" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bcG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bcH" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/engine/engineering) +"bcI" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bcJ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = 25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bcK" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/engine/engineering) +"bcL" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/obj/machinery/vending/tool, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bcM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bcP" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Engineering APC"; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bcQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/maintenance/aft) +"bcR" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Engineering Maintenance"; + req_access_txt = "32" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bcS" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + freq = 1400; + location = "Engineering" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/maintenance/aft) +"bcT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bcW" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 6; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcX" = ( +/obj/machinery/door/window/westright{ + name = "Bar"; + req_access_txt = "25" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bcZ" = ( +/obj/machinery/vending/boozeomat, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bda" = ( +/obj/structure/table, +/obj/machinery/requests_console{ + department = "Bar"; + departmentType = 2; + name = "Bar Requests Console"; + pixel_y = 30 + }, +/obj/machinery/camera{ + c_tag = "Bar" + }, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdb" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdc" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bdd" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bde" = ( +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdf" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdg" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdh" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdi" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdj" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdk" = ( +/obj/structure/table, +/obj/item/weapon/storage/fancy/egg_box, +/obj/item/weapon/kitchen/knife, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bdl" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bdm" = ( +/obj/structure/grille, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + layer = 2.9; + name = "Privacy Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/heads) +"bdn" = ( +/obj/machinery/computer/card, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdo" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdp" = ( +/obj/machinery/keycard_auth{ + pixel_y = 24 + }, +/obj/structure/bed/dogbed{ + anchored = 1; + desc = "Ian's bed! Looks comfy."; + name = "Ian's bed" + }, +/mob/living/simple_animal/pet/dog/corgi/Ian, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdr" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/obj/machinery/camera{ + c_tag = "Head of Personnel's Office" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bds" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdt" = ( +/obj/machinery/computer/cargo/request, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdu" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bdv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/fireaxecabinet{ + pixel_x = -32 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/bridge) +"bdw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/bridge) +"bdx" = ( +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/bridge) +"bdy" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/bridge) +"bdz" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/bridge) +"bdA" = ( +/obj/machinery/biogenerator, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdC" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/security/prison) +"bdD" = ( +/obj/item/device/analyzer/plant_analyzer, +/obj/structure/table, +/obj/item/seeds/wheat, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/weapon/reagent_containers/spray/plantbgone{ + pixel_x = 6; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 5 + }, +/area/security/prison) +"bdE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bdF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdG" = ( +/obj/structure/chair/stool, +/obj/machinery/button/door{ + id = "permabolt3"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdH" = ( +/obj/structure/table, +/obj/machinery/flasher{ + id = "PCell 3"; + pixel_y = 26 + }, +/obj/machinery/camera{ + c_tag = "Prison Cell 3"; + network = list("SS13","Prison") + }, +/obj/item/weapon/storage/fancy/cigarettes, +/turf/open/floor/plasteel, +/area/security/prison) +"bdI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/button/flasher{ + id = "PCell 3"; + pixel_x = -26 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bdJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bdK" = ( +/turf/closed/wall/r_wall, +/area/security/armory) +"bdL" = ( +/turf/closed/wall, +/area/security/warden) +"bdM" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/warden) +"bdN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bdO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bdR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bdS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/flasher{ + id = "brigentry"; + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Brig Access" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bdU" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bdV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/brig) +"bdW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 7 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=PtCH"; + location = "Sec" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bdZ" = ( +/obj/structure/lattice, +/obj/item/weapon/wirecutters, +/turf/open/space, +/area/engine/engineering) +"bea" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 9 + }, +/area/engine/engineering) +"beb" = ( +/obj/machinery/the_singularitygen/tesla, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bec" = ( +/obj/item/weapon/screwdriver, +/turf/open/floor/plating, +/area/engine/engineering) +"bed" = ( +/obj/structure/particle_accelerator/particle_emitter/left{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bee" = ( +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bef" = ( +/obj/machinery/particle_accelerator/control_box, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"beg" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/engine/engineering) +"beh" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/engineering_particle_accelerator, +/obj/machinery/camera{ + c_tag = "Engineering Center"; + network = list("SS13","Singularity") + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/engine/engineering) +"bei" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring the singularity engine safely."; + dir = 4; + name = "Singularity Monitor"; + network = list("Singularity"); + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bek" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/weapon/airlock_painter, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bel" = ( +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bem" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"ben" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"beo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bep" = ( +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"beq" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"ber" = ( +/obj/machinery/vending/cola, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bes" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bet" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"beu" = ( +/obj/machinery/door/window/westright{ + dir = 2; + name = "Engineering Deliveries"; + req_access_txt = "10"; + req_one_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/engine/engineering) +"bev" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"bew" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bex" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bey" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bez" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beA" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beD" = ( +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beE" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"beF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + desc = "The workplace of the diligent station chef, with enough ingredients to work up a masterpiece."; + name = "Kitchen"; + req_access_txt = "28" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"beJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 19 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beK" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beL" = ( +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"beM" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Reception Window"; + req_access_txt = "0" + }, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Head of Personnel's Desk"; + req_access_txt = "57" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hop"; + layer = 2.9; + name = "Privacy Shutters" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beN" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/button/door{ + id = "hopqueue"; + name = "Queue Shutters Control"; + pixel_x = 6; + pixel_y = 54; + req_access_txt = "28" + }, +/obj/machinery/button/flasher{ + id = "hopline"; + pixel_x = 6; + pixel_y = 64; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "hop"; + name = "Privacy Shutters Control"; + pixel_x = -6; + pixel_y = 54; + req_access_txt = "28" + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Head of Personnel" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beO" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beP" = ( +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beQ" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"beR" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"beS" = ( +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"beT" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/bridge) +"beU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/bridge) +"beV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/storage/secure/briefcase, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/bridge) +"beW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/bridge) +"beX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/bridge) +"beY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/bridge) +"beZ" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bfa" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/plasteel, +/area/security/prison) +"bfb" = ( +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel, +/area/security/prison) +"bfc" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/security/prison) +"bfd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bfe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id = "permacell3"; + name = "Cell Shutters"; + opacity = 0 + }, +/obj/machinery/door/airlock/glass{ + id_tag = "permabolt3"; + name = "Cell 3" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bff" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bfg" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Cell 3"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bfh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bfi" = ( +/obj/item/weapon/grenade/barrier, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfj" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 1; + name = "Armory APC"; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfk" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/rack, +/obj/item/weapon/storage/box/handcuffs, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfl" = ( +/obj/structure/rack, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/suit/armor/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/gun/projectile/shotgun/riot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfm" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/weapon/shield/riot, +/obj/item/weapon/gun/projectile/shotgun/riot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bfn" = ( +/obj/structure/closet/secure_closet/warden, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + name = "Security Requests Console"; + pixel_y = 30 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/warden) +"bfo" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Warden's Office" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Warden's Office APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bfp" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel, +/area/security/warden) +"bfq" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel, +/area/security/warden) +"bfr" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel, +/area/security/warden) +"bfs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bft" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bfu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"bfv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/security/brig) +"bfw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bfx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bfy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bfz" = ( +/obj/structure/sign/securearea, +/turf/closed/wall/r_wall, +/area/security/brig) +"bfA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bfB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/mob/living/simple_animal/bot/secbot/beepsky, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bfC" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"bfD" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space, +/area/space) +"bfE" = ( +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Port"; + dir = 4; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfF" = ( +/obj/item/weapon/screwdriver, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfG" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bfH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bfI" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bfJ" = ( +/obj/structure/particle_accelerator/particle_emitter/center{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfK" = ( +/obj/structure/particle_accelerator/power_box{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfL" = ( +/obj/structure/particle_accelerator/fuel_chamber{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfM" = ( +/obj/structure/particle_accelerator/end_cap{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bfN" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/engine/engineering) +"bfO" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bfP" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/hologram/holopad, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfR" = ( +/obj/structure/table, +/obj/item/weapon/electronics/airlock, +/obj/item/weapon/electronics/airlock, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfS" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/clothing/glasses/meson, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfT" = ( +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfU" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bfV" = ( +/obj/machinery/door/airlock/engineering{ + desc = "Main engineering. Loot and danger in equal measures lie ahead!"; + id_tag = "Engineering"; + name = "Engineering"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/engineering) +"bfW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bfX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bfZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bga" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bgb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass_engineering{ + name = "Engineering Access"; + req_access_txt = "32"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bgc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bge" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgg" = ( +/obj/effect/landmark/start{ + name = "Bartender" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgh" = ( +/mob/living/carbon/monkey/punpun, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bgi" = ( +/obj/machinery/door/airlock/glass{ + desc = "The workplace of the diligent station chef, with enough ingredients to work up a masterpiece."; + name = "Kitchen"; + req_access_txt = "0"; + req_one_access_txt = "25, 28" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Cook" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgm" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + name = "Kitchen Requests Console"; + pixel_x = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bgn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgp" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/machinery/flasher{ + id = "hopline"; + layer = 3.5; + name = "civility enforcement flasher" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgq" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bgr" = ( +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/pdapainter, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgt" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"bgv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bgw" = ( +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bgx" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-4"; + d1 = 1; + d2 = 2 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bgy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "2-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bgz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/bridge) +"bgA" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/PDAs{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/silver_ids, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bgB" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/plasteel, +/area/bridge) +"bgC" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/bridge) +"bgD" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bgE" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/ambrosia, +/turf/open/floor/plasteel, +/area/security/prison) +"bgF" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/camera{ + c_tag = "Prison Aft"; + dir = 1; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgG" = ( +/obj/machinery/hydroponics/constructable, +/obj/item/seeds/sunflower, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/security/prison) +"bgH" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/security/prison) +"bgI" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgJ" = ( +/obj/machinery/button/door{ + name = "Cell 3 Lockdown"; + pixel_x = -26; + req_access_txt = "2"; + id = "permacell3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bgK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bgL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the Prison Wing."; + dir = 8; + name = "Prison Monitor"; + network = list("Prison"); + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bgM" = ( +/obj/item/weapon/grenade/barrier, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bgN" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bgO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bgP" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/armory) +"bgQ" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bgR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgT" = ( +/turf/open/floor/plasteel, +/area/security/warden) +"bgU" = ( +/obj/effect/landmark/start{ + name = "Warden" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bgV" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/folder/red, +/obj/machinery/door/window/brigdoor{ + dir = 8; + layer = 2.9; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bgW" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bgX" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bgY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bgZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bha" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bhb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bhc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bhd" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/security/brig) +"bhe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 1; + icon_state = "pipe-j2" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bhf" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 10 + }, +/area/engine/engineering) +"bhg" = ( +/obj/machinery/the_singularitygen, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bhh" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 6 + }, +/area/engine/engineering) +"bhi" = ( +/obj/structure/particle_accelerator/particle_emitter/right{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bhj" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/engine/engineering) +"bhk" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/engine/engineering) +"bhl" = ( +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_x = 25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/engine/engineering) +"bhm" = ( +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_x = -25; + req_access_txt = "11" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bhn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bho" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhp" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/weapon/storage/belt/utility/full, +/obj/item/weapon/storage/belt/utility/full, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bhs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"bht" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bhu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/structure/table, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bhv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bhw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/engine/engineering) +"bhx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/engine/engineering) +"bhy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Engineering Access"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bhz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/engine/engineering) +"bhA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bhB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhC" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhD" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhE" = ( +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/machinery/smartfridge/drinks, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bhF" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhG" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhH" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhI" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhJ" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker{ + pixel_x = 7 + }, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhK" = ( +/obj/structure/table, +/obj/item/weapon/kitchen/rollingpin, +/obj/item/weapon/reagent_containers/food/snacks/mint, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhL" = ( +/obj/machinery/processor, +/obj/machinery/button/door{ + id = "kitchen"; + name = "Kitchen Shutters Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "28" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Kitchen"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bhO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/kitchen) +"bhP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + sortType = 20 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhQ" = ( +/obj/structure/noticeboard{ + dir = 8; + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bhR" = ( +/obj/machinery/vending/cart, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhT" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhU" = ( +/obj/structure/chair, +/turf/open/floor/carpet, +/area/crew_quarters/heads) +"bhV" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bhW" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Bridge APC"; + pixel_x = -25 + }, +/obj/structure/cable/blue, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/bridge) +"bhX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/bridge) +"bhY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/comfy/black{ + desc = "A captain needs comfort.\nAlt-click to rotate it clockwise."; + dir = 4; + name = "Captain's Chair" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/bridge) +"bhZ" = ( +/obj/machinery/computer/communications, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bia" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/bridge) +"bib" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/bridge) +"bic" = ( +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bid" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bie" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Prison Hallway Aft"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/security/prison) +"bif" = ( +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"big" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bih" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/ionrifle{ + pin = /obj/item/device/firing_pin + }, +/obj/item/clothing/suit/armor/laserproof, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bii" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/teargas, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bij" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/chemimp{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/trackimp, +/obj/item/weapon/storage/lockbox/loyalty, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bik" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bil" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/security/armory) +"bim" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bin" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bio" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/security/warden) +"bip" = ( +/obj/machinery/computer/crew, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"biq" = ( +/obj/machinery/computer/security, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bir" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/handcuffs, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bis" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bit" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"biu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"biv" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor{ + layer = 2.9; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/security/brig) +"biw" = ( +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/engine/engineering) +"bix" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"biy" = ( +/obj/machinery/light, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = -25; + req_access_txt = "11" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"biz" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/engine/engineering) +"biA" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = -32 + }, +/obj/machinery/vending/engivend, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"biB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biE" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"biF" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"biG" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"biH" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"biI" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/engine/engineering) +"biJ" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"biK" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biL" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"biM" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"biN" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"biO" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/crew_quarters/kitchen) +"biP" = ( +/obj/effect/landmark/start{ + name = "Cook" + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"biQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"biR" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 15 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biU" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"biV" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/heads) +"biW" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biX" = ( +/obj/machinery/light, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biY" = ( +/obj/structure/table/wood, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"biZ" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/item/weapon/stamp/hop, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel Requests Console"; + pixel_y = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bja" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bjb" = ( +/obj/structure/closet/secure_closet/hop, +/obj/item/clothing/suit/ianshirt, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bjc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bjd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/bridge) +"bje" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/button/door{ + id = "bridgeshut"; + name = "Bridge Shutters Control"; + pixel_y = -34; + req_access_txt = "19" + }, +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = 0; + pixel_y = -24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 6 + }, +/area/bridge) +"bjf" = ( +/obj/structure/table, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bjg" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bjh" = ( +/turf/open/floor/plating/asteroid, +/area/mine/explored) +"bji" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/security/prison) +"bjj" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "brown" + }, +/area/security/prison) +"bjk" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "brown" + }, +/area/security/prison) +"bjl" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/security/prison) +"bjm" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/obj/item/weapon/pickaxe{ + attack_verb = list("ineffectively hit"); + desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; + force = 1; + name = "safety pickaxe"; + pixel_x = 5; + throwforce = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bjn" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel, +/area/security/prison) +"bjo" = ( +/obj/structure/rack, +/obj/item/weapon/shovel{ + attack_verb = list("ineffectively hit"); + desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; + force = 1; + name = "safety shovel"; + pixel_x = -5; + throwforce = 1 + }, +/obj/item/weapon/shovel{ + attack_verb = list("ineffectively hit"); + desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; + force = 1; + name = "safety shovel"; + pixel_x = -5; + throwforce = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bjp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/security/prison) +"bjq" = ( +/obj/machinery/camera{ + c_tag = "Armory"; + dir = 4 + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bjr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bjs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bjt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bju" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bjv" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bjw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bjx" = ( +/obj/item/weapon/storage/box/seccarts{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/structure/table, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/item/weapon/storage/box/deputy, +/turf/open/floor/plasteel, +/area/security/warden) +"bjy" = ( +/obj/structure/table, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/glasses/sunglasses, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel, +/area/security/warden) +"bjz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/warden) +"bjA" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bjB" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bjC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/security/brig) +"bjD" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Brig Desk"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bjE" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/plasteel, +/area/security/brig) +"bjF" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + layer = 2.9; + name = "Brig Desk"; + req_access_txt = "1" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/brig) +"bjG" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bjH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bjI" = ( +/obj/machinery/door/window/southleft, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bjJ" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/rad_collector{ + anchored = 1 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bjK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bjL" = ( +/obj/item/device/radio/off, +/turf/open/space, +/area/engine/engineering) +"bjM" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "singularity"; + name = "radiation shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/engine/engineering) +"bjN" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bjO" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bjP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjR" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bjS" = ( +/obj/machinery/computer/monitor, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bjT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bjU" = ( +/obj/structure/table, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -5; + pixel_y = 23 + }, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring the singularity engine safely."; + dir = 4; + name = "Singularity Monitor"; + network = list("Singularity"); + pixel_x = -32 + }, +/obj/machinery/button/door{ + desc = "A remote control-switch for secure storage."; + id = "Engineering"; + name = "Engineering Door Control"; + pixel_x = 10; + pixel_y = 24; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/engine/engineering) +"bjV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjW" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/engine/engineering) +"bjY" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/camera{ + c_tag = "Engineering Security Post" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/engine/engineering) +"bjZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) +"bka" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkb" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkc" = ( +/obj/structure/chair/wood/normal, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bke" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bki" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkk" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bkl" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/reagent_containers/food/snacks/twobread, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bkm" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/bag/tray, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bkn" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "kitchen"; + name = "kitchen shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "cafeteria" + }, +/area/crew_quarters/kitchen) +"bko" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bkq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/command{ + desc = "The office of the hero the station deserves, but not the one it needs right now. They also change IDs on occasion."; + name = "Head of Personnel's Office"; + req_access = null; + req_access_txt = "57" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads) +"bkr" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -24; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/camera{ + c_tag = "Bridge Aft"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bks" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bkt" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/bridge) +"bku" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/bridge) +"bkv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/bridge) +"bkw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/bridge) +"bkx" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/bridge) +"bky" = ( +/obj/machinery/door/airlock/external{ + name = "Prison Mining External Airlock"; + req_access_txt = 0 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bkA" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkB" = ( +/obj/machinery/door/airlock/external{ + name = "Prison Mining External Airlock"; + req_access_txt = 0 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bkC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security{ + name = "Prison Mining"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bkF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bkG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bkH" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/rack, +/obj/item/weapon/storage/box/firingpins, +/obj/item/weapon/storage/box/firingpins, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkJ" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun/advtaser, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkK" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/gun/energy/laser, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkL" = ( +/obj/structure/rack, +/obj/item/weapon/gun/energy/gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bkM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"bkN" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/armory) +"bkO" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/security/warden) +"bkP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/security/warden) +"bkQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/security/warden) +"bkR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bkS" = ( +/obj/machinery/disposal/bin, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bkT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/security/warden) +"bkU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bkV" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"bkW" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/security/brig) +"bkX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/security, +/turf/open/floor/plasteel, +/area/security/brig) +"bkY" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/computer/secure_data, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_x = -6; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/machinery/button/flasher{ + id = "brigentry"; + pixel_x = 6; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bkZ" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "innerbrig"; + name = "Brig Interior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = -26; + req_access_txt = "63" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "outerbrig"; + name = "Brig Exterior Doors Control"; + normaldoorcontrol = 1; + pixel_x = 6; + pixel_y = -26; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bla" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plating, +/area/security/brig) +"blb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Port Hallway Central"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"blc" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bld" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"ble" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blf" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blg" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/weapon/extinguisher, +/obj/machinery/button/door{ + id = "singularity"; + name = "Shutters Control"; + pixel_y = 25; + req_access_txt = "11" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"blh" = ( +/obj/structure/closet/firecloset, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bli" = ( +/obj/structure/closet/toolcloset, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"blj" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"blk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bll" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blm" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bln" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blo" = ( +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"blp" = ( +/obj/machinery/door/airlock/external{ + name = "Engineering External Access"; + req_access = null; + req_access_txt = "10;13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"blq" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/engine/engineering) +"blr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bls" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"blt" = ( +/obj/structure/closet/secure_closet/security/engine, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/engine/engineering) +"blu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blv" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blw" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blx" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bly" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blz" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"blA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"blD" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/heads) +"blE" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"blF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"blG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Bridge Aft Entrance" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"blH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"blI" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"blJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/bridge) +"blK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/bridge) +"blL" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/bridge) +"blM" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/zipties, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/bridge) +"blN" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/bridge) +"blO" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/security/prison) +"blP" = ( +/obj/machinery/light/small, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/security/prison) +"blQ" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/security/prison) +"blR" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable, +/obj/structure/sign/securearea{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/security/prison) +"blS" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "browncorner" + }, +/area/security/prison) +"blT" = ( +/obj/machinery/camera{ + c_tag = "Prison E.V.A."; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "browncorner" + }, +/area/security/prison) +"blU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"blV" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/armory) +"blW" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/security/warden) +"blX" = ( +/obj/structure/table, +/obj/item/weapon/clipboard, +/obj/item/weapon/pen, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"blY" = ( +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/vehicle/secway, +/obj/item/key/security, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"blZ" = ( +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_y = -26; + req_access_txt = "2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bma" = ( +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/warden) +"bmb" = ( +/obj/machinery/door/airlock/glass_security{ + desc = "The workplace of the HoS' right hand, the station's Warden, responsible for keeping track of the guns and the prisoners and ensuring they don't mix."; + name = "Warden's Office"; + req_access_txt = "3" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/security/warden) +"bmc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/security/brig) +"bmd" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 4"; + name = "Cell Four Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bme" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/aft) +"bmf" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bmg" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bmh" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 10 + }, +/area/engine/engineering) +"bmi" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bmj" = ( +/obj/machinery/power/tesla_coil, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/engine/engineering) +"bmk" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'RADIOACTIVE AREA'"; + icon_state = "radiation"; + name = "RADIOACTIVE AREA"; + pixel_x = 32 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bml" = ( +/obj/machinery/suit_storage_unit/engine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bmm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bmr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bms" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bmt" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bmu" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/storage/toolbox/electrical, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"bmv" = ( +/turf/open/floor/plating/airless, +/area/space) +"bmw" = ( +/obj/structure/table, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/newscaster{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/engine/engineering) +"bmx" = ( +/obj/structure/table, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/engine/engineering) +"bmy" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/engine/engineering) +"bmz" = ( +/obj/structure/filingcabinet, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/engine/engineering) +"bmA" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bmF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bmG" = ( +/obj/machinery/door/poddoor/preopen{ + id = "bridge blast"; + name = "Bridge Blast Door" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bmL" = ( +/obj/structure/cable/blue{ + icon_state = "2-4"; + d1 = 1; + d2 = 2 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/heads) +"bmM" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The station's command center, where the fate of Nanotrasen's trillion-dollar investment is often decided."; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "4-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/bridge) +"bmN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmP" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bmQ" = ( +/turf/open/floor/plasteel{ + icon_state = "whitecorner" + }, +/area/bridge) +"bmR" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/bridge) +"bmS" = ( +/obj/machinery/camera{ + c_tag = "Prison External"; + dir = 8; + network = list("SS13","Prison") + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid, +/area/security/prison) +"bmT" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bmU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/prison) +"bmV" = ( +/obj/structure/closet/wardrobe/orange, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bmW" = ( +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmX" = ( +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmY" = ( +/obj/structure/rack, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bmZ" = ( +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bna" = ( +/obj/machinery/light, +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bnb" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/armory) +"bnc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner"; + dir = 1 + }, +/area/security/brig) +"bnd" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 4"; + name = "Cell Four"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bne" = ( +/obj/machinery/camera{ + c_tag = "Brig Cell Five"; + network = list("SS13","Prison") + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bng" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bnh" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bni" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/engine/engineering) +"bnj" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnk" = ( +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/emitter{ + anchored = 1; + dir = 1; + state = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnl" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnm" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + tag = "icon-1-2"; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bnn" = ( +/obj/item/device/multitool, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bno" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/engine/engineering) +"bnp" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/engine/engineering) +"bnq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bnr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bns" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bnt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/engine/engineering) +"bnu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/engine/engineering) +"bnv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/engine/engineering) +"bnw" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/engine/engineering) +"bnx" = ( +/obj/structure/closet/secure_closet/engineering_personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"bny" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bnz" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnA" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnB" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnC" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnD" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnE" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnF" = ( +/obj/structure/table/wood, +/obj/item/weapon/kitchen/fork, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bnG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bnH" = ( +/obj/structure/closet, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnI" = ( +/obj/machinery/button/door{ + id = "bridge blast"; + name = "Bridge Blast Door Control"; + pixel_x = -1; + pixel_y = -24; + req_access_txt = "19" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnJ" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnK" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/crew_quarters/heads) +"bnL" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/heads) +"bnM" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/bridge) +"bnN" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"bnO" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"bnP" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "brown" + }, +/area/security/prison) +"bnQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bnR" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/ore{ + pixel_y = 3 + }, +/obj/item/weapon/storage/bag/ore{ + pixel_x = -3 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "brown" + }, +/area/security/prison) +"bnS" = ( +/obj/machinery/door/airlock/security{ + name = "Prison Storage"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel, +/area/security/prison) +"bnT" = ( +/turf/closed/wall/r_wall, +/area/security/hos) +"bnU" = ( +/obj/structure/closet/bombcloset, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/security/brig) +"bnV" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnW" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Brig APC"; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnX" = ( +/obj/structure/table, +/obj/item/weapon/crowbar/red, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bnY" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel, +/area/security/brig) +"bnZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boa" = ( +/obj/structure/closet/secure_closet/brig{ + id = "Cell 4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bob" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boc" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"bod" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"boe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bof" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bog" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boh" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4"; + tag = "90Curve" + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"boj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera/emp_proof{ + c_tag = "Singularity Aft"; + dir = 1; + network = list("SS13","Singularity") + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bok" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/light, +/turf/open/floor/plating/airless, +/area/engine/engineering) +"bol" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/engine/engineering) +"bom" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/engine/engineering) +"bon" = ( +/obj/machinery/door/airlock/external{ + name = "Engine Access"; + req_access = null; + req_access_txt = "10;13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"boo" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bop" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"boq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bor" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Engineering Aft"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"bos" = ( +/obj/machinery/door/airlock/external{ + desc = "Leads to one of the station's small, FTL-capable lifeboats."; + name = "Engineering Escape Pod"; + req_access = null; + req_access_txt = "0" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/engine/engineering) +"bot" = ( +/obj/structure/sign/pods, +/turf/closed/wall, +/area/engine/engineering) +"bou" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bov" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bow" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"box" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"boy" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boA" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"boB" = ( +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "19"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"boC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"boD" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"boE" = ( +/obj/structure/table, +/obj/item/device/flashlight, +/obj/item/device/flashlight{ + pixel_x = 3; + pixel_y = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "brown" + }, +/area/security/prison) +"boF" = ( +/obj/structure/table, +/obj/item/weapon/storage/backpack/industrial, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/weapon/storage/backpack/industrial, +/turf/open/floor/plasteel{ + icon_state = "brown" + }, +/area/security/prison) +"boG" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -1; + pixel_y = -2 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "brown" + }, +/area/security/prison) +"boH" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/prison) +"boI" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/plasteel, +/area/security/prison) +"boJ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/suit_storage_unit/hos, +/turf/open/floor/wood, +/area/security/hos) +"boK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Head of Security's Office APC"; + pixel_x = 0; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/mob/living/simple_animal/hostile/bear{ + desc = "Enemies of the law are unbearable to him!"; + faction = list("neutral"); + name = "Security Bear" + }, +/turf/open/floor/wood, +/area/security/hos) +"boL" = ( +/obj/machinery/computer/card/minor/hos, +/turf/open/floor/wood, +/area/security/hos) +"boM" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"boN" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"boO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"boP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + name = "Brig"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 42; 58" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"boT" = ( +/obj/machinery/door_timer{ + dir = 4; + id = "Cell 5"; + name = "Cell Five Timer"; + pixel_x = 0 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"boU" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boV" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_engineering{ + desc = "A place for the Engineering staff to slack off (hopefully) after completing the Engine."; + name = "Engineering Break Room"; + req_access_txt = "11"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/engine/engineering) +"boX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"boY" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f6" + }, +/area/shuttle/pod_4) +"boZ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12" + }, +/area/shuttle/pod_4) +"bpa" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f10" + }, +/area/shuttle/pod_4) +"bpb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bpc" = ( +/obj/structure/table/wood, +/obj/item/toy/carpplushie, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpd" = ( +/obj/machinery/door/window/westright{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bph" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpi" = ( +/obj/machinery/door/window/eastright{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpj" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpk" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/peppermill, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpl" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bpm" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/nuke_storage) +"bpn" = ( +/turf/closed/wall, +/area/security/nuke_storage) +"bpo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bpp" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bpq" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/bridge) +"bpr" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/bridge) +"bps" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/bridge) +"bpt" = ( +/obj/structure/closet, +/obj/item/clothing/suit/straight_jacket, +/obj/item/weapon/restraints/legcuffs, +/obj/item/weapon/restraints/legcuffs, +/obj/item/weapon/restraints/legcuffs, +/turf/open/floor/plasteel, +/area/security/prison) +"bpu" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel, +/area/security/prison) +"bpv" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Head of Security's Office"; + dir = 4 + }, +/turf/open/floor/wood, +/area/security/hos) +"bpw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bpx" = ( +/turf/open/floor/carpet, +/area/security/hos) +"bpy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/wood, +/area/security/hos) +"bpz" = ( +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/security/hos) +"bpA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"bpB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_security{ + name = "Brig"; + req_access_txt = "0"; + req_one_access_txt = "1; 4; 42; 58" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/window/brigdoor/eastleft{ + id = "Cell 5"; + name = "Cell Five"; + req_access_txt = "2" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Brig Cell Six"; + network = list("SS13","Prison") + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bpK" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Port Hallway APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bpL" = ( +/obj/structure/bookcase/manuals/engineering, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpM" = ( +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 4; + name = "Engineering Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpN" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpQ" = ( +/obj/machinery/disposal/bin, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) +"bpR" = ( +/obj/machinery/camera{ + c_tag = "Engineering Escape Pod"; + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"bpS" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Escape Pod Airlock" + }, +/obj/docking_port/mobile/pod{ + dir = 4; + id = "pod4"; + name = "escape pod 4" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpT" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + pixel_y = 25 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpU" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpV" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/pod_4) +"bpW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bpX" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpY" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bpZ" = ( +/obj/structure/piano, +/obj/machinery/camera{ + c_tag = "Theater Stage"; + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqa" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqc" = ( +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bqd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/bridge) +"bqe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/command{ + name = "Conference Room"; + req_access = null; + req_access_txt = "19" + }, +/turf/open/floor/wood, +/area/bridge) +"bqf" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security Requests Console"; + pixel_x = -32 + }, +/obj/structure/closet/secure_closet/hos, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/security/hos) +"bqg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqh" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/obj/item/weapon/folder/red, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqi" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/carpet, +/area/security/hos) +"bqj" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/wood, +/area/security/hos) +"bqk" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_command{ + desc = "The workplace of the Company's top enforcer aboard station, and often the only person standing between you, and the threat of the week."; + name = "Head of Security's Office"; + req_access_txt = "58" + }, +/turf/open/floor/wood, +/area/security/hos) +"bql" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"bqm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/security/brig) +"bqo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/security/brig) +"bqp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/security/brig) +"bqq" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqr" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/security/brig) +"bqs" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/security/brig) +"bqt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet/brig{ + id = "Cell 5" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/flasher{ + id = "Cell 5"; + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"bqv" = ( +/obj/structure/grille, +/obj/structure/cable, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "Security Blast Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/brig) +"bqw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bqx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bqy" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Port Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bqz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bqA" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bqB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Station Engineer" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/glass, +/obj/item/weapon/paint/anycolor, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bqF" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bqG" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/engine/engineering) +"bqH" = ( +/turf/open/floor/plating, +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 4 + }, +/turf/closed/wall/shuttle{ + icon_state = "swall_f5" + }, +/area/shuttle/pod_4) +"bqI" = ( +/turf/open/space, +/turf/closed/wall/shuttle{ + icon_state = "swall_f9" + }, +/area/shuttle/pod_4) +"bqJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqL" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqM" = ( +/obj/machinery/door/airlock{ + name = "Theater Stage"; + req_access_txt = "46" + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"bqN" = ( +/obj/machinery/disposal/bin, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "bar" + }, +/area/crew_quarters/bar) +"bqO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 16 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bqQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/closet/secure_closet/freezer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bqR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"bqS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/closet/secure_closet{ + name = "contraband locker"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bqT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bqU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bqV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/blue{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bqW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/bridge) +"bqX" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bqY" = ( +/turf/open/floor/wood, +/area/bridge) +"bqZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/bridge) +"bra" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/bridge) +"brb" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/bridge) +"brc" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Bridge"; + departmentType = 5; + name = "Bridge Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/wood, +/area/bridge) +"brd" = ( +/obj/machinery/vending/snack, +/turf/open/floor/wood, +/area/bridge) +"bre" = ( +/obj/machinery/computer/secure_data, +/obj/structure/sign/securearea{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/security/hos) +"brf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/landmark/start{ + name = "Head of Security" + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/security/hos) +"brg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + on = 0; + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/weapon/paper_bin, +/turf/open/floor/carpet, +/area/security/hos) +"brh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/security/hos) +"bri" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/wood, +/area/security/hos) +"brj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/security/hos) +"brk" = ( +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/security/brig) +"brl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"brm" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/security/brig) +"brn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/security{ + name = "Tribunal"; + req_access = null; + req_access_txt = "42" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/security/brig) +"bro" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Tribunal"; + req_access = null; + req_access_txt = "63" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/security/brig) +"brp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"brq" = ( +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/space, +/area/space/nearstation) +"brr" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"brs" = ( +/obj/structure/lattice, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space/nearstation) +"brt" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bru" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brv" = ( +/obj/structure/table/glass, +/obj/item/weapon/extinguisher, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brw" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel, +/area/engine/engineering) +"brx" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bry" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brz" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + sortType = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brA" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + sortType = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Central" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 18 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brI" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"brK" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/security/nuke_storage) +"brL" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"brM" = ( +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"brN" = ( +/obj/machinery/nuclearbomb/selfdestruct{ + layer = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"brO" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"brP" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"brQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/bridge) +"brR" = ( +/turf/open/floor/carpet, +/area/bridge) +"brS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/bridge) +"brT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/carpet, +/area/bridge) +"brU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge) +"brV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/carpet, +/area/bridge) +"brW" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/bridge) +"brX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/bridge) +"brY" = ( +/obj/machinery/computer/security, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -28; + pixel_y = 7; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Brig Lockdown"; + pixel_x = -28; + pixel_y = -3; + req_access_txt = "2" + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/wood, +/area/security/hos) +"brZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"bsa" = ( +/obj/structure/table/wood, +/obj/item/device/radio, +/obj/item/device/taperecorder, +/obj/item/weapon/stamp/hos, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/security/hos) +"bsb" = ( +/turf/open/floor/wood, +/area/security/hos) +"bsc" = ( +/obj/machinery/disposal/bin, +/obj/machinery/keycard_auth{ + pixel_y = -24 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/hos) +"bsd" = ( +/obj/machinery/door/airlock/security{ + name = "Evidence Storage"; + req_access = null; + req_access_txt = "1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bse" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/closed/wall, +/area/security/brig) +"bsf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsg" = ( +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bsh" = ( +/turf/closed/wall, +/area/crew_quarters/courtroom) +"bsi" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsj" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsk" = ( +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsl" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsm" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsn" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bso" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/space, +/area/space/nearstation) +"bsp" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-SW" + }, +/turf/open/space, +/area/space/nearstation) +"bsq" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) +"bsr" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/engine/engineering) +"bss" = ( +/obj/machinery/status_display{ + layer = 4; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) +"bst" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Med"; + location = "StAF1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsz" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsB" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=StAF1"; + location = "StAF2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bsD" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "warndark"; + dir = 8 + }, +/area/security/nuke_storage) +"bsE" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsF" = ( +/obj/machinery/door/airlock/vault{ + icon_state = "door_locked"; + locked = 1; + req_access_txt = "53"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsG" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/bluegrid{ + icon_state = "gcircuit"; + luminosity = 2 + }, +/area/security/nuke_storage) +"bsH" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"bsI" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Vault APC"; + pixel_x = -25 + }, +/obj/structure/cable/blue{ + icon_state = "0-4"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/security/nuke_storage) +"bsJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/blue{ + icon_state = "1-8"; + d1 = 1; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bsK" = ( +/obj/machinery/status_display, +/turf/closed/wall, +/area/bridge) +"bsL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/camera{ + c_tag = "Conference Room"; + dir = 4 + }, +/turf/open/floor/wood, +/area/bridge) +"bsM" = ( +/obj/structure/chair/comfy/beige{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/bridge) +"bsN" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/carpet, +/area/bridge) +"bsO" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/turf/open/floor/carpet, +/area/bridge) +"bsP" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/bridge) +"bsQ" = ( +/obj/structure/table/wood, +/obj/machinery/recharger, +/turf/open/floor/wood, +/area/bridge) +"bsR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsT" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"bsU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/brig) +"bsV" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsW" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bsX" = ( +/obj/structure/table/wood, +/obj/item/weapon/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bsY" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bsZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"bta" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"btb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"btc" = ( +/obj/machinery/door/airlock{ + desc = "SS13's courtroom and meeting hall."; + name = "Tribunal" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"btd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bte" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btf" = ( +/obj/structure/transit_tube{ + icon_state = "N-S" + }, +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"btg" = ( +/obj/structure/transit_tube{ + icon_state = "NW-SE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bth" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/engine/engineering) +"bti" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btj" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/weapon/storage/toolbox/electrical, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btk" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btl" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/engine/engineering) +"btm" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/engine/engineering) +"btn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bto" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btp" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bts" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bty" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 8 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"btz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/security/nuke_storage) +"btA" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btB" = ( +/mob/living/simple_animal/mouse/brown/Tom, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btC" = ( +/obj/item/weapon/storage/secure/safe{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/security/nuke_storage) +"btD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"btE" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/fancy/donut_box, +/turf/open/floor/carpet, +/area/bridge) +"btF" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/bridge) +"btG" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/bridge) +"btH" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/camera{ + c_tag = "Evidence Storage"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btI" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btJ" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btK" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"btL" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"btM" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"btN" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 10 + }, +/area/crew_quarters/courtroom) +"btO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"btP" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/crew_quarters/courtroom) +"btQ" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"btR" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"btS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btT" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"btV" = ( +/turf/closed/wall, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btW" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"btX" = ( +/obj/structure/lattice, +/obj/structure/transit_tube{ + icon_state = "D-NE" + }, +/turf/open/space, +/area/space/nearstation) +"btY" = ( +/obj/structure/transit_tube{ + icon_state = "E-NW" + }, +/turf/open/space, +/area/space/nearstation) +"btZ" = ( +/obj/structure/transit_tube{ + icon_state = "W-SE" + }, +/turf/open/space, +/area/space/nearstation) +"bua" = ( +/obj/structure/grille, +/obj/structure/cable/yellow, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/engine/engineering) +"bub" = ( +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/open/space, +/area/space/nearstation) +"buc" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/camera{ + c_tag = "Starboard Hallway Aft Port"; + dir = 8 + }, +/obj/structure/sign/directions/engineering{ + pixel_x = 32; + pixel_y = 0 + }, +/obj/structure/sign/directions/medical{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/sign/directions/science{ + pixel_x = 32; + pixel_y = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bud" = ( +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bue" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buf" = ( +/obj/machinery/door/airlock{ + name = "Theater Storage"; + req_access_txt = "46" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bug" = ( +/obj/machinery/door/airlock{ + name = "Theater Storage"; + req_access_txt = "46" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buh" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bui" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"buj" = ( +/obj/structure/closet/crate{ + name = "Gold Crate" + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/stack/sheet/mineral/gold{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/weapon/storage/belt/champion, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"buk" = ( +/obj/item/weapon/folder/documents, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bul" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Vault"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bum" = ( +/obj/structure/safe, +/obj/item/clothing/head/bearpelt, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"bun" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/structure/closet/crate, +/obj/item/weapon/coin/silver, +/obj/item/weapon/coin/iron, +/obj/item/weapon/coin/iron, +/obj/item/weapon/coin/gold, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/security/nuke_storage) +"buo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/security/nuke_storage) +"bup" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"buq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bur" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/bridge) +"bus" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/wood, +/area/bridge) +"but" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/bridge) +"buu" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/bridge) +"buv" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/carpet, +/area/bridge) +"buw" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -27 + }, +/turf/open/floor/carpet, +/area/bridge) +"bux" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/bridge) +"buy" = ( +/obj/structure/closet{ + name = "Evidence Closet" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buz" = ( +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buA" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/brig) +"buB" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"buC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"buD" = ( +/obj/structure/table/wood, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/item/weapon/gavelblock, +/obj/item/weapon/gavelhammer, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"buE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"buH" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redcorner" + }, +/area/crew_quarters/courtroom) +"buI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"buJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buK" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buM" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buN" = ( +/obj/machinery/camera{ + c_tag = "Aft Port Transit" + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buP" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buQ" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"buR" = ( +/obj/structure/transit_tube{ + icon_state = "N-S-Pass" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"buS" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "13" + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"buT" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"buU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buV" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/structure/bed, +/obj/item/weapon/bedsheet/purple, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buY" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"buZ" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Clown" + }, +/obj/structure/mirror{ + pixel_x = -60; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bva" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvb" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvc" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvd" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Mime" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bve" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/random, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvf" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/weapon/soap, +/obj/item/weapon/bikehorn/rubberducky, +/obj/machinery/button/door{ + id = "shutbath2"; + name = "Bathroom Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvg" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvh" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + name = "Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvi" = ( +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvk" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bvl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bvm" = ( +/obj/structure/table/wood, +/obj/item/device/radio/intercom{ + broadcasting = 1; + dir = 8; + listening = 0; + name = "Station Intercom (Court)" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bvn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvo" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvp" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/crew_quarters/courtroom) +"bvq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bvr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/courtroom) +"bvs" = ( +/obj/machinery/door/airlock/glass_security{ + id_tag = "outerbrig"; + name = "Tribunal"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "redfull" + }, +/area/crew_quarters/courtroom) +"bvt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvv" = ( +/obj/machinery/door/airlock/glass{ + name = "Aft Port Transit" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvw" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvx" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvy" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvz" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bvA" = ( +/obj/structure/transit_tube{ + icon_state = "N-SW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bvB" = ( +/turf/closed/wall, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bvC" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"bvD" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvF" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvG" = ( +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvI" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/orange, +/turf/open/floor/wood, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvJ" = ( +/obj/structure/table/wood, +/obj/item/weapon/bikehorn/airhorn, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvK" = ( +/obj/structure/mirror{ + pixel_x = -60; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvL" = ( +/obj/structure/dresser, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvM" = ( +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvN" = ( +/obj/machinery/vending/autodrobe, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvO" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvP" = ( +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvQ" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bvR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bvT" = ( +/turf/closed/wall, +/area/crew_quarters/fitness) +"bvU" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/fitness) +"bvV" = ( +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/rec_center) +"bvW" = ( +/turf/closed/wall, +/area/maintenance/asmaint2) +"bvX" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bvY" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bvZ" = ( +/obj/structure/closet/crate, +/obj/item/stack/cable_coil, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwa" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bwd" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 6 + }, +/area/crew_quarters/courtroom) +"bwe" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder/blue, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bwf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwh" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/crew_quarters/courtroom) +"bwi" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"bwj" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwk" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwm" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwn" = ( +/obj/structure/transit_tube/station/reverse{ + dir = 1 + }, +/obj/structure/transit_tube_pod{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwo" = ( +/obj/structure/transit_tube, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwp" = ( +/obj/structure/transit_tube, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwq" = ( +/obj/structure/transit_tube{ + icon_state = "W-NE" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bwr" = ( +/obj/structure/transit_tube{ + icon_state = "D-NW" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"bws" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/transit_tube, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwt" = ( +/obj/structure/transit_tube, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwu" = ( +/obj/structure/transit_tube/station/reverse, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwv" = ( +/obj/structure/transit_tube{ + icon_state = "Block"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bww" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwy" = ( +/obj/machinery/door/airlock{ + name = "Locker Room"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwz" = ( +/obj/machinery/door/airlock{ + desc = "Basic human needs haven't changed much over the centuries."; + id_tag = "shutbath2"; + name = "Unisex Restroom"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bwC" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "12; 19" + }, +/turf/open/floor/plating, +/area/maintenance/maintcentral) +"bwD" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "Holodeck Projector Floor" + }, +/area/holodeck/rec_center) +"bwE" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwF" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwG" = ( +/obj/item/clothing/mask/gas, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bwH" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bwI" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "blue" + }, +/area/crew_quarters/courtroom) +"bwJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"bwK" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/crew_quarters/courtroom) +"bwL" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"bwM" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/crew_quarters/courtroom) +"bwN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Port Hallway Aft"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bwP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Port Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bwQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/aft) +"bwR" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwS" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwT" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwU" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwV" = ( +/obj/machinery/camera{ + c_tag = "Aft Starboard Transit"; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bwW" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/aft) +"bwX" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/aft) +"bwY" = ( +/obj/machinery/disposal/bin, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bwZ" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxa" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxb" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/chair/stool, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxc" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxd" = ( +/obj/structure/table/wood, +/obj/machinery/camera/xray{ + c_tag = "Aft Dormitory Cabins" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxe" = ( +/obj/structure/table/wood, +/obj/item/device/assembly/voice, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/weapon/lipstick/black, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxg" = ( +/obj/structure/table/wood, +/obj/item/device/taperecorder/empty, +/obj/item/device/tape/random, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxh" = ( +/obj/structure/table/wood, +/obj/item/weapon/coin/iron, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxi" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxj" = ( +/obj/machinery/camera{ + c_tag = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxl" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/structure/cable/green{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bxn" = ( +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/closed/wall, +/area/crew_quarters/fitness) +"bxo" = ( +/obj/structure/closet/masks, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxp" = ( +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Fitness Room APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxt" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxu" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxv" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bxw" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Holodeck" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bxx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bxy" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxz" = ( +/obj/structure/table/wood, +/obj/machinery/camera{ + c_tag = "Tribunal"; + dir = 1 + }, +/obj/item/weapon/paper/Court, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/crew_quarters/courtroom) +"bxA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxB" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxC" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"bxD" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/crew_quarters/courtroom) +"bxE" = ( +/obj/machinery/door/airlock{ + desc = "SS13's courtroom and meeting hall."; + name = "Tribunal" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"bxF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port{ + name = "Port Hallway" + }) +"bxG" = ( +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/maintenance/aft) +"bxH" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Starboard Transit Maintenance"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxJ" = ( +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxO" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bxP" = ( +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/plating, +/area/maintenance/aft) +"bxQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxR" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bxZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bya" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byb" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byc" = ( +/obj/structure/closet/lasertag/blue, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bye" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byg" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + dir = 8; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellow"; + dir = 9 + }, +/area/crew_quarters/fitness) +"byh" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellowcorners"; + dir = 1 + }, +/area/crew_quarters/fitness) +"byi" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkbluecorners"; + dir = 4 + }, +/area/crew_quarters/fitness) +"byj" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkblue"; + dir = 5 + }, +/area/crew_quarters/fitness) +"byk" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byl" = ( +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bym" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + desc = "Hosed down three times a week by the Janitor."; + name = "Holodeck" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byn" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"byo" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Tribunal APC"; + pixel_x = 25 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/crew_quarters/courtroom) +"byp" = ( +/obj/structure/closet/secure_closet/courtroom, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "bluecorner" + }, +/area/crew_quarters/courtroom) +"byq" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/courtroom) +"byr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bys" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Port Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byu" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/aft) +"byv" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byw" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/aft) +"byx" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/aft) +"byy" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byz" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byA" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"byB" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 2; + name = "Aft Central Hallway APC"; + pixel_y = -25 + }, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byC" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"byF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byG" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byM" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byS" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Dormitory" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"byT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-y"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"byW" = ( +/obj/machinery/door/airlock/glass{ + desc = "The base's recreational center. Focused on fitness, as any astronaut would expect."; + name = "Fitness Room" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"byZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bza" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzb" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "darkyellowcorners"; + dir = 1 + }, +/area/crew_quarters/fitness) +"bzc" = ( +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 5 + }, +/area/crew_quarters/fitness) +"bzd" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkbluecorners"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bze" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzf" = ( +/obj/machinery/computer/holodeck, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bzg" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Brig Atmospheric Control"; + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzh" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Brig Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance{ + name = "Tribunal Maintenance"; + req_access_txt = "42"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Tribunal Maintenance"; + req_access_txt = "63"; + req_one_access_txt = "0" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellowcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzo" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzp" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzq" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plasteel{ + icon_state = "greenfull" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzr" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Interior Maintenance Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzs" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Interior Maintenance Access"; + req_access_txt = "12" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"bzt" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass{ + name = "Aft Starboard Transit" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bzw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzx" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzy" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Starboard Hallway" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzz" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzB" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzD" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzE" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzG" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzH" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzI" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzJ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bzK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bzN" = ( +/obj/machinery/door/airlock/glass{ + desc = "The base's recreational center. Focused on fitness, as any astronaut would expect."; + name = "Fitness Room" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzO" = ( +/obj/structure/closet/boxinggloves, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzP" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 8 + }, +/area/crew_quarters/fitness) +"bzQ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/crew_quarters/fitness) +"bzR" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bzS" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bzT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzU" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bzW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bzZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAa" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAb" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bAc" = ( +/turf/closed/wall, +/area/assembly/chargebay) +"bAd" = ( +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAe" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/mech_bay_recharge_floor, +/area/assembly/chargebay) +"bAf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAi" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + id = "Mechbay" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bAj" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAk" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = 40 + }, +/obj/structure/sign/directions/science{ + dir = 4; + icon_state = "direction_sci"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/sign/directions/security{ + dir = 1; + icon_state = "direction_sec"; + pixel_x = 0; + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Port" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Central" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Aft Central Hallway Starboard" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "greencorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/junction{ + dir = 8; + icon_state = "pipe-j2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAM" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 10 + }, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Fore" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bAR" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1s"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAS" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2s"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAT" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3s"; + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAU" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm4s"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAV" = ( +/obj/structure/table, +/obj/item/clothing/under/soviet, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAX" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAY" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bAZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBb" = ( +/obj/structure/closet/lasertag/red, +/obj/machinery/camera{ + c_tag = "Fitness Room"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBc" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkred"; + dir = 10 + }, +/area/crew_quarters/fitness) +"bBd" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkredcorners"; + dir = 8 + }, +/area/crew_quarters/fitness) +"bBe" = ( +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkgreencorners" + }, +/area/crew_quarters/fitness) +"bBf" = ( +/obj/machinery/door/window/eastright{ + base_state = "left"; + icon_state = "left"; + name = "Fitness Ring" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "darkgreen"; + dir = 6 + }, +/area/crew_quarters/fitness) +"bBg" = ( +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bBh" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBi" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bBn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/assembly/chargebay) +"bBo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBp" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBq" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bBr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bBs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters{ + id = "Mechbay" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bBt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Sec"; + location = "Mech" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBw" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBx" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBy" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBz" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Mech"; + location = "AfCH1" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBB" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBC" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=Escape"; + location = "AfCH2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBD" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBE" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBF" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBG" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBH" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBL" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AfCH2"; + location = "Med" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bBO" = ( +/obj/machinery/button/door{ + id = "Dorm1s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBP" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBQ" = ( +/obj/machinery/button/door{ + id = "Dorm2s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBR" = ( +/obj/machinery/button/door{ + id = "Dorm3s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBS" = ( +/obj/machinery/button/door{ + id = "Dorm4s"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBT" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bBU" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bBW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/fitness) +"bBX" = ( +/obj/structure/closet/athletic_mixed, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bBZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCd" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bCe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + name = "Brig Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bCf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bCg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/mech_bay_recharge_port, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/mech_bay_recharge_floor, +/area/assembly/chargebay) +"bCi" = ( +/obj/machinery/computer/mech_bay_power_console, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCj" = ( +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCk" = ( +/obj/machinery/button/door{ + id = "Mechbay"; + name = "Mech Bay Door Control"; + pixel_x = 24; + req_access_txt = "29" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bCl" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "Mechbay"; + name = "Mech Bay Door Control"; + pixel_x = -24; + req_access_txt = "29" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellowcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCm" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCo" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bluecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 0; + icon_state = "blue" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCw" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -24 + }, +/obj/structure/sign/directions/science{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCz" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + icon_state = "direction_med"; + pixel_x = 0; + pixel_y = -24 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = -32 + }, +/obj/structure/sign/directions/evac{ + pixel_y = -40 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/sign/directions/science{ + dir = 8; + pixel_y = -32 + }, +/obj/structure/sign/directions/security{ + dir = 8; + pixel_y = -24 + }, +/obj/structure/sign/directions/engineering{ + dir = 4; + pixel_y = -40 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCK" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCL" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCM" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCN" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitehall" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bCQ" = ( +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCR" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCS" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/red, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCT" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/green, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCU" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/blue, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/carpet, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCV" = ( +/obj/machinery/washing_machine, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCW" = ( +/obj/machinery/washing_machine, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCX" = ( +/obj/structure/table, +/obj/item/clothing/under/suit_jacket/really_black{ + pixel_x = -2 + }, +/obj/item/clothing/under/suit_jacket/female, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bCY" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 10 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bCZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bDa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 6 + }, +/area/hallway/primary/starboard{ + name = "Starboard Hallway" + }) +"bDb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bDc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDd" = ( +/obj/structure/cable, +/obj/machinery/power/terminal, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDe" = ( +/obj/item/latexballon, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bDf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDh" = ( +/turf/open/floor/bluegrid, +/area/assembly/chargebay) +"bDi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bDj" = ( +/turf/closed/wall, +/area/assembly/robotics) +"bDk" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDm" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + dir = 2; + layer = 2.7; + name = "Robotics Desk"; + req_access_txt = "29"; + req_one_access = null + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDn" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/assembly/robotics) +"bDo" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/assembly/robotics) +"bDp" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + freq = 1400; + location = "Robotics" + }, +/obj/machinery/door/firedoor, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/assembly/robotics) +"bDq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/assembly/robotics) +"bDr" = ( +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bDs" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bDt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/door/airlock/glass{ + name = "Aft Hallway" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bDw" = ( +/turf/closed/wall, +/area/janitor) +"bDx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/janitor) +"bDy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/janitor) +"bDz" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/hallway/primary/central{ + name = "Aft Central Hallway" + }) +"bDA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bDB" = ( +/turf/closed/wall/r_wall, +/area/medical/chemistry) +"bDC" = ( +/turf/closed/wall, +/area/medical/medbay) +"bDD" = ( +/obj/structure/sign/bluecross, +/turf/closed/wall, +/area/medical/medbay) +"bDE" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bDF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDG" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDI" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bDJ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bDK" = ( +/turf/closed/wall, +/area/medical/surgery) +"bDL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/medical/surgery) +"bDM" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bDN" = ( +/turf/closed/wall, +/area/library) +"bDO" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/library) +"bDP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass{ + desc = "The station's book depository, a place to hang out, aquire porn, and play tabletop games."; + name = "Library" + }, +/turf/open/floor/wood, +/area/library) +"bDQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/library) +"bDR" = ( +/turf/open/floor/wood, +/area/library) +"bDS" = ( +/obj/machinery/door/window/northright{ + dir = 8; + name = "Library Desk Door"; + req_access_txt = "37" + }, +/obj/machinery/status_display{ + layer = 4; + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/library) +"bDT" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/library) +"bDU" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole/bookmanagement, +/turf/open/floor/wood, +/area/library) +"bDV" = ( +/obj/structure/bookcase{ + name = "Forbidden Knowledge" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDW" = ( +/obj/structure/table/wood, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen/invisible, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDX" = ( +/obj/structure/table/wood, +/obj/item/device/camera, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bDY" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) +"bDZ" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/crew_quarters/fitness) +"bEa" = ( +/obj/machinery/computer/monitor, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEc" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEd" = ( +/obj/item/clothing/suit/ianshirt, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bEe" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Mech Bay"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEf" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bEi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/assembly/robotics) +"bEj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEl" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Robotics"; + departmentType = 2; + name = "Robotics Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEn" = ( +/obj/machinery/door/window/southleft{ + dir = 8; + name = "Robotics Deliveries"; + req_access_txt = "29" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/assembly/robotics) +"bEo" = ( +/obj/machinery/camera{ + c_tag = "Robotics Surgery"; + network = list("SS13","RD") + }, +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEp" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEq" = ( +/obj/structure/table/glass, +/obj/item/weapon/circular_saw, +/obj/item/weapon/scalpel{ + pixel_y = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bEr" = ( +/obj/machinery/computer/operating{ + name = "Robotics Operating Computer" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bEs" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/structure/closet/crate, +/obj/item/target/alien, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bEt" = ( +/obj/structure/closet/crate, +/obj/item/target/syndicate, +/obj/item/target/clown, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bEu" = ( +/obj/structure/closet/crate, +/obj/item/target, +/obj/item/target/clown, +/turf/open/floor/plasteel{ + icon_state = "warningcorner" + }, +/area/toxins/misc_lab) +"bEv" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/item/weapon/paper/range, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEw" = ( +/obj/machinery/camera{ + c_tag = "Shooting Range"; + dir = 2 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/misc_lab) +"bEx" = ( +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bEy" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEz" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEA" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bEB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bEC" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bED" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "greencorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bEE" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEF" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/mousetraps, +/obj/item/weapon/storage/box/mousetraps, +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + name = "Janitor's Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEG" = ( +/obj/structure/table, +/obj/item/weapon/restraints/legcuffs/beartrap, +/obj/item/weapon/restraints/legcuffs/beartrap, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEH" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/item/weapon/reagent_containers/glass/bucket, +/obj/machinery/camera{ + c_tag = "Janitor's Closet" + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEI" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEJ" = ( +/obj/structure/janitorialcart, +/obj/item/weapon/mop, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bEK" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bEL" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bEM" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/monkeycubes, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bEN" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bEO" = ( +/obj/machinery/button/door{ + id = "chemTesting"; + name = "Containment Blast Doors"; + pixel_y = 25; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/chemistry) +"bEP" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/engine, +/area/medical/chemistry) +"bEQ" = ( +/turf/open/floor/engine, +/area/medical/chemistry) +"bER" = ( +/mob/living/carbon/monkey, +/turf/open/floor/engine, +/area/medical/chemistry) +"bES" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bET" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEU" = ( +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEW" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bEZ" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/vending/cola, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bFa" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bFb" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitehall" + }, +/area/medical/surgery) +"bFc" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bFd" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Surgery Examination Room" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bFe" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFg" = ( +/obj/machinery/camera{ + c_tag = "Surgery Observation Room" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bFh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bFi" = ( +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFj" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFl" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFm" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bFn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/closed/wall, +/area/medical/surgery) +"bFo" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Aft Dormitory APC"; + pixel_y = 25 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/crew_quarters/sleep_male{ + name = "Aft Dormitory" + }) +"bFp" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable/green{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bFq" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/library) +"bFr" = ( +/obj/structure/table/wood, +/obj/machinery/computer/libraryconsole, +/turf/open/floor/wood, +/area/library) +"bFs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/library) +"bFt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"bFu" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/library) +"bFv" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green, +/turf/open/floor/wood, +/area/library) +"bFw" = ( +/obj/machinery/libraryscanner, +/turf/open/floor/wood, +/area/library) +"bFx" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFy" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFz" = ( +/obj/structure/cult/tome, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bFA" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bFB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/chargebay) +"bFC" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/chargebay) +"bFD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bFE" = ( +/obj/machinery/computer/rdconsole/robotics, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFI" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/assembly/robotics) +"bFJ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bFK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bFL" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bFM" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bFN" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bFO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bFP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/misc_lab) +"bFR" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/misc_lab) +"bFS" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFT" = ( +/obj/machinery/magnetic_module{ + dir = 2 + }, +/obj/structure/target_stake, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/misc_lab) +"bFU" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bFV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFW" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bFY" = ( +/obj/structure/table, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/weapon/grenade/chem_grenade/cleaner, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bFZ" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGa" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Janitor" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGc" = ( +/obj/structure/janitorialcart, +/obj/item/weapon/mop, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bGd" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bGe" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Medbay Foyer APC"; + pixel_x = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/medical/medbay) +"bGf" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/machinery/camera{ + c_tag = "Chemistry Testing Lab"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bGg" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bGh" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/chemistry) +"bGi" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "5; 33" + }, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bGj" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bGk" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bGs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bGt" = ( +/obj/machinery/door/airlock/medical{ + name = "Examination room"; + req_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/surgery) +"bGu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitehall" + }, +/area/medical/surgery) +"bGv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGx" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Observation Room"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGz" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGA" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bGB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bGC" = ( +/obj/structure/table/glass, +/obj/item/weapon/hemostat, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bGD" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGE" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bGF" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Surgery Operating Theatre"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bGG" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/closed/wall, +/area/medical/surgery) +"bGH" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bGI" = ( +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bGJ" = ( +/turf/open/floor/carpet, +/area/library) +"bGK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/library) +"bGL" = ( +/obj/structure/table/wood, +/obj/item/weapon/pen/blue{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/weapon/pen/red, +/turf/open/floor/wood, +/area/library) +"bGM" = ( +/obj/effect/landmark/start{ + name = "Librarian" + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bGN" = ( +/obj/machinery/door/morgue{ + name = "Private Study"; + req_access_txt = "37" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bGO" = ( +/obj/structure/closet, +/obj/item/clothing/under/rank/librarian, +/obj/item/clothing/under/blackskirt, +/obj/item/clothing/under/color/black, +/obj/item/clothing/under/color/black, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/library) +"bGP" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Mech Bay Maintenance"; + req_access_txt = "29" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bGQ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/assembly/chargebay) +"bGR" = ( +/obj/machinery/door/airlock/research{ + id_tag = ""; + name = "Mech Bay"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/assembly/chargebay) +"bGS" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "robotics"; + name = "robotics lab shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/assembly/chargebay) +"bGT" = ( +/obj/machinery/mecha_part_fabricator, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGU" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker/sulphuric, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGV" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/assembly/robotics) +"bGX" = ( +/obj/structure/table/glass, +/obj/item/device/mmi, +/obj/item/device/mmi, +/obj/item/device/mmi, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bGY" = ( +/obj/structure/table/glass, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bGZ" = ( +/obj/item/weapon/gun/energy/laser/practice, +/obj/item/clothing/ears/earmuffs, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bHa" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bHb" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warningcorner" + }, +/area/toxins/misc_lab) +"bHc" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/machinery/magnetic_controller{ + autolink = 1 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHd" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHe" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHf" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/misc_lab) +"bHg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bHh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 22 + }, +/obj/machinery/camera{ + c_tag = "Aft Hallway Fore"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "green"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bHi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/janitor) +"bHj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bHk" = ( +/obj/vehicle/janicart, +/obj/item/key/janitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bHl" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHm" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHn" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper, +/obj/item/weapon/pen, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bHo" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bHp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "chemTesting"; + name = "Containment Door" + }, +/turf/open/floor/engine, +/area/medical/chemistry) +"bHq" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bHr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bHs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHu" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHv" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bHw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bHx" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitehall" + }, +/area/medical/medbay) +"bHy" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bHz" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "A storage area for important medical supplies. Leads to the front desk."; + name = "Patient Room"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bHA" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bHB" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHC" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHD" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bHE" = ( +/obj/structure/table/glass, +/obj/item/weapon/surgicaldrill, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bHF" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bHG" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bHH" = ( +/obj/structure/grille, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bHI" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bHJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bHK" = ( +/obj/structure/bookcase{ + name = "bookcase (Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bHL" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper_bin, +/turf/open/floor/wood, +/area/library) +"bHM" = ( +/obj/structure/table/wood, +/obj/item/device/camera_film, +/turf/open/floor/wood, +/area/library) +"bHN" = ( +/obj/structure/table/wood, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bHO" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Mech Bay APC"; + pixel_y = 24 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/assembly/chargebay) +"bHP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bHQ" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/robotics) +"bHU" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/assembly/robotics) +"bHW" = ( +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHX" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHY" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bHZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIa" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Robotics Lab Port"; + network = list("SS13","RD") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bIb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/assembly/robotics) +"bIc" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/structure/table/glass, +/obj/item/clothing/gloves/color/latex, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bId" = ( +/turf/closed/wall, +/area/toxins/misc_lab) +"bIe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_research{ + name = "Shooting Range"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bIf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/toxins/misc_lab) +"bIg" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/toxins/misc_lab) +"bIh" = ( +/obj/machinery/door/airlock{ + name = "Janitor's Closet"; + req_access_txt = "26" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bIi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bIj" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Janitor's Closet Maintenance"; + req_one_access_txt = "26" + }, +/turf/open/floor/plating, +/area/janitor) +"bIk" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bIl" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "SS13's Chemistry lab, to be used only by qualified and cautious experts."; + name = "Chemistry Testing Lab"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bIm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Port"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIo" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIp" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIq" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIr" = ( +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIs" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIt" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bIu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIv" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bIw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/surgery) +"bIx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIy" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIz" = ( +/obj/structure/table/glass, +/obj/item/weapon/retractor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bIA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bIC" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bID" = ( +/obj/structure/table/glass, +/obj/item/weapon/circular_saw, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bIE" = ( +/obj/structure/rack, +/obj/item/clothing/tie/stethoscope, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bIF" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bIG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/library) +"bIH" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bII" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bIJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bIK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Librarian" + }, +/turf/open/floor/carpet, +/area/library) +"bIL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bIM" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/item/weapon/paper_bin, +/turf/open/floor/wood, +/area/library) +"bIN" = ( +/obj/structure/table/wood, +/obj/item/weapon/storage/pill_bottle/dice, +/obj/machinery/camera{ + c_tag = "Library Starboard" + }, +/turf/open/floor/wood, +/area/library) +"bIO" = ( +/obj/structure/filingcabinet, +/turf/open/floor/wood, +/area/library) +"bIP" = ( +/obj/structure/grille, +/turf/open/space, +/area/space/nearstation) +"bIQ" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bIR" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bIS" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bIX" = ( +/obj/machinery/door/window/southleft{ + dir = 8; + name = "Robotics Surgery"; + req_access_txt = "29" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bIY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bIZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bJa" = ( +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/assembly/robotics) +"bJb" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bJc" = ( +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJd" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJe" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJf" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Testing Lab" + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bJk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bJl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bJm" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJo" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJp" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bJq" = ( +/obj/structure/closet/crate, +/obj/item/weapon/coin/silver, +/obj/item/weapon/grenade/chem_grenade, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bJr" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJs" = ( +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/weapon/grenade/chem_grenade, +/obj/structure/table/glass, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/weapon/grenade/chem_grenade/large, +/obj/item/weapon/grenade/chem_grenade/large, +/obj/machinery/camera{ + c_tag = "Chemistry Lab" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJt" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJu" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJv" = ( +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJw" = ( +/obj/machinery/chem_master, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bJx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/medical/medbay) +"bJy" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay) +"bJz" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bJA" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJB" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 30; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJC" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 30; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJD" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJE" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bJF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bJG" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bJH" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/syringe, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bJI" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bJJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bJK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bJL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/surgery) +"bJM" = ( +/obj/structure/table/glass, +/obj/item/weapon/cautery{ + pixel_x = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJO" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/reagent_containers/blood/empty, +/obj/item/weapon/reagent_containers/blood/empty{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/weapon/reagent_containers/blood/AMinus, +/obj/item/weapon/reagent_containers/blood/BMinus{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/blood/BPlus{ + pixel_x = 1; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/blood/OMinus, +/obj/item/weapon/reagent_containers/blood/OPlus{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJP" = ( +/obj/structure/table/glass, +/obj/item/weapon/surgical_drapes, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJQ" = ( +/obj/structure/table/glass, +/obj/item/weapon/scalpel, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bJR" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bJS" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/wood, +/area/library) +"bJT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Non-Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bJU" = ( +/obj/structure/bookcase{ + name = "bookcase (Non-Fiction)" + }, +/turf/open/floor/wood, +/area/library) +"bJV" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/wood, +/area/library) +"bJW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/wood, +/area/library) +"bJX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/library) +"bJY" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bJZ" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKa" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKb" = ( +/obj/structure/closet/wardrobe/robotics_black, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKc" = ( +/obj/structure/rack, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/healthanalyzer, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKd" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/electrical{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = -3; + pixel_y = 0 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKe" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/welding, +/obj/item/weapon/crowbar, +/obj/item/device/multitool, +/obj/machinery/camera{ + c_tag = "Robotics"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKf" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start{ + name = "Roboticist" + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKg" = ( +/obj/structure/table/glass, +/obj/item/device/assembly/flash/handheld, +/obj/item/stack/cable_coil, +/obj/item/borg/upgrade/rename, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/obj/item/device/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKh" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/plasteel{ + amount = 10 + }, +/obj/item/stack/sheet/glass{ + amount = 20; + pixel_x = -3; + pixel_y = 6 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKi" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000; + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKj" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel, +/area/assembly/robotics) +"bKk" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKl" = ( +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKo" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteyellow" + }, +/area/assembly/robotics) +"bKp" = ( +/obj/structure/table/glass, +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKq" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 2 + }, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/table/glass, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/machinery/light_switch{ + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKw" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bKx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/misc_lab) +"bKy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 14 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bKz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "greencorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bKA" = ( +/obj/structure/closet/jcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKB" = ( +/obj/structure/closet/jcloset, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKC" = ( +/obj/structure/closet/l3closet/janitor, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKD" = ( +/obj/structure/closet/l3closet/janitor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKE" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKF" = ( +/obj/machinery/door/window/northright{ + name = "Janitor's Closet Deliveries"; + req_access_txt = "26" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/janitor) +"bKG" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Janitor" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/janitor) +"bKH" = ( +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/obj/structure/table/glass, +/obj/machinery/requests_console{ + department = "Chemistry"; + departmentType = 2; + name = "Chemistry Requests Console"; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bKI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bKJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bKK" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bKL" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Chemistry Desk"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay) +"bKM" = ( +/obj/machinery/door/window/eastleft{ + name = "Medbay Front Desk"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bKN" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Medbay Foyer Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bKO" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Observation Room"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/surgery) +"bKP" = ( +/obj/machinery/door/airlock/medical{ + name = "Surgery Operating Theatre"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/surgery) +"bKQ" = ( +/obj/structure/closet/crate, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bKR" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood, +/area/library) +"bKS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bKT" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard{ + icon_state = "medium" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bKU" = ( +/obj/structure/door_assembly/door_assembly_ext{ + name = "Broken External Airlock" + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bKV" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bKW" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bKY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Robotics Maintenance"; + req_access_txt = "29" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bKZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/assembly/robotics) +"bLa" = ( +/obj/machinery/door/airlock/research{ + name = "Robotics Lab"; + req_access_txt = "29"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowfull" + }, +/area/assembly/robotics) +"bLb" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Testing Lab"; + req_access_txt = "47"; + req_one_access = null + }, +/turf/open/floor/plasteel, +/area/toxins/misc_lab) +"bLc" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bLd" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bLe" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bLf" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Chemistry Lab APC"; + pixel_x = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/medical/chemistry) +"bLg" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bLh" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bLi" = ( +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9 + }, +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bLj" = ( +/obj/machinery/chem_heater, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bLk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bLl" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLm" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLn" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bLp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bLq" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLr" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + target_temperature = 80; + on = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLs" = ( +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLt" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone, +/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone, +/obj/item/weapon/wrench, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bLu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLv" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLw" = ( +/obj/machinery/vending/medical, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sink{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLz" = ( +/obj/machinery/camera{ + c_tag = "Medbay Sleeper Room" + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLA" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bLB" = ( +/obj/machinery/camera{ + c_tag = "Library Port"; + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bLC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/bookcase{ + name = "bookcase (Reference)" + }, +/turf/open/floor/wood, +/area/library) +"bLD" = ( +/obj/structure/bookcase{ + name = "bookcase (Reference)" + }, +/turf/open/floor/wood, +/area/library) +"bLE" = ( +/obj/structure/bookcase{ + name = "bookcase (Religious)" + }, +/turf/open/floor/wood, +/area/library) +"bLF" = ( +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bLG" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bLH" = ( +/obj/structure/grille, +/obj/item/weapon/shard, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bLI" = ( +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bLJ" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bLK" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLL" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLM" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Research Division Maintenance APC"; + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLN" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLO" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLP" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Robotics Lab APC"; + pixel_y = 24 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/assembly/assembly_line) +"bLQ" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLR" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLS" = ( +/obj/structure/closet/crate, +/obj/item/weapon/grenade/chem_grenade, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bLT" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLV" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLX" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Testing Lab APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/misc_lab) +"bLY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bLZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Research Division North" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMa" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMb" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMd" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bMe" = ( +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bMf" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bMg" = ( +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bMh" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMi" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Custodial Closet APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/janitor) +"bMj" = ( +/turf/closed/wall, +/area/maintenance/asmaint) +"bMk" = ( +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMl" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/camera{ + c_tag = "Medbay Power Control" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMm" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMn" = ( +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/item/clothing/glasses/science, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellowcorner" + }, +/area/medical/chemistry) +"bMo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bMp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bMq" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMr" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bMs" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/medical/medbay) +"bMt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMv" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/medbay) +"bMw" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Doors Control"; + normaldoorcontrol = 1; + pixel_y = 6; + req_access_txt = "5" + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay cryogenics."; + id = "FoyerCryo"; + name = "Cryogenics Doors Control"; + normaldoorcontrol = 1; + pixel_y = -6; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/medical/medbay) +"bMx" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMy" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMz" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The rapid-treatment center for injured spacemen. Can be exited via the door button."; + id_tag = "FoyerCryo"; + name = "Medbay Cryogenics"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bMB" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bMC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bMD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bME" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bMF" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bMG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bMH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bMI" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bMJ" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bMK" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bML" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/carpet, +/area/library) +"bMM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet, +/area/library) +"bMN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/library) +"bMO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/wood, +/area/library) +"bMP" = ( +/obj/structure/table/wood, +/obj/item/weapon/lipstick/random, +/turf/open/floor/wood, +/area/library) +"bMQ" = ( +/obj/structure/grille, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bMR" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bMS" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bMT" = ( +/turf/closed/wall, +/area/mine/abandoned) +"bMU" = ( +/obj/item/organ/internal/appendix, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bMV" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMW" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Research Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMX" = ( +/obj/structure/closet/crate, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMY" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bMZ" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNa" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNb" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bNc" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNd" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNe" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNf" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNg" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNh" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNi" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/vending/cola, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bNn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bNo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNp" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNq" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bNr" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNs" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNu" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Medbay Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNv" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNy" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chemistry Lab Maintenance"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bNz" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNA" = ( +/obj/machinery/computer/med_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/medbay) +"bNB" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bNC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bND" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bNE" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/medbay) +"bNF" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNG" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The rapid-treatment center for injured spacemen. Can be exited via the door button."; + id_tag = "FoyerCryo"; + name = "Medbay Cryogenics"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNH" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bNI" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNJ" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bNK" = ( +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bNL" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bNM" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bNN" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNP" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bNQ" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bNR" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/library) +"bNS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/library) +"bNT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/library) +"bNU" = ( +/obj/structure/bookcase{ + name = "bookcase (Adult)" + }, +/turf/open/floor/wood, +/area/library) +"bNV" = ( +/obj/structure/table/wood, +/obj/item/weapon/folder, +/obj/item/weapon/pen, +/turf/open/floor/wood, +/area/library) +"bNW" = ( +/obj/structure/table/wood, +/obj/item/weapon/paper, +/turf/open/floor/wood, +/area/library) +"bNX" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/space, +/area/space) +"bNY" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bNZ" = ( +/obj/item/weapon/wrench, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bOa" = ( +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bOb" = ( +/obj/item/wallframe/apc, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOc" = ( +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/structure/sign/poster{ + icon_state = "poster4"; + pixel_y = 30 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOd" = ( +/obj/structure/computerframe{ + anchored = 1 + }, +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bOe" = ( +/obj/item/weapon/kitchen/knife/ritual, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bOf" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOg" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOh" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Research Power Control"; + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOi" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bOj" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOk" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Storage"; + req_access_txt = "12"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOl" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOm" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOn" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bOo" = ( +/turf/closed/wall/r_wall, +/area/toxins/server) +"bOp" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/hor) +"bOq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bOr" = ( +/obj/machinery/door/airlock/glass_command{ + name = "Research Director's Office"; + req_access_txt = "30" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bOs" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bOt" = ( +/turf/closed/wall/r_wall, +/area/toxins/lab) +"bOu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/toxins/lab) +"bOv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_research{ + name = "Research and Development Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bOw" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_research{ + name = "Research and Development Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bOx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bOy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOz" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bOB" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOE" = ( +/obj/structure/closet/wardrobe/chemistry_white, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/chemistry) +"bOF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bOI" = ( +/obj/structure/closet/secure_closet/chemical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bOJ" = ( +/obj/structure/sign/chemistry, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/medbay) +"bOK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay) +"bOL" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bOM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bON" = ( +/obj/structure/bed/roller, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOO" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/medbay) +"bOP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOR" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/medical/medbay) +"bOS" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/machinery/camera{ + c_tag = "Medbay Security Post"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/medbay) +"bOT" = ( +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOU" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bOV" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bOW" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bOX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bOY" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bOZ" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/obj/structure/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bPa" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/library) +"bPb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/library) +"bPc" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/wood, +/area/library) +"bPd" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bPe" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bPf" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bPg" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel, +/area/mine/abandoned) +"bPh" = ( +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bPi" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/mine/abandoned) +"bPj" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bPk" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bPl" = ( +/obj/item/clothing/under/rank/miner, +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/glasses/regular/hipster, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bPm" = ( +/obj/structure/rack, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/weapon/tank/internals/emergency_oxygen, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPn" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPo" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bPp" = ( +/obj/machinery/r_n_d/server/core, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPq" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/airalarm/server{ + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPr" = ( +/obj/machinery/r_n_d/server/robotics, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bPs" = ( +/obj/machinery/computer/aifixer, +/obj/machinery/ai_status_display{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_x = -24; + req_access_txt = "47" + }, +/obj/machinery/button{ + id = "research"; + name = "Research and Development Shutters"; + pixel_x = -37 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPt" = ( +/obj/machinery/computer/robotics, +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPu" = ( +/obj/machinery/computer/mecha, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Research Director's Desk"; + departmentType = 5; + name = "Research Director RC"; + pixel_x = -2; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPv" = ( +/obj/structure/closet/secure_closet/RD, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPw" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPx" = ( +/obj/structure/table, +/obj/item/device/aicard, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/item/clothing/glasses/science, +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bPy" = ( +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Research Lab APC"; + pixel_x = -25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPA" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPB" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/toxins/lab) +"bPC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/toxins/lab) +"bPD" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPE" = ( +/obj/machinery/light_switch{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPF" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bPG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/lab) +"bPH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 14 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bPI" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPK" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bPM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/chemistry) +"bPN" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/item/stack/packageWrap, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bPO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bPP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bPQ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bPR" = ( +/turf/closed/wall/r_wall, +/area/medical/medbay) +"bPS" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerLeft"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bPT" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerLeft"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bPU" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/medical/medbay) +"bPV" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/medical/medbay) +"bPW" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPX" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPY" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/medbay) +"bPZ" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/medical/medbay) +"bQa" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerRight"; + name = "Medbay"; + req_access_txt = "5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bQb" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The front entrance to the medical bay. Can be exited even without ID via the buttons."; + id_tag = "FoyerRight"; + name = "Medbay"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay) +"bQc" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bQd" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bQe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay) +"bQf" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bQg" = ( +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bQh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQj" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bQk" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/surgery) +"bQl" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bQm" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/surgery) +"bQn" = ( +/obj/structure/table/wood, +/obj/item/weapon/hand_labeler, +/turf/open/floor/wood, +/area/library) +"bQo" = ( +/obj/machinery/photocopier, +/turf/open/floor/wood, +/area/library) +"bQp" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/wood, +/area/library) +"bQq" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/library) +"bQr" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/library) +"bQs" = ( +/obj/machinery/bookbinder, +/turf/open/floor/wood, +/area/library) +"bQt" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQu" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bQv" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bQw" = ( +/obj/machinery/light/built{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bQx" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQy" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQz" = ( +/obj/structure/girder, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bQA" = ( +/obj/item/organ/internal/heart{ + beating = 0 + }, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bQB" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/ectoplasm, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bQC" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Atmospheric Control" + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/computer/atmos_alert, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bQG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2) +"bQI" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bQJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 140; + on = 1; + pressure_checks = 0 + }, +/obj/machinery/camera{ + c_tag = "Server Room"; + dir = 4 + }, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQK" = ( +/obj/machinery/atmospherics/pipe/manifold/general/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 140; + on = 1; + pressure_checks = 0 + }, +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bQM" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the RD's goons from the safety of his office."; + dir = 4; + name = "Research Monitor"; + network = list("RD"); + pixel_x = -28 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bQN" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Research Director" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQQ" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bQR" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 31 + }, +/obj/structure/rack, +/obj/item/weapon/circuitboard/teleporter, +/obj/item/weapon/circuitboard/aicore{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bQS" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bQT" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bQU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bQV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bQY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bQZ" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bRa" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bRb" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRc" = ( +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRd" = ( +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/computer/monitor, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRe" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRf" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bRg" = ( +/obj/machinery/chem_heater, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/chemistry) +"bRh" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/medical/chemistry) +"bRi" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerLeft"; + name = "Medbay Exit Button"; + normaldoorcontrol = 1; + pixel_y = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Medbay Port" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/medbay2) +"bRj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/medbay2) +"bRm" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay) +"bRn" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay) +"bRo" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "FoyerRight"; + name = "Medbay Exit Button"; + normaldoorcontrol = 1; + pixel_y = 26 + }, +/obj/structure/bed/roller, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/medbay2) +"bRp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bRr" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bRs" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bRt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay) +"bRu" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating, +/area/medical/surgery) +"bRv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bRw" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Medbay Cryogenics"; + dir = 8 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/surgery) +"bRx" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Library Maintenance"; + req_one_access_txt = "5; 6; 9; 12; 22; 33; 37" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bRy" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bRz" = ( +/obj/structure/closet/crate, +/obj/item/toy/syndicateballoon, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bRA" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bRB" = ( +/obj/effect/decal/cleanable/molten_item, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/abandoned) +"bRC" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/abandoned) +"bRD" = ( +/obj/item/weapon/weldingtool, +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/explored) +"bRE" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"bRF" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRH" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos{ + name = "Research Atmospheric Control"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRJ" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRK" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bRL" = ( +/turf/open/floor/bluegrid{ + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bRM" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark"; + nitrogen = 100; + oxygen = 0; + temperature = 80 + }, +/area/toxins/server) +"bRN" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/keycard_auth{ + pixel_x = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bRO" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRP" = ( +/obj/structure/table/glass, +/obj/item/weapon/cartridge/signal/toxins, +/obj/item/weapon/cartridge/signal/toxins{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/weapon/cartridge/signal/toxins{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRQ" = ( +/obj/structure/table/glass, +/obj/item/device/paicard{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/device/taperecorder, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRR" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bRS" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Research Director's Office APC"; + pixel_x = 24 + }, +/obj/machinery/camera{ + c_tag = "Research Director's Office"; + dir = 8; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/crew_quarters/hor) +"bRT" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/beaker{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/dropper, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bRU" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bRV" = ( +/obj/machinery/r_n_d/protolathe, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/lab) +"bRW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/lab) +"bRX" = ( +/obj/machinery/r_n_d/destructive_analyzer, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/lab) +"bRY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/lab) +"bRZ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bSa" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "researchdesk" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/toxins/lab) +"bSb" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bSc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSd" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSe" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/engineering{ + name = "Medbay Power Control"; + req_access_txt = "11" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSg" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSh" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Medbay Atmospheric Control"; + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSi" = ( +/turf/closed/wall/r_wall, +/area/medical/medbay2) +"bSj" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker/large, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bSk" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Chemist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSl" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSm" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowcorner" + }, +/area/medical/medbay2) +"bSo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/smartfridge/chemistry, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay2) +"bSp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bSq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/medbay2) +"bSt" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSv" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/medbay2) +"bSw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/medbay2) +"bSy" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitered" + }, +/area/medical/medbay2) +"bSA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/medbay2) +"bSB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bSD" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSE" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSG" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSI" = ( +/obj/structure/table/glass, +/obj/item/weapon/defibrillator/loaded, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bSM" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSN" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bSO" = ( +/turf/closed/wall, +/area/medical/medbay2) +"bSP" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSQ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Surgery APC"; + pixel_x = 0; + pixel_y = 24 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/surgery) +"bSR" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Library APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/library) +"bST" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bSU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bSV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"bSW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bSX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bSY" = ( +/obj/item/weapon/rack_parts, +/obj/machinery/light/built{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/mine/abandoned) +"bSZ" = ( +/obj/structure/rack, +/obj/item/weapon/pickaxe{ + pixel_x = 5 + }, +/obj/item/weapon/shovel{ + pixel_x = -5 + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bTa" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bTb" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "asteroidfloor" + }, +/area/mine/explored) +"bTc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bTd" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/crew_quarters/hor) +"bTe" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/glass_command{ + name = "Server Room"; + req_access_txt = "30" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/crew_quarters/hor) +"bTf" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTg" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bTk" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/computer/card/minor/rd, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/crew_quarters/hor) +"bTl" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/weapon/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/machinery/camera{ + c_tag = "Research & Development"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bTm" = ( +/obj/machinery/r_n_d/circuit_imprinter, +/obj/item/weapon/reagent_containers/glass/beaker{ + list_reagents = list("sacid" = 50) + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/lab) +"bTn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/lab) +"bTo" = ( +/obj/machinery/computer/rdconsole/core, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/lab) +"bTp" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bTq" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastleft{ + dir = 8; + layer = 4; + name = "Research Desk"; + req_access_txt = "7" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "researchdesk" + }, +/obj/item/weapon/folder, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/toxins/lab) +"bTr" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Medbay Maintenance APC"; + pixel_x = -24 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTs" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTt" = ( +/obj/structure/rack, +/obj/item/weapon/wirecutters, +/obj/item/device/multitool, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/asmaint) +"bTw" = ( +/obj/machinery/chem_master, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/chem_dispenser, +/turf/open/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/toolbox, +/turf/open/floor/plasteel{ + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTz" = ( +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/igniter{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/assembly/timer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteyellowcorner"; + dir = 8 + }, +/area/medical/medbay2) +"bTB" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTC" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "SS13's Chemistry lab, to be used only by qualified and cautious experts."; + name = "Chemistry Lab"; + req_access_txt = "5; 33" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteyellowfull" + }, +/area/medical/medbay2) +"bTD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteyellow" + }, +/area/medical/medbay2) +"bTE" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bTH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bTI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bTJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bTK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTL" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 8; + icon_state = "pipe-j2s"; + sortType = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTQ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bTT" = ( +/obj/machinery/door/window/eastleft{ + dir = 8; + name = "Medical Delivery"; + req_access_txt = "5" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/medical/medbay2) +"bTU" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + freq = 1400; + location = "Medbay" + }, +/obj/structure/plasticflaps{ + opacity = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "loadingarea" + }, +/area/medical/medbay2) +"bTV" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTW" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTX" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTY" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bTZ" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bUa" = ( +/obj/structure/grille, +/obj/item/weapon/shard, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUb" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUc" = ( +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bUd" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bUe" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/mine/abandoned) +"bUf" = ( +/obj/machinery/light/small/built{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bUg" = ( +/obj/structure/bed, +/obj/item/clothing/glasses/regular, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUh" = ( +/obj/structure/closet/l3closet, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUi" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/beaker, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUj" = ( +/obj/structure/reagent_dispensers, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUk" = ( +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUl" = ( +/obj/structure/table, +/obj/item/toy/minimeteor, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bUm" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUn" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/crew_quarters/hor) +"bUo" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/crew_quarters/hor) +"bUp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/crew_quarters/hor) +"bUq" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUs" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUt" = ( +/obj/machinery/suit_storage_unit/rd, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bUu" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/manipulator, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/stack/cable_coil, +/obj/item/weapon/stock_parts/capacitor, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bUv" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bUw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/lab) +"bUz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/lab) +"bUA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bUB" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bUE" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bUF" = ( +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bUG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/medical/genetics) +"bUH" = ( +/turf/closed/wall, +/area/medical/genetics) +"bUI" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northleft{ + dir = 2; + name = "Genetics Desk"; + req_access_txt = "5; 9" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/genetics) +"bUJ" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/genetics) +"bUK" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "The part of Genetics where death is robusted and fed down the nearest disposal unit. Can be exited without ID access via the door button from inside."; + id_tag = "CloningDoor"; + name = "Cloning Lab"; + req_access_txt = "0"; + req_one_access_txt = "5; 9" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/genetics) +"bUL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/vending/medical, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUN" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUR" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Medbay Central"; + dir = 1 + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUT" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bUV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bUW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUY" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bUZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/glass/bottle/toxin{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVa" = ( +/turf/closed/wall/r_wall, +/area/medical/virology) +"bVb" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVc" = ( +/obj/item/stack/rods, +/obj/item/weapon/shard{ + icon_state = "small" + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/mine/abandoned) +"bVd" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVe" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVf" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bVg" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/airless{ + icon_state = "floorgrime" + }, +/area/mine/abandoned) +"bVh" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless, +/area/mine/abandoned) +"bVi" = ( +/obj/structure/table, +/obj/item/weapon/paper/crumpled/bloody, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVj" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bVk" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bVl" = ( +/obj/machinery/computer/rdservercontrol, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVm" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVn" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/displaycase/labcage, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/crew_quarters/hor) +"bVr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/crew_quarters/hor) +"bVs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/weapon/disk/tech_disk, +/obj/item/weapon/disk/design_disk, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bVt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bVu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bVv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/button{ + id = "researchdesk"; + name = "Research desk Shutters"; + pixel_x = 25 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bVw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 13 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bVx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Aft Hallway Central"; + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bVy" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/weapon/tank/internals/emergency_oxygen{ + pixel_x = -8 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bVE" = ( +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVF" = ( +/obj/machinery/computer/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVG" = ( +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Genetics"; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVH" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVI" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVJ" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/syringes, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bVK" = ( +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 1; + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVM" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVN" = ( +/obj/machinery/requests_console{ + department = "Genetics"; + name = "Genetics Requests Console"; + pixel_y = 30 + }, +/obj/structure/table/glass, +/obj/item/weapon/book/manual/medical_cloning, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVO" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the cloning door."; + id = "CloningDoor"; + name = "Cloning Exit Button"; + normaldoorcontrol = 1; + pixel_x = 23; + pixel_y = -5 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22; + pixel_y = 7 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bVP" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVQ" = ( +/obj/machinery/door/airlock/glass_medical{ + desc = "A storage area for important medical supplies, including a medical hardsuit for SAR operations."; + name = "Medbay Storage"; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/medbay2) +"bVR" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVS" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/medical/medbay2) +"bVT" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/glass_medical{ + desc = "The breakroom for the station's diligent Medical staff, suitably insulated from the screams of the injured."; + name = "Medbay Break Room"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/medical/medbay2) +"bVV" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/medbay2) +"bVW" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/toxin{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/toxin, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bVX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVY" = ( +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bVZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/camera{ + c_tag = "Medbay Starboard"; + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/medbay2) +"bWa" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bWb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Virology Access" + }, +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/closet/l3closet, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWe" = ( +/obj/machinery/smartfridge/chemistry/virology, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/structure/sign/deathsposal{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWg" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen/red, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWh" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWi" = ( +/turf/closed/wall, +/area/medical/virology) +"bWj" = ( +/obj/structure/closet/wardrobe/virology_white, +/obj/item/weapon/tank/internals/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWk" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bWl" = ( +/turf/open/space, +/area/mine/abandoned) +"bWm" = ( +/obj/structure/closet, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plating/airless, +/area/mine/abandoned) +"bWn" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged4" + }, +/area/mine/abandoned) +"bWo" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWp" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWq" = ( +/obj/machinery/door/airlock/hatch, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bWr" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/weapon/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue"; + dir = 10 + }, +/area/toxins/lab) +"bWs" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/glass{ + amount = 50; + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWt" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/weapon/stock_parts/matter_bin, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWu" = ( +/obj/item/weapon/stock_parts/console_screen, +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/console_screen, +/obj/item/weapon/stock_parts/console_screen, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWv" = ( +/obj/structure/table/glass, +/obj/item/weapon/stock_parts/micro_laser, +/obj/item/weapon/stock_parts/micro_laser, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/weapon/storage/toolbox/mechanical{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWw" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/toxins/lab) +"bWy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue"; + dir = 6 + }, +/area/toxins/lab) +"bWz" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + icon_state = "pipe-j2s"; + sortType = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bWC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bWD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bWE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/genetics) +"bWF" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bWG" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWI" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bWL" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"bWM" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/rxglasses, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"bWN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bWQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/camera{ + c_tag = "Cloning Lab"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bWR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/structure/table/glass, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWT" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWU" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWV" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/vending/wallmed{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWW" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bWZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXa" = ( +/obj/item/weapon/storage/firstaid/fire{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/fire, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXc" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/medbay2) +"bXd" = ( +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + icon_state = "door_locked"; + id_tag = "virology_airlock_exterior"; + locked = 1; + name = "Virology Exterior Airlock"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/virology) +"bXe" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXf" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/virology{ + autoclose = 0; + frequency = 1449; + icon_state = "door_locked"; + id_tag = "virology_airlock_interior"; + locked = 1; + name = "Virology Interior Airlock"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/virology) +"bXi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXk" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Virologist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bXl" = ( +/obj/machinery/computer/pandemic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/newscaster, +/turf/closed/wall, +/area/medical/virology) +"bXn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXo" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/effect/landmark/start{ + name = "Virologist" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bXp" = ( +/obj/structure/girder, +/turf/open/space, +/area/mine/abandoned) +"bXq" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXr" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXs" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "scimaintroom" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXt" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bXv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Toxins Lab APC"; + pixel_y = 25 + }, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"bXw" = ( +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXx" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXy" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/toxins/mixing) +"bXA" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_y = 32 + }, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXB" = ( +/obj/machinery/status_display, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bXC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plating, +/area/toxins/lab) +"bXD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/lab) +"bXE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research" + }, +/turf/open/floor/plating, +/area/toxins/lab) +"bXF" = ( +/turf/closed/wall, +/area/storage/art) +"bXG" = ( +/obj/structure/table/glass, +/obj/item/device/flashlight/pen, +/obj/item/device/radio/headset/headset_medsci, +/obj/machinery/camera{ + c_tag = "Genetics Research"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXH" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXJ" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXK" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = ""; + name = "Genetics Research"; + req_access_txt = "5; 9" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bXL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXM" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bXN" = ( +/obj/machinery/clonepod, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bXO" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/camera{ + c_tag = "Medbay Storage"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXR" = ( +/obj/structure/closet/secure_closet/medical3, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXS" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"bXU" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/drinks/britcup, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXV" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/weapon/storage/firstaid/o2{ + pixel_x = -2; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXW" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 0; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXX" = ( +/obj/structure/closet/l3closet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXY" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bXZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bYa" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/weapon/storage/box/masks, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"bYb" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 25; + pixel_y = 0; + req_access_txt = "39" + }, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/medbay2) +"bYc" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_exterior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = -25; + pixel_y = 0; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYd" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYe" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Button"; + pixel_x = 25; + pixel_y = 0; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bYg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "virology_airlock_exterior"; + idInterior = "virology_airlock_interior"; + idSelf = "virology_airlock_control"; + name = "Virology Access Console"; + pixel_x = -25 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bYi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bYj" = ( +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/structure/reagent_dispensers/virusfood{ + density = 0; + pixel_x = 30 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/weapon/reagent_containers/dropper, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bYk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/virology) +"bYl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Virology Break Room"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bYm" = ( +/obj/structure/table/glass, +/obj/machinery/microwave{ + pixel_x = -3; + pixel_y = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bYn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bYo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bYp" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bYq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint) +"bYr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/mineral/random/low_chance, +/area/mine/explored) +"bYs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bYt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"bYu" = ( +/turf/open/space, +/area/mine/explored) +"bYv" = ( +/turf/closed/mineral/random/low_chance, +/area/mine/unexplored) +"bYw" = ( +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYx" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYy" = ( +/obj/structure/closet/body_bag, +/obj/item/weapon/melee/classic_baton/telescopic, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYA" = ( +/obj/machinery/button{ + id = "scimaintroom"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bYB" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint2) +"bYC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bYD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYE" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/toxins/mixing) +"bYH" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"bYI" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bYJ" = ( +/obj/structure/tank_dispenser, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/toxins/mixing) +"bYK" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"bYL" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel{ + icon_state = "whitepurple"; + dir = 5 + }, +/area/toxins/mixing) +"bYM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bYN" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bYO" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber, +/obj/machinery/airalarm{ + frequency = 1439; + locked = 0; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bYP" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bYQ" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYR" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYS" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYT" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"bYU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bYV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bYW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bYX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"bYY" = ( +/obj/structure/bed/roller, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitebluecorner" + }, +/area/medical/genetics) +"bYZ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZa" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZb" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZc" = ( +/obj/machinery/computer/cloning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"bZd" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/weapon/storage/belt/medical, +/obj/item/clothing/tie/stethoscope, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZe" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZf" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Medbay"; + departmentType = 1; + name = "Medbay Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"bZg" = ( +/turf/closed/wall/r_wall, +/area/medical/cmo) +"bZh" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"bZi" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"bZj" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"bZk" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"bZl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/requests_console{ + department = "Virology"; + name = "Virology Requests Console"; + pixel_x = -32 + }, +/obj/structure/closet/l3closet/virology, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"bZo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/virology{ + name = "Break Room"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"bZq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZr" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/item/weapon/storage/secure/safe{ + pixel_x = 31 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"bZs" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Virology APC"; + pixel_x = -24 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/medical/virology) +"bZt" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bZu" = ( +/obj/machinery/door/morgue, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bZv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"bZw" = ( +/obj/structure/lattice, +/turf/open/space, +/area/maintenance/asmaint2) +"bZx" = ( +/obj/machinery/door/poddoor{ + id = "mixvent"; + name = "Mix Vent Blast Door" + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZy" = ( +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZz" = ( +/obj/machinery/sparker{ + id = "mixingsparker"; + pixel_x = 25 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"bZA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"bZB" = ( +/obj/machinery/airlock_sensor{ + id_tag = "tox_airlock_sensor"; + master_tag = "tox_airlock_control"; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"bZC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/embedded_controller/radio/airlock_controller{ + airpump_tag = "tox_airlock_pump"; + exterior_door_tag = "tox_airlock_exterior"; + id_tag = "tox_airlock_control"; + interior_door_tag = "tox_airlock_interior"; + pixel_x = -24; + sanitize_external = 1; + sensor_tag = "tox_airlock_sensor" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"bZD" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZF" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 2; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"bZH" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"bZI" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"bZJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bZK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bZL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"bZM" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZO" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"bZP" = ( +/obj/machinery/door/airlock/glass{ + name = "Art Storage" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/storage/art) +"bZQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZR" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZS" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"bZT" = ( +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Art Storage APC"; + pixel_x = -25 + }, +/turf/open/floor/plating, +/area/storage/art) +"bZU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"bZV" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bZW" = ( +/obj/machinery/door/window/eastright{ + name = "Monkey Pen"; + req_access_txt = "9" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZX" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Geneticist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"bZY" = ( +/obj/machinery/computer/scan_consolenew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"bZZ" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/genetics) +"caa" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cab" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/genetics) +"cac" = ( +/obj/machinery/dna_scannernew, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cad" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cae" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"caf" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cag" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cah" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"cai" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"caj" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cak" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cal" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cam" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"can" = ( +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/computer/card/minor/cmo, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cao" = ( +/obj/structure/closet/secure_closet/chemical, +/turf/open/floor/plating, +/area/medical/cmo) +"cap" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"caq" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"car" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cas" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cat" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"cau" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cav" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/camera{ + c_tag = "Virology"; + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"caw" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cax" = ( +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"cay" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"caz" = ( +/obj/machinery/power/solar{ + id = "starboardsolar"; + name = "Starboard Solar Array" + }, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"caA" = ( +/obj/structure/bed, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"caB" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_exterior"; + locked = 1; + name = "Mixing Room Exterior Airlock"; + req_access_txt = "8" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caC" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ + frequency = 1449; + id = "tox_airlock_pump" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caD" = ( +/obj/machinery/door/airlock/glass_research{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "tox_airlock_interior"; + locked = 1; + name = "Mixing Room Interior Airlock"; + req_access_txt = "8" + }, +/turf/open/floor/engine, +/area/toxins/mixing) +"caE" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"caF" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"caJ" = ( +/obj/item/device/assembly/prox_sensor{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = 9; + pixel_y = -2 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_y = 2 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"caK" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/toxins/mixing) +"caL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caN" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"caO" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"caP" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"caQ" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -22; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caR" = ( +/obj/structure/table/glass, +/obj/item/weapon/airlock_painter, +/obj/machinery/camera{ + c_tag = "Art Storage"; + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caS" = ( +/obj/structure/table/glass, +/obj/item/device/camera_film, +/obj/item/device/camera, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/art) +"caT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/storage/art) +"caU" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"caV" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caW" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caX" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caY" = ( +/obj/item/weapon/storage/box/monkeycubes, +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"caZ" = ( +/obj/item/weapon/storage/box/disks, +/obj/structure/table/glass, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/genetics) +"cba" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"cbb" = ( +/obj/machinery/light, +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurplecorner" + }, +/area/medical/genetics) +"cbc" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/genetics) +"cbd" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbe" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbf" = ( +/obj/machinery/light, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbh" = ( +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/genetics) +"cbi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbk" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/machinery/light, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbl" = ( +/obj/structure/table/glass, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/mask/muzzle, +/obj/item/device/radio/intercom{ + frequency = 1485; + name = "Station Intercom (Medbay)"; + pixel_y = -29 + }, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbm" = ( +/obj/structure/table/glass, +/obj/item/weapon/hand_labeler, +/obj/item/weapon/gun/syringe, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbn" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/camera{ + c_tag = "Medbay Break Room"; + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbo" = ( +/obj/structure/table/glass, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cbp" = ( +/obj/structure/table/glass, +/obj/item/clothing/tie/stethoscope, +/obj/item/clothing/tie/stethoscope, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cbq" = ( +/obj/machinery/door/airlock/glass_command{ + desc = "The workplace of the station's foremost doctor of med-TURN ON THOSE FUCKING SUIT SENSORS."; + name = "Chief Medical Officer's Office"; + req_access_txt = "40" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbr" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbs" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbt" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cbu" = ( +/obj/effect/decal/cleanable/blood, +/obj/item/weapon/scalpel, +/turf/open/floor/plating, +/area/medical/cmo) +"cbv" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cby" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/glass_virology{ + name = "Isolation Room"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cbA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cbB" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cbC" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbE" = ( +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cbF" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cbG" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall/r_wall, +/area/toxins/test_area) +"cbH" = ( +/turf/closed/wall/r_wall, +/area/toxins/test_area) +"cbI" = ( +/turf/closed/wall, +/area/mine/explored) +"cbJ" = ( +/obj/structure/closet, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/mine/explored) +"cbK" = ( +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cbL" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4; + frequency = 1441; + id = "air_in" + }, +/turf/open/floor/engine/vacuum, +/area/toxins/mixing) +"cbM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + on = 1 + }, +/obj/structure/sign/fire{ + pixel_y = -32 + }, +/obj/machinery/light/small, +/turf/open/floor/engine, +/area/toxins/mixing) +"cbN" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/button/door{ + id = "mixvent"; + name = "Mixing Room Vent Control"; + pixel_x = -25; + pixel_y = 5; + req_access_txt = "7" + }, +/obj/machinery/button/ignition{ + id = "mixingsparker"; + pixel_x = -25; + pixel_y = -5 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"cbO" = ( +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"cbP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"cbQ" = ( +/obj/item/device/assembly/signaler{ + pixel_y = 8 + }, +/obj/item/device/assembly/signaler{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/device/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/device/assembly/signaler{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"cbR" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/toxins/mixing) +"cbS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cbT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cbU" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Genetics Research Maintenance"; + req_access_txt = "5; 9" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cbV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/medical{ + desc = "Temporary storage for departed organisms, mostly the crew."; + name = "Morgue"; + req_access_txt = "6;5" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics) +"cbW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/medical{ + desc = "Temporary storage for departed organisms, mostly the crew."; + name = "Morgue"; + req_access_txt = "6;5" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cbX" = ( +/turf/closed/wall, +/area/medical/morgue) +"cbY" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cbZ" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"cca" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccb" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccc" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel{ + icon_state = "whitebluecorner" + }, +/area/medical/medbay2) +"ccd" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"cce" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccf" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccg" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cch" = ( +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Chief Medical Officer" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cci" = ( +/obj/machinery/computer/med_data/laptop, +/obj/structure/table/glass, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer Requests Console"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccj" = ( +/turf/open/floor/plating, +/area/medical/cmo) +"cck" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/medical/virology) +"ccl" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccn" = ( +/obj/machinery/door/airlock/glass_virology{ + name = "Monkey Pen"; + req_access_txt = "39" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cco" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"ccp" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"ccq" = ( +/obj/structure/rack, +/obj/item/weapon/storage/toolbox/emergency, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccr" = ( +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"ccs" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Fore"; + network = list("SS13","Toxins") + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"cct" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'BOMB RANGE"; + name = "BOMB RANGE" + }, +/turf/closed/wall, +/area/mine/explored) +"ccu" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccv" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccw" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Toxins Launch Room APC"; + pixel_x = -25 + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ccx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ccy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/toxins/mixing) +"ccz" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"ccA" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/mixing) +"ccB" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warnwhitecorner" + }, +/area/toxins/mixing) +"ccC" = ( +/obj/item/device/transfer_valve{ + pixel_x = -5 + }, +/obj/item/device/transfer_valve{ + pixel_x = -5 + }, +/obj/item/device/transfer_valve, +/obj/item/device/transfer_valve, +/obj/item/device/transfer_valve{ + pixel_x = 5 + }, +/obj/item/device/transfer_valve{ + pixel_x = 5 + }, +/obj/structure/table/glass, +/obj/machinery/camera{ + c_tag = "Toxins Lab"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/mixing) +"ccD" = ( +/obj/structure/table/glass, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/obj/item/weapon/wrench, +/obj/item/weapon/screwdriver, +/turf/open/floor/plasteel{ + icon_state = "whitepurplecorner" + }, +/area/toxins/mixing) +"ccE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"ccF" = ( +/obj/item/device/assembly/timer{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/device/assembly/timer{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/device/assembly/timer{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/device/assembly/timer, +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 11; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/toxins/mixing) +"ccG" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Aft Hallway APC"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccH" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccI" = ( +/obj/structure/rack, +/obj/item/device/radio/off, +/obj/item/device/flashlight, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccJ" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ccK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Genetics Research APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/genetics) +"ccL" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccN" = ( +/obj/machinery/camera{ + c_tag = "Medbay Morgue" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccP" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccQ" = ( +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccR" = ( +/obj/structure/table/glass, +/obj/item/device/camera, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ccS" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ccT" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccV" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2) +"ccW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ccX" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/cmo) +"ccY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/suit_storage_unit/cmo, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ccZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cda" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/item/weapon/stamp/cmo, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cdb" = ( +/obj/structure/filingcabinet/filingcabinet, +/obj/machinery/camera{ + c_tag = "Chief Medical Officer's Office"; + dir = 8 + }, +/obj/machinery/keycard_auth{ + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cdc" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/medical/cmo) +"cdd" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cde" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/virology) +"cdj" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/virology) +"cdk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdl" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cdm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/virology) +"cdn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdo" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdp" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cdq" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cdr" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber"; + req_access_txt = "0" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cds" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"cdt" = ( +/obj/machinery/door/airlock/external{ + name = "External Airlock"; + req_access_txt = "0" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdu" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdv" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdw" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cdz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cdA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cdB" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdC" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdD" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/mixing) +"cdE" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Toxins Lab"; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/toxins/mixing) +"cdF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cdG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cdH" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_one_access_txt = "5; 6; 9; 12; 22; 26; 28; 33; 37; 40" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdK" = ( +/obj/structure/cable/cyan, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "Chapel APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/chapel/main) +"cdL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdM" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdO" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdP" = ( +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cdQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Morgue Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "6; 28" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/morgue) +"cdR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdS" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdT" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdU" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdW" = ( +/obj/machinery/door/airlock/medical{ + name = "Autopsy Room"; + req_access_txt = "6" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cdX" = ( +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cdY" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"cdZ" = ( +/obj/structure/cable/white{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/table/glass, +/obj/item/weapon/cartridge/chemistry{ + pixel_y = 2 + }, +/obj/item/weapon/cartridge/medical, +/obj/item/weapon/cartridge/medical{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/item/weapon/cartridge/medical{ + pixel_x = -2; + pixel_y = 6 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cea" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceb" = ( +/obj/structure/closet/secure_closet/CMO, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cec" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/medical/cmo) +"ced" = ( +/obj/structure/closet/secure_closet/personal/patient, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cee" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet/medical, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cef" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"ceg" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/device/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel{ + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"ceh" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/cold{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/glass/bottle/flu_virion, +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cei" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/spray/cleaner, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/item/weapon/hand_labeler, +/obj/item/device/radio/headset/headset_med, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitegreencorner" + }, +/area/medical/virology) +"cej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cek" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitegreen" + }, +/area/medical/virology) +"cel" = ( +/mob/living/carbon/monkey, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitegreen" + }, +/area/medical/virology) +"cem" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cen" = ( +/turf/closed/wall/r_wall, +/area/maintenance/starboardsolar) +"ceo" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cep" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ceq" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Toxins Test Chamber APC"; + pixel_x = 24 + }, +/obj/structure/cable/pink, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cer" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ces" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cet" = ( +/obj/machinery/door/airlock/research{ + desc = "Make sure to pack some snacks."; + name = "Toxins Launch Room"; + req_access_txt = "8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ceu" = ( +/turf/closed/wall, +/area/medical/research{ + name = "Research Division" + }) +"cev" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cew" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cex" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cey" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cez" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceB" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ceC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"ceD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/sortjunction{ + dir = 1; + icon_state = "pipe-j2s"; + sortType = 12 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceE" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ceG" = ( +/turf/closed/wall, +/area/chapel/main) +"ceH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/chapel/main) +"ceI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chapel Maintenance"; + req_access_txt = "22"; + req_one_access_txt = "0" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/chapel/main) +"ceJ" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ceK" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/device/healthanalyzer, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"ceL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceM" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceN" = ( +/obj/machinery/newscaster{ + hitstaken = 1; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceO" = ( +/obj/structure/closet/wardrobe/white/medical, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whiteblue" + }, +/area/medical/medbay2) +"ceP" = ( +/obj/structure/table/glass, +/obj/item/clothing/tie/stethoscope, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceQ" = ( +/obj/machinery/power/apc{ + name = "Chief Medical Officer's Office APC"; + pixel_y = -25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceR" = ( +/obj/machinery/light, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceS" = ( +/obj/structure/bed/dogbed{ + desc = "A comfy-looking cat bed. You can even strap your pet in, in case the gravity turns off."; + name = "Runtime's bed" + }, +/obj/item/toy/cattoy, +/mob/living/simple_animal/pet/cat/Runtime, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceT" = ( +/obj/structure/table/glass, +/obj/item/clothing/glasses/hud/health, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"ceU" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/starboardsolar) +"ceV" = ( +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceW" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceX" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"ceY" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"ceZ" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cfa" = ( +/turf/open/floor/plasteel/airless{ + dir = 1; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cfb" = ( +/obj/machinery/door/airlock/external{ + name = "Toxins Test Chamber"; + req_access_txt = "0" + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/toxins/test_area) +"cfc" = ( +/obj/structure/table/glass, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfd" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cff" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = 22 + }, +/obj/machinery/camera{ + c_tag = "Toxins Launch Room"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cfh" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/newscaster{ + dir = 8; + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfi" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science{ + pixel_x = 2; + pixel_y = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vending/snack, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfm" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cfn" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cfo" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfp" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfr" = ( +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cft" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cfu" = ( +/obj/item/clothing/head/ushanka, +/obj/item/clothing/under/soviet, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cfv" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka, +/obj/item/toy/snappop, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cfw" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfx" = ( +/obj/structure/bodycontainer/crematorium, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfy" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfz" = ( +/obj/structure/closet/wardrobe/chaplain_black, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfA" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfC" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cfD" = ( +/obj/structure/closet/coffin, +/obj/machinery/camera{ + c_tag = "Chapel Coffin Storage" + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"cfE" = ( +/obj/structure/closet/coffin, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"cfF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfG" = ( +/obj/structure/table/glass, +/obj/item/weapon/crowbar, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfH" = ( +/obj/structure/table/optable{ + desc = "Used to examine the departed for medical purposes."; + name = "Autopsy Table" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfI" = ( +/obj/structure/table/glass, +/obj/item/weapon/scalpel, +/obj/item/weapon/retractor, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cfJ" = ( +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/turf/closed/wall/r_wall, +/area/medical/cmo) +"cfK" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfL" = ( +/obj/structure/cable/cyan{ + icon_state = "2-4" + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfM" = ( +/obj/structure/closet/crate, +/obj/item/weapon/electronics/apc, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfN" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfO" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/rods, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfP" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/structure/cable/cyan{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfQ" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfR" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cfS" = ( +/obj/machinery/door/airlock/engineering{ + name = "Aft Starboard Solar Access"; + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfT" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfU" = ( +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfV" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfW" = ( +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"cfY" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cfZ" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cga" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cgb" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"cgc" = ( +/obj/machinery/power/tracker, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/starboard) +"cgd" = ( +/turf/open/floor/plasteel/airless{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/test_area) +"cge" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 8 + }, +/area/toxins/test_area) +"cgf" = ( +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"cgg" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/test_area) +"cgh" = ( +/turf/open/floor/plasteel/airless{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/test_area) +"cgi" = ( +/turf/open/floor/plasteel/airless{ + dir = 8; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cgj" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warning"; + dir = 1 + }, +/area/toxins/test_area) +"cgk" = ( +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/test_area) +"cgl" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgm" = ( +/obj/structure/table/glass, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the test chamber."; + dir = 4; + layer = 4; + name = "Toxins Test Chamber Monitor"; + network = list("Test"); + pixel_x = -30 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgn" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgp" = ( +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgq" = ( +/obj/machinery/door/airlock/research{ + desc = "Make sure to pack some snacks."; + name = "Toxins Launch Room"; + req_access_txt = "8" + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cgr" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgs" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgu" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cgv" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgw" = ( +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgx" = ( +/obj/machinery/light, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgy" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgz" = ( +/obj/machinery/camera{ + c_tag = "Research Division Central"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgC" = ( +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cgE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cgF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cgG" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cgH" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgJ" = ( +/obj/machinery/button/crematorium{ + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgK" = ( +/obj/machinery/camera{ + c_tag = "Chapel Office"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cgM" = ( +/obj/effect/landmark/start{ + name = "Chaplain" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cgN" = ( +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cgO" = ( +/obj/machinery/door/airlock{ + name = "Coffin Storage"; + req_access_txt = "27" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cgP" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgQ" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgR" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/bodybags{ + pixel_x = 3; + pixel_y = 3 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cgS" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Medbay APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/medbay2) +"cgT" = ( +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgU" = ( +/obj/structure/cable/cyan, +/obj/machinery/power/apc{ + name = "Incinerator APC"; + pixel_y = -24 + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/incinerator) +"cgV" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/maintenance/asmaint) +"cgW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/asmaint) +"cgX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cgZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cha" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chb" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Aft Starboard Solar APC"; + pixel_x = -26; + pixel_y = 3 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"chc" = ( +/obj/structure/chair/stool, +/obj/machinery/camera{ + c_tag = "Aft Starboard Solar Control"; + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"chd" = ( +/obj/machinery/power/solar_control{ + id = "starboardsolar"; + name = "Aft Starboard Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/starboardsolar) +"che" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"chf" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "warning" + }, +/area/toxins/test_area) +"chg" = ( +/turf/open/floor/plasteel/airless{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/test_area) +"chh" = ( +/turf/open/floor/plasteel/airless{ + dir = 10; + icon_state = "warning" + }, +/area/toxins/test_area) +"chi" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + dir = 6; + icon_state = "warning" + }, +/area/toxins/test_area) +"chj" = ( +/obj/structure/table/glass, +/obj/machinery/button/massdriver{ + id = "toxinsdriver"; + pixel_x = 25 + }, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/doppler_array, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/turf/open/floor/plasteel, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chm" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chn" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cho" = ( +/obj/structure/table/glass, +/obj/item/device/flashlight/lamp, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chp" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/landmark/start{ + name = "Scientist" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chq" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"chr" = ( +/obj/machinery/door/airlock/glass_research{ + name = "Research Division Break Room"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurplefull" + }, +/area/medical/research{ + name = "Research Division" + }) +"chs" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cht" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"chu" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"chv" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"chw" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"chx" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"chy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitecorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chA" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chB" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"chC" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chD" = ( +/obj/machinery/camera{ + c_tag = "Chapel Crematorium"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chE" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chF" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"chG" = ( +/obj/item/weapon/nullrod, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"chH" = ( +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"chI" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"chJ" = ( +/obj/structure/closet/coffin, +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/chapel/main) +"chK" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Morgue APC"; + pixel_y = 25 + }, +/obj/structure/cable/cyan{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/medical/morgue) +"chL" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chM" = ( +/obj/structure/cable/cyan{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"chN" = ( +/turf/closed/wall, +/area/maintenance/incinerator) +"chO" = ( +/obj/machinery/door/airlock/maintenance{ + desc = "The 'grey toxins' area."; + name = "Incinerator Access"; + req_access_txt = "12" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/asmaint) +"chP" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/maintenance/incinerator) +"chQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/maintenance/incinerator) +"chR" = ( +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"chS" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"chT" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/toxins/test_area) +"chU" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/toxins/test_area) +"chV" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/toxins/test_area) +"chW" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Starboard"; + dir = 8; + network = list("SS13","Test") + }, +/turf/open/floor/plating/airless{ + icon_state = "warnplate"; + dir = 1 + }, +/area/toxins/test_area) +"chX" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chY" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"chZ" = ( +/obj/machinery/door/window/southleft{ + name = "Mass Driver Door"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "loadingarea" + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"cia" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/cups, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cib" = ( +/obj/structure/table/glass, +/obj/item/weapon/folder/white, +/obj/item/weapon/pen, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cic" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"cid" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cie" = ( +/obj/structure/closet/secure_closet/security/science, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 9 + }, +/area/medical/research{ + name = "Research Division" + }) +"cif" = ( +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching various laboratories."; + name = "Research Monitor"; + network = list("RD"); + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Security Post"; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cig" = ( +/obj/structure/table/glass, +/obj/item/weapon/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/weapon/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cih" = ( +/obj/structure/table/glass, +/obj/machinery/recharger{ + pixel_y = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cii" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cij" = ( +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cik" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cil" = ( +/obj/structure/closet/firecloset, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"cim" = ( +/obj/structure/sign/nosmoking_2{ + pixel_y = 32 + }, +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) +"cin" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cio" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cip" = ( +/obj/machinery/door/airlock{ + name = "Aft Emergency Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ciq" = ( +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cir" = ( +/obj/item/weapon/storage/box/lights/mixed, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cis" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cit" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciu" = ( +/obj/machinery/door/airlock{ + name = "Crematorium"; + req_access_txt = "27" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"civ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciw" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cix" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"ciy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"ciz" = ( +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ciA" = ( +/obj/structure/cable/cyan{ + icon_state = "1-4" + }, +/obj/structure/cable/cyan{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciB" = ( +/obj/structure/cable/cyan{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciC" = ( +/turf/closed/wall/r_wall, +/area/atmos) +"ciD" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Firefighting equipment"; + req_access_txt = "12" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ciE" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciF" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/obj/machinery/camera{ + c_tag = "Incinerator"; + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciH" = ( +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciI" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/structure/sign/deathsposal{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciJ" = ( +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "incinerator_airlock_exterior"; + idSelf = "incinerator_access_control"; + idInterior = "incinerator_airlock_interior"; + name = "Incinerator Access Console"; + pixel_x = 24; + pixel_y = -8; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas Pump" + }, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/maintenance/incinerator) +"ciK" = ( +/obj/machinery/doorButtons/access_button{ + idDoor = "incinerator_airlock_exterior"; + layer = 3.1; + idSelf = "incinerator_access_control"; + name = "Incinerator airlock control"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/structure/sign/fire{ + pixel_y = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ciL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"ciM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciN" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = 32 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciO" = ( +/obj/machinery/door/poddoor{ + id = "disvent"; + name = "Incinerator Vent" + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ciP" = ( +/obj/structure/lattice, +/turf/open/space, +/area/maintenance/incinerator) +"ciQ" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Port"; + dir = 4; + network = list("SS13","Test") + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"ciR" = ( +/turf/closed/indestructible/riveted{ + name = "Super Reinforced Wall" + }, +/area/toxins/test_area) +"ciS" = ( +/obj/item/device/radio/beacon, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ciT" = ( +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/turf/open/floor/plating/airless, +/area/toxins/test_area) +"ciU" = ( +/obj/machinery/door/poddoor{ + id = "toxinsdriver"; + name = "Toxins Launcher Bay Door" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciV" = ( +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciW" = ( +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciX" = ( +/obj/machinery/mass_driver{ + dir = 8; + id = "toxinsdriver" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2{ + icon_state = "toxtest"; + name = "Toxins Launch Room" + }) +"ciY" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Research"; + departmentType = 2; + name = "Research Requests Console"; + pixel_x = -30 + }, +/obj/structure/closet/wardrobe/science_white, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"ciZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cja" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjb" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjc" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cjd" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cje" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjf" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/medical/research{ + name = "Research Division" + }) +"cjg" = ( +/obj/structure/filingcabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjh" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"cji" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"cjj" = ( +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cjl" = ( +/obj/machinery/door/airlock/research{ + desc = "The secured entrance to the main Research Division."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjo" = ( +/obj/machinery/door/airlock/research{ + desc = "The secured entrance to the main Research Division."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"cjp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjq" = ( +/obj/structure/rack, +/obj/item/device/radio{ + pixel_y = 6 + }, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjr" = ( +/obj/machinery/space_heater, +/turf/open/floor/plating, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cjs" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cju" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"cjv" = ( +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjy" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjz" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_y = 26 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/tinted/fulltile, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjB" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + broadcasting = 1; + frequency = 1480; + name = "Confessional Intercom"; + pixel_y = 26 + }, +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cjC" = ( +/obj/structure/cable/cyan, +/obj/machinery/power/apc{ + name = "Atmospherics APC"; + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/atmos) +"cjD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjE" = ( +/obj/structure/closet/crate, +/obj/item/device/assembly/prox_sensor, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjF" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjG" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjH" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjI" = ( +/obj/machinery/portable_atmospherics/pump, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"cjJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel, +/area/atmos) +"cjK" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cjL" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cjM" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"cjN" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjO" = ( +/obj/structure/closet, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cjP" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = -28 + }, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjQ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjR" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4 + }, +/mob/living/simple_animal/mouse, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjS" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8 + }, +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/obj/machinery/meter, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/incinerator) +"cjU" = ( +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "incinerator_airlock_interior"; + locked = 1; + name = "Mixing Room Interior Airlock"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 8 + }, +/area/maintenance/incinerator) +"cjV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"cjW" = ( +/obj/machinery/door/airlock/glass{ + autoclose = 0; + frequency = 1449; + heat_proof = 1; + icon_state = "door_locked"; + id_tag = "incinerator_airlock_exterior"; + locked = 1; + name = "Mixing Room Exterior Airlock"; + req_access_txt = "12" + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"cjX" = ( +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"cjY" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplate" + }, +/area/toxins/test_area) +"cjZ" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/toxins/test_area) +"cka" = ( +/turf/open/floor/plating/airless{ + icon_state = "warnplatecorner" + }, +/area/toxins/test_area) +"ckb" = ( +/turf/closed/wall/r_wall, +/area/toxins/storage) +"ckc" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckd" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 10 + }, +/area/medical/research{ + name = "Research Division" + }) +"cke" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckf" = ( +/turf/open/floor/plasteel{ + icon_state = "red" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckg" = ( +/obj/structure/table/glass, +/obj/machinery/firealarm{ + dir = 1; + pixel_x = -3; + pixel_y = -24 + }, +/obj/machinery/light_switch{ + name = "light switch "; + pixel_x = 11; + pixel_y = -22 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "ResearchFoyer"; + name = "Research Door Control"; + normaldoorcontrol = 1; + pixel_y = -4 + }, +/obj/machinery/button/door{ + id = "Biohazard"; + name = "Biohazard Shutter Control"; + pixel_y = 6; + req_access_txt = "47" + }, +/turf/open/floor/plasteel{ + icon_state = "red"; + dir = 6 + }, +/area/medical/research{ + name = "Research Division" + }) +"ckh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"cki" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/medical/research{ + name = "Research Division" + }) +"ckj" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckk" = ( +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Research Divison Access"; + dir = 1; + network = list("SS13","RD") + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "warnwhite" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "whitehall" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"ckn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/chapel/main) +"cko" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Office"; + req_access_txt = "22" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ckp" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/chapel/main) +"ckq" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/chapel/main) +"ckr" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cks" = ( +/obj/machinery/door/morgue{ + name = "Confession Booth (Chaplain)"; + req_access_txt = "22" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"ckt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/atmos) +"cku" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ckv" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"ckx" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cky" = ( +/turf/open/floor/plasteel, +/area/atmos) +"ckz" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckB" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ckC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ckD" = ( +/obj/structure/rack, +/obj/item/clothing/suit/fire/firefighter, +/obj/item/clothing/mask/gas, +/obj/item/weapon/extinguisher, +/obj/item/clothing/head/hardhat/red, +/obj/item/clothing/glasses/meson, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"ckE" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckG" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckH" = ( +/obj/machinery/button/ignition{ + id = "Incinerator"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/machinery/button/door{ + id = "disvent"; + name = "Incinerator Vent Control"; + pixel_y = -24; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/maintenance/incinerator) +"ckI" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/maintenance/incinerator) +"ckJ" = ( +/obj/machinery/doorButtons/access_button{ + idDoor = "incinerator_airlock_interior"; + idSelf = "incinerator_access_control"; + name = "Incinerator airlock control"; + pixel_x = 24; + pixel_y = 8 + }, +/obj/structure/sign/fire{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/incinerator) +"ckK" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "air_in" + }, +/obj/machinery/sparker{ + id = "Incinerator"; + pixel_x = -25 + }, +/turf/open/floor/engine/vacuum, +/area/maintenance/incinerator) +"ckL" = ( +/turf/open/floor/plasteel/airless{ + dir = 9; + icon_state = "warning" + }, +/area/toxins/test_area) +"ckM" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + dir = 5; + icon_state = "warning" + }, +/area/toxins/test_area) +"ckN" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"ckO" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"ckP" = ( +/turf/closed/wall, +/area/toxins/storage) +"ckQ" = ( +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"ckR" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckS" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckT" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckU" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitepurplecorner" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckV" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/machinery/camera{ + c_tag = "Research Divison South"; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckW" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckX" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Security Post"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whiteredfull" + }, +/area/medical/research{ + name = "Research Division" + }) +"ckY" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 8 + }, +/area/medical/research{ + name = "Research Division" + }) +"ckZ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "Biohazard"; + name = "Biohazard Containment Door" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cla" = ( +/obj/machinery/door/airlock/research{ + desc = "Emergency showers for hygiene or chemical incidents."; + id_tag = "ResearchFoyer"; + name = "Research Division Access"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel, +/area/medical/research{ + name = "Research Division" + }) +"clb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "whitecorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"clc" = ( +/obj/item/weapon/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/weapon/pen, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cld" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/harebell{ + pixel_y = 4 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cle" = ( +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{ + pixel_y = 2 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clf" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clg" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cli" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clj" = ( +/obj/machinery/requests_console{ + department = "Chapel"; + departmentType = 2; + name = "Chapel Requests Console"; + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clk" = ( +/obj/machinery/pipedispenser/disposal, +/turf/open/floor/plasteel, +/area/atmos) +"cll" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 0; + name = "Waste to Filter"; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clm" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cln" = ( +/obj/structure/rack, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/atmos) +"clo" = ( +/obj/item/weapon/crowbar, +/obj/item/weapon/wrench, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/item/weapon/grenade/chem_grenade/metalfoam, +/obj/structure/table, +/turf/open/floor/plasteel, +/area/atmos) +"clp" = ( +/obj/machinery/space_heater, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"clq" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Main to Pumps"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cls" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Filters to Waste"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clt" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics North East"; + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/atmos) +"clu" = ( +/turf/closed/wall/r_wall, +/area/maintenance/asmaint) +"clv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/starboard) +"clw" = ( +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clx" = ( +/turf/open/floor/plasteel, +/area/toxins/storage) +"cly" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clz" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clA" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/obj/machinery/camera{ + c_tag = "Toxins Storage"; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"clB" = ( +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access_txt = "8" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/toxins/storage) +"clC" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"clI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clJ" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clK" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"clL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 4 + }, +/area/medical/research{ + name = "Research Division" + }) +"clM" = ( +/obj/machinery/camera{ + c_tag = "Research Division Aft Starboard"; + network = list("SS13","RD") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clN" = ( +/obj/machinery/newscaster/security_unit{ + pixel_z = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "whitered"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "whiteredcorner"; + dir = 1 + }, +/area/medical/research{ + name = "Research Division" + }) +"clP" = ( +/obj/machinery/shower{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clQ" = ( +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clR" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"clS" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"clT" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/item/candle, +/obj/structure/table/wood, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clU" = ( +/obj/item/candle, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"clW" = ( +/obj/machinery/camera{ + c_tag = "Chapel Port"; + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"clX" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"clY" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"clZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cma" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"cmb" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "chapel" + }, +/area/chapel/main) +"cmc" = ( +/turf/open/floor/carpet, +/area/chapel/main) +"cmd" = ( +/obj/machinery/pipedispenser, +/turf/open/floor/plasteel, +/area/atmos) +"cme" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmh" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmi" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmj" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Waste"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmk" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cml" = ( +/obj/machinery/door/window/eastright, +/turf/open/floor/plasteel, +/area/atmos) +"cmm" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cmn" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/atmos) +"cmo" = ( +/turf/open/floor/plasteel/airless{ + dir = 4; + icon_state = "warningcorner" + }, +/area/toxins/test_area) +"cmp" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/toxins/storage) +"cmq" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/toxins/storage) +"cmr" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"cms" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/toxins/storage) +"cmt" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research) +"cmv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cmz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/chapel/main) +"cmA" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cmB" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cmC" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cmD" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cmE" = ( +/obj/item/candle, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cmF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cmG" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/pipedispenser/disposal/transit_tube, +/turf/open/floor/plasteel, +/area/atmos) +"cmH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmI" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmJ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Distro" + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmK" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmL" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmM" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cmN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmO" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 4; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmP" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cmQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Toxins Maintenance"; + req_access_txt = "8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cmR" = ( +/obj/structure/sign/biohazard, +/turf/closed/wall/r_wall, +/area/medical/research{ + name = "Research Division" + }) +"cmS" = ( +/obj/machinery/door/airlock/research{ + name = "Xenobiology"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmU" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmV" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel{ + icon_state = "freezerfloor" + }, +/area/medical/research{ + name = "Research Division" + }) +"cmW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cmX" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 17 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cmY" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Foyer"; + req_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cmZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cna" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnc" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel"; + req_access_txt = "0" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cne" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnf" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cng" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cni" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics North"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnl" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnm" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnn" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cno" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Air to Distro"; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnp" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnq" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cnr" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cns" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cnt" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cnu" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cnv" = ( +/obj/machinery/power/apc{ + cell_type = 5000; + dir = 8; + name = "Toxins Storage APC"; + pixel_x = -25 + }, +/obj/structure/cable/pink, +/turf/open/floor/plating, +/area/toxins/storage) +"cnw" = ( +/turf/closed/wall/r_wall, +/area/toxins/xenobiology) +"cnx" = ( +/obj/structure/disposaloutlet, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cny" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cnz" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cnA" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cnB" = ( +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cnC" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cnD" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cnE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cnF" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology North"; + dir = 6; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite"; + dir = 5 + }, +/area/toxins/xenobiology) +"cnG" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio3"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cnH" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cnI" = ( +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cnJ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Research Maintenance"; + req_access_txt = "47" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cnK" = ( +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cnL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/research{ + name = "Experimentation Lab"; + req_access_txt = "7" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cnM" = ( +/turf/closed/wall/r_wall, +/area/teleporter) +"cnN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cnO" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cnP" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel Foyer"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cnQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"cnR" = ( +/obj/machinery/door/airlock/glass{ + name = "Chapel"; + req_access_txt = "0" + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/carpet, +/area/chapel/main) +"cnT" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/carpet, +/area/chapel/main) +"cnU" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/chapel/main) +"cnV" = ( +/obj/machinery/camera{ + c_tag = "Chapel Starboard"; + dir = 8 + }, +/turf/open/floor/carpet, +/area/chapel/main) +"cnW" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cnX" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel, +/area/atmos) +"cnY" = ( +/turf/closed/wall, +/area/atmos) +"cnZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall, +/area/atmos) +"coa" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cob" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"coc" = ( +/obj/machinery/camera{ + c_tag = "Toxins Test Chamber Aft"; + dir = 1; + network = list("SS13","Test") + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless, +/area/toxins/test_area) +"cod" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"coe" = ( +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cof" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cog" = ( +/mob/living/simple_animal/slime, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coh" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coi" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"coj" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cok" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"col" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"com" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"con" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"coo" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cop" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"coq" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cor" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cos" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cot" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cou" = ( +/obj/machinery/camera{ + c_tag = "Experimentor Lab"; + dir = 2; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cov" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"cow" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"cox" = ( +/obj/machinery/shieldwallgen, +/turf/open/floor/plasteel{ + icon_state = "bot"; + dir = 1 + }, +/area/teleporter) +"coy" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"coz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/junction{ + icon_state = "pipe-j2"; + dir = 2 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"coA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/chapel/main) +"coB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"coC" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"coD" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"coE" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "chapel" + }, +/area/chapel/main) +"coF" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel, +/area/atmos) +"coG" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coH" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister, +/obj/item/weapon/wrench, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coI" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coJ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"coK" = ( +/obj/structure/table, +/obj/item/device/t_scanner, +/obj/item/device/t_scanner, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/welding, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -22 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/atmos) +"coL" = ( +/obj/structure/table, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/item/weapon/storage/belt/utility, +/obj/machinery/atmospherics/components/unary/vent_pump{ + on = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/multitool, +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmospherics Requests Console"; + pixel_x = 0; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coM" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/stack/sheet/glass{ + amount = 50 + }, +/obj/item/device/multitool, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/item/stack/sheet/metal{ + amount = 50 + }, +/obj/structure/fireaxecabinet{ + pixel_x = 0; + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coN" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/camera{ + c_tag = "Atmospherics Storage"; + dir = 2 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coO" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"coP" = ( +/obj/structure/closet/secure_closet/atmospherics, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"coQ" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"coR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"coS" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"coT" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"coU" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"coV" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"coW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "air_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coY" = ( +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"coZ" = ( +/obj/machinery/seed_extractor, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpa" = ( +/obj/item/weapon/storage/backpack, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpb" = ( +/obj/item/weapon/reagent_containers/glass/beaker, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpc" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio2"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cpd" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio2"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cpe" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpf" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cpg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cph" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cpi" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpj" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cpk" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio3"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cpl" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cpm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cpq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cpr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cps" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cpt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/teleporter) +"cpu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cpv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cpw" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpx" = ( +/obj/machinery/camera{ + c_tag = "Chapel Foyer"; + dir = 8 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = 22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpy" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = -22 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpz" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cpA" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "chapel" + }, +/area/chapel/main) +"cpB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cpC" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "chapel" + }, +/area/chapel/main) +"cpD" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpE" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpF" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpG" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cpH" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 4; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpI" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Air to Port"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpJ" = ( +/obj/machinery/door/airlock/glass_atmos{ + desc = "The Atmos storage area, with all the gear you could want."; + name = "Atmospherics Storage"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"cpK" = ( +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cpL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpM" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cpN" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/computer/atmos_control/tank{ + input_tag = "air_in"; + name = "Air Tank Supply Control"; + output_tag = "air_out"; + sensors = list("air_sensor" = "Tank") + }, +/turf/open/floor/plasteel, +/area/atmos) +"cpO" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "air_sensor" + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cpP" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cpQ" = ( +/obj/structure/table, +/obj/item/weapon/storage/bag/plants, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpR" = ( +/obj/item/weapon/reagent_containers/glass/bucket, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cpS" = ( +/turf/closed/wall, +/area/toxins/xenobiology) +"cpT" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Pens"; + dir = 4; + network = list("SS13","RD") + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpU" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cpV" = ( +/obj/structure/table, +/obj/item/weapon/folder, +/obj/item/weapon/folder, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpW" = ( +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpX" = ( +/obj/structure/closet/radiation, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cpY" = ( +/obj/item/device/radio/beacon, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"cpZ" = ( +/obj/machinery/camera{ + c_tag = "Teleporter Room"; + dir = 5; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cqa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"cqb" = ( +/obj/machinery/teleport/hub, +/obj/item/weapon/crowbar, +/turf/open/floor/plating, +/area/teleporter) +"cqc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/chapel/main) +"cqd" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqe" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqf" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqg" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqh" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqi" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/chapel/main) +"cqj" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqk" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cql" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Connector Ports"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqm" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqn" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqo" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cqp" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqq" = ( +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/atmos) +"cqr" = ( +/obj/structure/sign/atmosplaque{ + desc = "This plaque commemorates the rise of the LINDA administration at CentCom, and the advent of a new era."; + name = "\improper LINDA plaque"; + pixel_x = 32 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cqs" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqt" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cqu" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqv" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cqw" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cqx" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"cqy" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cqz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "air_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + name = "air floor"; + nitrogen = 10580; + oxygen = 2644 + }, +/area/atmos) +"cqA" = ( +/obj/structure/table, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cqB" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/lights/mixed, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/asmaint2) +"cqC" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cqD" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cqE" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "xenobio4"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"cqF" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cqG" = ( +/obj/structure/table, +/obj/item/device/radio/off, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cqJ" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/obj/machinery/hologram/holopad, +/turf/open/floor/plasteel, +/area/teleporter) +"cqK" = ( +/turf/open/floor/plasteel, +/area/teleporter) +"cqL" = ( +/obj/machinery/teleport/station, +/turf/open/floor/plating, +/area/teleporter) +"cqM" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqN" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqO" = ( +/obj/machinery/door/airlock/glass{ + name = "Escape Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/primary/aft{ + name = "Aft Hallway" + }) +"cqP" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqQ" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Ports"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cqS" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"cqT" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel, +/area/atmos) +"cqU" = ( +/obj/machinery/computer/atmos_control, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cqV" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cqW" = ( +/turf/open/floor/plating/asteroid/airless, +/area/atmos) +"cqX" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/mine/explored) +"cqY" = ( +/obj/item/clothing/shoes/sneakers/black, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cqZ" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/obj/item/weapon/poster/contraband, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cra" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"crb" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"crc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crd" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cre" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"crf" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/toxins/explab) +"crh" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = 0; + pixel_y = 6 + }, +/obj/item/weapon/pen, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"cri" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/weapon/clipboard, +/obj/item/weapon/book/manual/experimentor, +/obj/item/device/multitool, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/computer/rdconsole/experiment, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/machinery/button/door{ + id = "telelab"; + name = "Test Chamber Blast Doors"; + pixel_x = 25; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/explab) +"crl" = ( +/obj/machinery/computer/teleporter, +/turf/open/floor/plating, +/area/teleporter) +"crm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "bluecorner" + }, +/area/hallway/secondary/exit) +"crn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cro" = ( +/obj/structure/disposalpipe/sortjunction{ + dir = 2; + icon_state = "pipe-j2s"; + sortType = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"crp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"crq" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crr" = ( +/obj/machinery/firealarm{ + pixel_y = 25 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crs" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Escape Hallway North" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cru" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crw" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"crx" = ( +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cry" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"crz" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"crA" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/table, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/atmos) +"crB" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"crC" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"crD" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"crE" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"crF" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics West"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"crG" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"crH" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 1; + on = 1; + tag = "" + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Mix"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) +"crI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/plasteel, +/area/atmos) +"crJ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"crK" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel, +/area/atmos) +"crL" = ( +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"crM" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"crN" = ( +/obj/machinery/light/small, +/obj/machinery/button/door{ + id = "bar1"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crO" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "bar1"; + name = "Private Room 1" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crP" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crQ" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crR" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crS" = ( +/obj/structure/sink/kitchen{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"crT" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio1"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"crU" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "xenobio1"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"crV" = ( +/obj/structure/closet/l3closet/scientist, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crW" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"crX" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio4"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"crY" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/turf/open/floor/plating, +/area/toxins/explab) +"crZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "telelab"; + name = "test chamber blast door" + }, +/turf/open/floor/engine, +/area/toxins/explab) +"csa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csc" = ( +/obj/machinery/door/airlock/command{ + name = "Teleporter Room"; + req_access_txt = "17" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/teleporter) +"csd" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "blue"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cse" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csf" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/hallway/secondary/exit) +"csg" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/exit) +"csh" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral" + }, +/area/hallway/secondary/exit) +"csi" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/secondary/exit) +"csj" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csk" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"csl" = ( +/obj/machinery/door/airlock/atmos{ + desc = "The station's Atmospherics department, responsible for keeping air in your lungs and fire out."; + name = "Atmospherics"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"csm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/atmos) +"csn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cso" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"csq" = ( +/obj/machinery/door/airlock/atmos{ + desc = "The station's Atmospherics department, responsible for keeping air in your lungs and fire out."; + name = "Atmospherics"; + req_access_txt = "24" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"csr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/open/floor/plasteel, +/area/atmos) +"css" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cst" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csu" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"csv" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/atmos) +"csw" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csy" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csz" = ( +/obj/machinery/computer/atmos_control, +/obj/machinery/light, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/atmos) +"csA" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Central East"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"csB" = ( +/obj/machinery/button/door{ + id = "mixedvent"; + name = "Gas Mix Emergency Vent Control"; + pixel_x = 24; + pixel_y = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"csC" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"csD" = ( +/obj/effect/landmark{ + name = "xeno_spawn"; + pixel_x = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"csE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"csF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"csG" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Center"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"csH" = ( +/turf/open/floor/engine, +/area/toxins/explab) +"csI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "bluecorner" + }, +/area/hallway/secondary/exit) +"csJ" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=AfCH1"; + location = "Escape" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csK" = ( +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/exit) +"csL" = ( +/turf/closed/wall, +/area/hallway/secondary/exit) +"csM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"csN" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"csO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"csP" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"csQ" = ( +/turf/open/floor/plasteel{ + icon_state = "yellow"; + dir = 10 + }, +/area/atmos) +"csR" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics Access"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel{ + icon_state = "yellow" + }, +/area/atmos) +"csT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 6; + icon_state = "yellow" + }, +/area/atmos) +"csU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/atmos) +"csV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"csW" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel, +/area/atmos) +"csX" = ( +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/plasteel, +/area/atmos) +"csY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel, +/area/atmos) +"csZ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel, +/area/atmos) +"cta" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctb" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ctc" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + tag = "icon-intact (NORTHEAST)"; + icon_state = "intact"; + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctd" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cte" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "To Mix"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"ctf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"ctg" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cth" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "mix_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"cti" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctj" = ( +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctk" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "bar2"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctl" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "bar2"; + name = "Private Room 2" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctm" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 6; + pixel_y = -1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctn" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cto" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctp" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"ctq" = ( +/obj/machinery/shieldwallgen{ + req_access = list(55) + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/toxins/xenobiology) +"ctr" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cts" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"ctt" = ( +/obj/machinery/monkey_recycler, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctu" = ( +/obj/structure/table/glass, +/obj/item/weapon/extinguisher{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/weapon/extinguisher, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctv" = ( +/obj/machinery/processor{ + desc = "A machine used to process slimes and retrieve their extract."; + name = "Slime Processor" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"ctw" = ( +/obj/structure/table/reinforced, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/obj/machinery/button/door{ + id = "xenobio5"; + name = "Containment Blast Doors"; + req_access_txt = "55" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/toxins/xenobiology) +"ctx" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cty" = ( +/obj/machinery/r_n_d/experimentor, +/turf/open/floor/engine, +/area/toxins/explab) +"ctz" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/engine, +/area/toxins/explab) +"ctA" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/table/glass, +/obj/item/weapon/hand_tele, +/turf/open/floor/plasteel, +/area/teleporter) +"ctB" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/toolbox/emergency, +/turf/open/floor/plasteel, +/area/teleporter) +"ctC" = ( +/obj/structure/table/glass, +/obj/machinery/light_switch{ + pixel_y = -22 + }, +/obj/item/weapon/tank/internals/oxygen, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel, +/area/teleporter) +"ctD" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/camera{ + c_tag = "Escape Hallway Central"; + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"ctE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1 + }, +/obj/machinery/door/firedoor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"ctF" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 4 + }, +/area/hallway/secondary/exit) +"ctG" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"ctH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"ctI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"ctJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/atmos) +"ctK" = ( +/obj/machinery/door/airlock/glass_atmos{ + desc = "The control and monitoring station for Atmospherics."; + name = "Atmospherics Front Desk"; + req_access_txt = "24" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowfull" + }, +/area/atmos) +"ctL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/atmos) +"ctM" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctQ" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6; + initialize_directions = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctR" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"ctS" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Air to Mix"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 10; + initialize_directions = 12 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctU" = ( +/obj/machinery/computer/atmos_control/tank{ + frequency = 1441; + input_tag = "mix_in"; + name = "Gas Mix Tank Control"; + output_tag = "mix_in"; + sensors = list("mix_sensor" = "Tank") + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"ctV" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "mix_sensor" + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"ctW" = ( +/obj/item/clothing/shoes/sneakers/black{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctX" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/obj/item/clothing/under/rank/clown/sexy, +/obj/item/clothing/under/sexymime, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"ctY" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/toxins/xenobiology) +"ctZ" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen{ + dir = 4; + name = "Test Chamber Monitor"; + network = list("Xeno"); + pixel_y = 2 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cua" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cub" = ( +/obj/machinery/computer/camera_advanced/xenobio, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuc" = ( +/obj/machinery/smartfridge/extract, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cud" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cue" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cuf" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cug" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cuh" = ( +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=4"; + freq = 1400; + location = "Atmospherics" + }, +/obj/structure/plasticflaps, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "loadingarea" + }, +/area/atmos) +"cui" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + layer = 2.7; + name = "Atmospherics Deliveries"; + req_access_txt = "24" + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/atmos) +"cuj" = ( +/obj/machinery/airalarm{ + pixel_y = 20 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuk" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellowcorner" + }, +/area/atmos) +"cul" = ( +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/atmos) +"cum" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/atmos) +"cun" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_Toxins = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuo" = ( +/obj/machinery/atmospherics/components/trinary/mixer{ + dir = 4; + node1_concentration = 0.8; + node2_concentration = 0.2; + on = 1; + pixel_x = 0; + pixel_y = 0; + target_pressure = 4500 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cup" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuq" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cur" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Pure to Mix"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cus" = ( +/obj/machinery/atmospherics/pipe/manifold4w/green/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cut" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/meter, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuu" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cuv" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/atmos) +"cuw" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) +"cux" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + frequency = 1441; + id = "mix_in"; + pixel_y = 0 + }, +/turf/open/floor/engine{ + name = "vacuum floor"; + nitrogen = 0.01; + oxygen = 0.01 + }, +/area/atmos) +"cuy" = ( +/obj/effect/landmark{ + name = "blobstart" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuz" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology Containment Pen"; + dir = 5; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuA" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuB" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuC" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/structure/sign/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cuD" = ( +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/xenobiology) +"cuE" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/button/ignition{ + id = "Xenobio"; + pixel_x = -6; + pixel_y = -2 + }, +/obj/machinery/button/door{ + id = "Xenolab"; + name = "Test Chamber Blast Doors"; + pixel_x = 4; + pixel_y = -2; + req_access_txt = "55" + }, +/obj/item/weapon/wrench, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cuF" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuG" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cuH" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "xenobio5"; + name = "Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cuI" = ( +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Experimention Lab APC"; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/toxins/explab) +"cuJ" = ( +/obj/machinery/power/apc{ + dir = 1; + name = "Teleporter APC"; + pixel_y = 25 + }, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/teleporter) +"cuK" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Escape Shuttle Hallway APC"; + pixel_y = 25 + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cuL" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "7; 8; 12; 17; 29; 30; 42; 47; 55; 63" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/hallway/secondary/exit) +"cuM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cuN" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cuO" = ( +/obj/machinery/newscaster, +/turf/closed/wall, +/area/hallway/secondary/exit) +"cuP" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/northleft{ + dir = 4; + layer = 2.9; + name = "Atmospherics Desk"; + req_access_txt = "24" + }, +/obj/item/weapon/folder/yellow, +/obj/item/weapon/pen, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/atmos) +"cuQ" = ( +/obj/effect/landmark/start{ + name = "Atmospheric Technician" + }, +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4; + on = 1 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Front Desk"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cuS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/atmos) +"cuT" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8; + initialize_directions = 11 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuU" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "N2 to Pure"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuV" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cuW" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Unfiltered to Mix"; + on = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cuX" = ( +/obj/structure/toilet{ + cistern = 1; + desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one has a heart drawn on the cistern."; + dir = 4 + }, +/obj/machinery/button/door{ + id = "barbath"; + name = "Bolts Control"; + normaldoorcontrol = 1; + pixel_y = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuY" = ( +/obj/structure/sink{ + pixel_y = 32 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cuZ" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + id_tag = "barbath"; + name = "Bathroom" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cva" = ( +/obj/structure/closet/secure_closet/bar{ + req_access_txt = "25" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvb" = ( +/obj/machinery/light/small, +/obj/machinery/vending/sovietsoda, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvc" = ( +/obj/structure/rack, +/obj/effect/landmark/costume, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvd" = ( +/obj/machinery/sparker{ + id = "Xenobio"; + pixel_x = -25 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cve" = ( +/obj/item/device/radio/beacon, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvf" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + unacidable = 1 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvg" = ( +/obj/machinery/door/window/northleft{ + dir = 8; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/pink{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvh" = ( +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Containment Pen"; + req_access_txt = "55" + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cvi" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cvj" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cvk" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cvl" = ( +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvm" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvn" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvo" = ( +/obj/structure/closet/crate, +/obj/item/weapon/crowbar/red, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cvp" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cvs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/toy/carpplushie, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvx" = ( +/obj/structure/chair, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvy" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvz" = ( +/obj/machinery/computer/arcade, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvA" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvB" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel{ + icon_state = "neutralcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cvC" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cvD" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/atmos) +"cvE" = ( +/obj/machinery/computer/station_alert, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvG" = ( +/obj/machinery/requests_console{ + department = "Atmospherics"; + departmentType = 4; + name = "Atmospherics Requests Console"; + pixel_y = -32 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvH" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/atmos) +"cvI" = ( +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvJ" = ( +/obj/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvK" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "n2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvL" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvM" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cvN" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvO" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "o2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvP" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 to Pure"; + on = 0 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvQ" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "co2"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvR" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cvS" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "plasma"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvT" = ( +/obj/machinery/atmospherics/components/trinary/filter{ + dir = 4; + filter_type = "n2o"; + flipped = 0; + on = 1 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvU" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cvV" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/atmos) +"cvW" = ( +/mob/living/simple_animal/crab/Coffee, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvX" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cvY" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/pink, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/toxins/xenobiology) +"cvZ" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwa" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cwb" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cwc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink{ + d2 = 2; + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cwd" = ( +/turf/open/floor/bluegrid{ + name = "airless floor"; + nitrogen = 0; + oxygen = 0; + temperature = 2.7 + }, +/area/toxins/xenobiology) +"cwe" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/hallway/secondary/exit) +"cwf" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cwg" = ( +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cwh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwi" = ( +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/secondary/exit) +"cwj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwk" = ( +/turf/open/floor/plasteel{ + icon_state = "yellowcorner" + }, +/area/hallway/secondary/exit) +"cwl" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cwm" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "n2_in"; + name = "Nitrogen Supply Control"; + output_tag = "n2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwn" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel, +/area/atmos) +"cwo" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwp" = ( +/obj/structure/window/reinforced, +/obj/machinery/computer/atmos_control/tank{ + input_tag = "o2_in"; + name = "Oxygen Supply Control"; + output_tag = "o2_out"; + sensors = list("n2_sensor" = "Tank") + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwq" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8; + initialize_directions = 11 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwr" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cws" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "co2_in"; + name = "Carbon Dioxide Supply Control"; + output_tag = "co2_out"; + sensors = list("co2_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwt" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/atmos) +"cwu" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "tox_in"; + name = "Plasma Supply Control"; + output_tag = "tox_out"; + sensors = list("tox_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cwv" = ( +/obj/machinery/computer/atmos_control/tank{ + input_tag = "n2o_in"; + name = "Nitrous Oxide Supply Control"; + output_tag = "n2o_out"; + sensors = list("n2o_sensor" = "Tank") + }, +/obj/structure/window/reinforced, +/turf/open/floor/plasteel, +/area/atmos) +"cww" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/maintenance/portsolar) +"cwx" = ( +/turf/closed/wall/r_wall, +/area/maintenance/portsolar) +"cwy" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/preopen{ + id = "Xenolab"; + name = "Test Chamber Containment Door" + }, +/obj/structure/cable/pink, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 6 + }, +/area/toxins/xenobiology) +"cwz" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwA" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Gas Pump" + }, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cwB" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cwC" = ( +/obj/structure/cable/pink{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cwD" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/bluegrid{ + name = "airless floor"; + nitrogen = 0; + oxygen = 0; + temperature = 2.7 + }, +/area/toxins/xenobiology) +"cwE" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel{ + dir = 9; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwF" = ( +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/chair, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_x = 0; + pixel_y = 25 + }, +/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/machinery/camera{ + c_tag = "Escape Hallway West" + }, +/obj/effect/landmark/start{ + name = "Assistant" + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/chair, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwM" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/item/weapon/lighter, +/turf/open/floor/plasteel{ + dir = 1; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cwN" = ( +/turf/open/floor/plasteel{ + icon_state = "warningcorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cwO" = ( +/obj/machinery/hologram/holopad, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cwT" = ( +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"cwU" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwV" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South West"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwW" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwX" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2 Outlet Pump"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwY" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 Outlet Pump"; + on = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cwZ" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxa" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "CO2 Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxb" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Plasma Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxc" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2O Outlet Pump"; + on = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxd" = ( +/obj/machinery/camera{ + c_tag = "Atmospherics South East"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/atmos) +"cxe" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxf" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxg" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/obj/machinery/power/smes{ + charge = 1e+006 + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxh" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE" + }, +/turf/closed/wall/r_wall, +/area/maintenance/portsolar) +"cxi" = ( +/obj/machinery/light, +/turf/open/floor/engine, +/area/toxins/xenobiology) +"cxj" = ( +/obj/machinery/shieldwallgen{ + req_access = list(55) + }, +/obj/structure/cable/pink{ + d2 = 4; + icon_state = "0-4" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 5 + }, +/area/toxins/xenobiology) +"cxk" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/structure/cable/pink{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cxl" = ( +/obj/structure/cable/pink{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warnwhite" + }, +/area/toxins/xenobiology) +"cxm" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/stack/sheet/mineral/plasma, +/obj/item/weapon/storage/box/monkeycubes, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cxn" = ( +/obj/machinery/power/apc{ + name = "Xenobiology APC"; + pixel_y = -25 + }, +/obj/structure/cable/pink, +/obj/structure/table/glass, +/obj/item/weapon/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/storage/box/syringes, +/turf/open/floor/plasteel{ + icon_state = "white" + }, +/area/toxins/xenobiology) +"cxo" = ( +/obj/machinery/camera{ + c_tag = "Xenobiology South"; + dir = 1; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warnwhitecorner" + }, +/area/toxins/xenobiology) +"cxp" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/pink, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cxq" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maintenance Access"; + req_access_txt = "0"; + req_one_access_txt = "7; 8; 12; 17; 29; 30; 42; 47; 55; 63" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 4 + }, +/area/maintenance/asmaint2) +"cxr" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxs" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxt" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxu" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "delivery" + }, +/area/hallway/secondary/exit) +"cxv" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_x = 0 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cxw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4; + on = 1 + }, +/obj/item/device/radio/beacon, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/hallway/secondary/exit) +"cxy" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/exit) +"cxz" = ( +/obj/machinery/camera{ + c_tag = "Escape Hallway East"; + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/hallway/secondary/exit) +"cxA" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plating, +/area/atmos) +"cxB" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating, +/area/atmos) +"cxC" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plating/airless, +/area/atmos) +"cxD" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/atmos) +"cxE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating/airless, +/area/atmos) +"cxF" = ( +/obj/machinery/door/airlock/external{ + name = "Atmosphereics External Access"; + req_access_txt = "24" + }, +/turf/open/floor/plating, +/area/atmos) +"cxG" = ( +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cxH" = ( +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cxI" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + name = "Solar Maintenance"; + req_access = null; + req_access_txt = "10; 13" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxJ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxK" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxL" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxM" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxN" = ( +/obj/machinery/door/airlock/engineering{ + name = "Aft Port Solar Access"; + req_access_txt = "10" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cxO" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cxP" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Xenobiology Maintenance"; + req_access_txt = "47" + }, +/turf/open/floor/plating, +/area/toxins/xenobiology) +"cxQ" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel{ + dir = 10; + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxR" = ( +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxS" = ( +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxT" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_y = -32 + }, +/obj/machinery/light, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxU" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxV" = ( +/obj/machinery/camera{ + c_tag = "Escape Hallway Aft"; + dir = 1 + }, +/turf/open/floor/plasteel{ + icon_state = "warning" + }, +/area/hallway/secondary/exit) +"cxW" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cxX" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) +"cxY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/space, +/area/space/nearstation) +"cxZ" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/space, +/area/space/nearstation) +"cya" = ( +/turf/open/floor/plating, +/area/atmos) +"cyb" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plating, +/area/space) +"cyc" = ( +/obj/machinery/power/solar_control{ + id = "portsolar"; + name = "Aft Port Solar Control" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cyd" = ( +/obj/structure/chair/stool, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cye" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Aft Port Solar APC"; + pixel_x = 23; + pixel_y = 2 + }, +/obj/machinery/camera{ + c_tag = "Aft Port Solar Control"; + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/maintenance/portsolar) +"cyf" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyg" = ( +/obj/machinery/door/airlock/external{ + name = "Escape Airlock" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyi" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyj" = ( +/obj/machinery/door/airlock/external{ + name = "Shuttle Brig Airlock"; + req_access_txt = "63; 42" + }, +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyk" = ( +/obj/structure/grille, +/turf/closed/wall/r_wall, +/area/atmos) +"cyl" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/atmos) +"cym" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/atmos) +"cyn" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyo" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/item/weapon/weldingtool, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyp" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyq" = ( +/obj/structure/chair, +/obj/item/clothing/mask/cigarette/cigar/havana, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyr" = ( +/obj/structure/chair/comfy/brown, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cys" = ( +/obj/structure/chair, +/turf/open/floor/plating, +/area/maintenance/asmaint2) +"cyt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner" + }, +/area/hallway/secondary/exit) +"cyu" = ( +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/hallway/secondary/exit) +"cyv" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 1 + }, +/area/hallway/secondary/exit) +"cyw" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "n2_in" + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyx" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2_sensor" + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "n2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "o2_in" + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyA" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "o2_sensor" + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "o2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyC" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "co2_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyD" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "co2_sensor" + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "co2_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyF" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "tox_in"; + pixel_y = 1 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyG" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "tox_sensor" + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "tox_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyI" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1; + frequency = 1441; + id = "n2o_in"; + pixel_y = 1 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyJ" = ( +/obj/machinery/air_sensor{ + frequency = 1441; + id_tag = "n2o_sensor" + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1; + external_pressure_bound = 0; + frequency = 1441; + id_tag = "n2o_out"; + initialize_directions = 1; + internal_pressure_bound = 4000; + on = 1; + pressure_checks = 2; + pump_direction = 0 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"cyL" = ( +/turf/open/space, +/area/maintenance/asmaint2) +"cyM" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 8 + }, +/area/hallway/secondary/exit) +"cyN" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating{ + icon_state = "warnplatecorner"; + dir = 4 + }, +/area/hallway/secondary/exit) +"cyO" = ( +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyP" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyQ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "n2 floor"; + nitrogen = 100000; + oxygen = 0 + }, +/area/atmos) +"cyR" = ( +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyS" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyT" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "o2 floor"; + nitrogen = 0; + oxygen = 100000 + }, +/area/atmos) +"cyU" = ( +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyV" = ( +/obj/machinery/portable_atmospherics/canister/carbon_dioxide, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + carbon_dioxide = 50000; + name = "co2 floor"; + nitrogen = 0; + oxygen = 0 + }, +/area/atmos) +"cyX" = ( +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyY" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cyZ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine{ + name = "plasma floor"; + nitrogen = 0; + oxygen = 0; + toxins = 70000 + }, +/area/atmos) +"cza" = ( +/turf/open/floor/engine/n2o, +/area/atmos) +"czb" = ( +/obj/machinery/portable_atmospherics/canister/nitrous_oxide{ + valve_open = 1 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"czc" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/engine/n2o, +/area/atmos) +"czd" = ( +/obj/structure/lattice, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cze" = ( +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/space/nearstation) +"czf" = ( +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"czg" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s6"; + dir = 2 + }, +/area/shuttle/escape) +"czh" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14"; + dir = 2 + }, +/area/shuttle/escape) +"czi" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/escape) +"czj" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czk" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s10"; + dir = 2 + }, +/area/shuttle/escape) +"czl" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czm" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czn" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 10; + height = 13; + id = "emergency_home"; + name = "emergency evac bay"; + width = 28 + }, +/obj/docking_port/mobile/emergency{ + dir = 2; + dwidth = 10; + height = 13; + width = 28 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czo" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall12"; + dir = 2 + }, +/area/shuttle/escape) +"czp" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czq" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czr" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czs" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czt" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czu" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"czv" = ( +/obj/structure/shuttle/engine/propulsion{ + icon_state = "propulsion"; + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czw" = ( +/obj/structure/shuttle/engine/heater{ + icon_state = "heater"; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czx" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall11"; + dir = 2 + }, +/area/shuttle/escape) +"czy" = ( +/obj/structure/ore_box, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czz" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czA" = ( +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czB" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall7"; + dir = 2 + }, +/area/shuttle/escape) +"czC" = ( +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czD" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall3"; + dir = 2 + }, +/area/shuttle/escape) +"czE" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czF" = ( +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czG" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czH" = ( +/obj/machinery/power/solar{ + id = "portsolar"; + name = "Port Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"czI" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall15"; + dir = 2 + }, +/area/shuttle/escape) +"czJ" = ( +/turf/closed/wall/shuttle{ + icon_state = "swallc4"; + dir = 2 + }, +/area/shuttle/escape) +"czK" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall13"; + dir = 2 + }, +/area/shuttle/escape) +"czL" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_f13" + }, +/area/shuttle/escape) +"czM" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_f11" + }, +/area/shuttle/escape) +"czN" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"czO" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"czP" = ( +/obj/structure/lattice, +/obj/structure/grille{ + density = 0; + icon_state = "brokengrille" + }, +/turf/open/space, +/area/space/nearstation) +"czQ" = ( +/obj/machinery/suit_storage_unit, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czR" = ( +/obj/machinery/door/airlock/mining{ + name = "Emergency Shuttle Storage"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor2" + }, +/area/shuttle/escape) +"czS" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"czT" = ( +/obj/structure/closet, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czU" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/crowbar, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czV" = ( +/obj/structure/chair, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czW" = ( +/obj/structure/table, +/obj/item/weapon/storage/firstaid/fire, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czX" = ( +/obj/structure/closet/emcloset, +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czY" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"czZ" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"cAa" = ( +/turf/closed/wall/shuttle{ + icon_state = "swallc1"; + dir = 2 + }, +/area/shuttle/escape) +"cAb" = ( +/obj/machinery/door/airlock/glass_security{ + name = "Emergency Shuttle Brig"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAc" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAd" = ( +/obj/machinery/computer/station_alert, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAe" = ( +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAf" = ( +/obj/structure/chair/office/light{ + name = "Chief Engineer" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAg" = ( +/obj/structure/chair/office/light{ + name = "Captain" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAh" = ( +/obj/structure/chair/office/light{ + name = "Head of Security" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAi" = ( +/obj/item/device/radio/intercom{ + broadcasting = 0; + name = "Station Intercom (General)"; + pixel_y = 23 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAj" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall1"; + dir = 2 + }, +/area/shuttle/escape) +"cAk" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAl" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAm" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAn" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/shuttle/red, +/area/shuttle/escape) +"cAo" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin{ + pixel_x = -1; + pixel_y = 6 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAp" = ( +/obj/machinery/computer/emergency_shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAq" = ( +/obj/structure/table, +/obj/item/weapon/folder/blue, +/obj/item/weapon/pen, +/obj/machinery/recharger, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAr" = ( +/obj/machinery/ai_slipper, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAs" = ( +/obj/machinery/door/airlock/glass_command{ + name = "Emergency Shuttle Cockpit"; + req_access_txt = "19" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAt" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAu" = ( +/obj/machinery/status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall7"; + dir = 2 + }, +/area/shuttle/escape) +"cAv" = ( +/obj/machinery/computer/communications, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAw" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Research Director" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAx" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Head of Personnel" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAy" = ( +/obj/structure/chair/office/light{ + dir = 1; + name = "Chief Medical Officer" + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAz" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAA" = ( +/obj/machinery/status_display, +/turf/closed/wall/shuttle{ + icon_state = "swall2"; + dir = 2 + }, +/area/shuttle/escape) +"cAB" = ( +/obj/machinery/computer/crew, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAC" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Escape Shuttle Infirmary"; + req_access_txt = "5" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAD" = ( +/obj/machinery/door/airlock/glass_medical{ + id_tag = null; + name = "Escape Shuttle Infirmary"; + req_access_txt = "0" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAE" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAF" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -30 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAG" = ( +/obj/machinery/door/airlock{ + name = "Emergency Shuttle Restroom" + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAH" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAI" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAK" = ( +/obj/structure/table, +/obj/item/weapon/extinguisher, +/obj/item/weapon/crowbar, +/obj/machinery/recharger, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) +"cAL" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 8 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAM" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s9"; + dir = 2 + }, +/area/shuttle/escape) +"cAN" = ( +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cAO" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall_s5"; + dir = 2 + }, +/area/shuttle/escape) +"cAP" = ( +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAQ" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAR" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/open/floor/plating/airless{ + icon_state = "asteroidplating" + }, +/area/solar/port) +"cAS" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAT" = ( +/obj/structure/table, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/obj/item/weapon/scalpel, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAU" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAV" = ( +/obj/structure/table, +/obj/item/weapon/circular_saw, +/obj/item/weapon/cautery{ + pixel_x = 4 + }, +/obj/item/weapon/surgical_drapes, +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) +"cAW" = ( +/turf/closed/wall/shuttle, +/area/shuttle/escape) +"cAX" = ( +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/open/floor/plasteel/airless{ + icon_state = "solarpanel" + }, +/area/solar/port) +"cAY" = ( +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_se"; + name = "southeast of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) +"cAZ" = ( +/obj/docking_port/stationary{ + area_type = /area/space; + dheight = 9; + dir = 2; + dwidth = 5; + height = 22; + id = "syndicate_s"; + name = "south of station"; + turf_type = /turf/open/space; + width = 18 + }, +/turf/open/space, +/area/space) + +( +1, +1, +1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafaagaagaagaagaagaafaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaiaajaakaalaamaanaanaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaoaajaajaapaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaqaajaajaajaaraajaasaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataafaafaafaauaafaafaafaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaawaajaaxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaayaajaazaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaafaafaafaafaafaayaajaazaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaaDaafaayaajaazaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaabaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaaFaaGaafaayaajaazaafaafaaHaaIaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaabaabaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaaLaafaajaajaajaafaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaabaabaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaajaaMaajaajaajaaNaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaCaajaajaajaaOaajaajaajaaPaajaajaaQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaafaafaafaafaafaafaaRaajaajaafaafaafaafaafaafaaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaSaaSaaTaaUaaVaafaajaajaajaafaaWaaXaaYaaZabaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaajaajaajaaFaajabbaajaajaajabcaajaaFaajaaFabdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacabeaacaacaabaabaabaabaabaabaababeaabaabaabaabaabaababfabfabfaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabgaajaajaajaajabhaajaajaajabiaajaajaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacabeaacaacaacaacaacaacaacaacaacaacaabaabaababeaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaababfabfaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabgaajaajabjabkaafablabmablaafabnaboaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaababpabpabpabpabpabeabpabpabpabpabpabpaabaababfabfaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaajaajabqaafaafaafabrabsaajaafaafaafaajaajaajaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaababeaabaabaabaabaabaabaabaabaabaabaabaababpabeabpabpabpabpabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaababfabfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabtabuabvaafaaaaafabwabwabwaafaaaaafabxabyabzaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEabpabeabpabpabpabpabpabpabpabpabpabpabpabpabpabeabpabpabpabpabpabpabpabpabpabpabpabpabpabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaababfabfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafabwabwabwaafaaaaatabAabBabCaavaaaaafabwabwabwaafaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaababfabfabfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatabAabBabCaavaaaaaaaaaaaaaaaaaaaaaaatabAabBabCaavaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaababfabfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabEabFabGabGabGabHabHabGabGabGabGabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaababfaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabKabLabLabMabNabOabMabLabLabLabPabGabGabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaababfaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabLabSabLabSabLabHabTabUabVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaababfaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabWabSabLabSabLabXabLabLabHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabeabeabeabeabeabeaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabRabLabSabLabSabLabSabLabSabLabHabTabYabVaaaabZacaacbaaaaccacdaceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEabDabJabKabLabLacfacgachaciabLabLabLabPabGabGacjaaaackaclackaaaacmacnacmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEabDacoacpabXabGabGabHabHabGabGacqabGacrabDabDabDabDackacsackactacmacuacmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEacvacwacvabDabDabDabDacvacwacvabDabDabDabDacxacyaczacAacBacCacDacEacxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEacvacFacvabDabDabDabDacvacFacvabDabDabDabDacxacGacFacHacxacGacFacIacxacxacvacvaaaaaaacJacKacKacLacKacKacKacMacKacKacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacPacxacvacwacvacxacvacvacxacvacwacvacxacvacvacxacxacxacQacRacxacxacSacRacxacTacUacvacvacvacLacVacVacVacVacVacVacVacWacXacYacNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpabpaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacZadaacxadbadcadcaddadcadeadfadgadgadhadiadgadgadjadkadladmadnadoadpadqadradoadoadsadtacFaduadvadwadwadwadwadwadwadwadwadwadwadxaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaaaabpaabaabaabaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacPacxadyadzadAadAadBadCadDadEadFadGadHadIadIadJadKadIadLadMadMadNadOadMadPadoadpadQacvadRacLadSadSadSadSadSadSadSadTadTadUadVaaaaaaaaaaaaaaaaaaabeaaaadWadWabpabpaabaabaabaabaabaacaabaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOadXacxadYadZaeaaebaecaedaeeaefaegacxacxacxacxaehaeiaejaekaejaejaelaejaejaejaemaemacvaaaaaaaenacKacKacLacKacKacKacMacKacKadVaaaaaaaaaaaaaaaaaaaaaabeadWadWaabaabaabaabaabaabaabaabaabaabaacaacaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOaeoacxaepadZaeqaeqaeraeqaesaefaetacxacFaeuacxaevaewaexaeyaezaeAaeBaeCaeCaejacxacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWabeadWaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabacOaeoacxaeDadZaeEaeFaeGaeEaeHaefaeIaeJacFaeKacxaeLaeMaeNaeOaePaeQaeBaeRaeSaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaababeaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOacOacOacOacOacOaeoacxaeTadZaebaeUaeVaeWaeXaefaeYacxaeZafaacxafbaewafcaeRaeyaeRafdafeafeaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWaabaababeaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabacOaffafgafhafiafiafiafjafkaflafmafmafmafnafoafpafqacxafrafsacxaftafuafvafwafxafyafzafAafeaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWaabaabafBafBafBafBafBafBafBafBafBafBaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOafCafDacOaeoaeoafEacxafFafGafHafIadoafJafKaeIadoafLafLafLafLafLafMafLaejaejaejaejaejaejaejaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaabaabafBafNafOafPafQafBafRafSafTafBafBaabaabaabafUafUafUaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOafVafWafXafYaeoafZafZagaagaagbagaagcafZagdageagfafLaggaghagiagjagkafLaglagmagnagoagpagqagragragsagsagsagsagsagsagsagsagsagsagsagsagsagsagsagtaaaadWadWaabaabaabafBaguafQagvafQagwagxaguagxagyafBafUafUafUafUagzagAafUafUafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOacOacOacOagBaeoafZagCagDagDagEagFagGafZagHagIagJafLaggagKagLagMagkafLagNagOagPagQagRagSaaEaaEabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDagTabpabpaabaabaabaabafBagUagVagWagVagXagYagZahaahbafBafUahcahdaheahfahgahdahgafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaabaabaabacOacOacOacOacOacOacOacOacOacOacOacOahhahiahjahkahlahmahnahoahpahpahqahrahsahtagIagJafLahuahvahwahxahyafLahzahAahBagSahCagSaaEaaEabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDabDahDabpaabaabaabaabaabafBahEahFahGafQafQafQahHaguahIafUafUahJahKahLahMahLahNahOafUafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaabaabaabacOahPahlahlahlahlahlahQahRahlahlahlahSahTahUahVahWafZahXahYahZaiaaibaicafZaidagIagJafLaieaifaigaihaiiafLagNaijaikailaimagSaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagSagSainagSagSaabagSagSagSafBaioafQafQafQaipafQaguaguaiqafUahgahKairafUafUafUaisahNahgafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaabaabaabaabaabacOaitaiuahUahUahUaivahUahUahUahUahUaiwaitaixaixaixaiyaiyaiyaiyaiyaixaixaixaizaiAaiBaiCaiDaiEaiFaiGaiHafLagNaiIaiJaiKaiLagSaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagSaiMaiNaiOagSaabagSaiPaiQaiRaiSaiTagVaiUagvaiVagZaiWaiXafUaiYahfafUafUaiZafUafUahfajaafUaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaabaabaabaabaabaabaabaabaabaabacOaitagBaeoaeoaeoaeoaeoaeoaeoaeoaeoagBaitaixajbajcaiyajdajeajfaiyajgajhaixajiajjajkajlajmajnajoajpajqafLagNajrajsagSagSagSagSagSagSajtajuajuajuajuajuajuajuajuajvajwabDagSajxaiPajyagSaabagSaiPajzajAajBajCagVajDajEajDagZajFajGafUajHajIafUajJajKajLafUajIajMafUafUaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajNaaEajNajNajNajNajOajNajNaaEajNajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaabaabaabaabaabaabaabaabaabaabacOaitagBajPajPajPajQajRaeoajSajTajUagBaitaixajVajWaiyaiyajXaiyaiyajYajZaixakaagIakbakcakdakeakfakgakhafLagNajrakiagSakjakkaklakmagSaknakoakoakoakoakoakoakoakoakpakqakragSagSagSaksagSagSagSagSajzafBaktakuafBafBafBafBakvakuajGakwakxakyakzakAakBakCakxakDakzakEafUakFaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaabaabaabaabaabaabaabaabaabaabacOaitagBakGakGakGakGakGakGakGakGakGagBaitaixakHakIakJakKakLakMakNakOakPaixaizagIagJakQakRakSakTakUakVafLakWajrakXagSakYakZalaalbagSaknakoakoakoakoakoakoakoakoakoalcakragSaldalealfalgalhalialjalkallalmalnalnalnaloalpalnalqajGafUalralsaltaluafUalualtalsalvafUafUaabaaEaaEaaEaaEaaEaaEaaEaaEajNaaEalwalxalyaaEalwalxalyaaEalwalxalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaadaadaabaabaabalzalzalzalzalzalzalzacOaitagBakGalAalAalAalAalBalAalAakGagBaitaixalCalDalEalDalFalDalGalHalIalJalKalLalMafLafLafLafMafLafLafLalNalOalNagSalPalQalRagSagSaknakoakoakoakoakoakoakoakoakoalcakragSaiPajzalSaiPalTaiPalUalVallalWaiPalXaiPaiPalYaiPalZamaafUambalsamcalsalsalsamdalsameafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabalzalzalzalzalzalzalzacOaitagBakGamgamhamhamhamhamhamhakGamiamjamkamlammamnamoampamoamoamoamqamramsamtamuamvamwamwamxamwamwamyamzamAamBamCamDamEamFamGagSaknakoakoakoakoakoakoakoakoakoalcakragSaiPajzalSamHamHamHamHamHamHamHamHamHamHagSagSaiPalZamIafUahJahgamJalsamKalsamLahgahOafUaabaabaaEaaEaaEaaEaaEaaEaaEaaEajOaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOacOacOacOacOacOacOacOaitagBakGamMamNamNamNamNamNamOakGagBaitaixamPamQamRamSamTamUamVamWamXaixamYamZanaanbaiPaiPajzaiPaiPancaiPaiPalSaiPaiPandajzalSagSaknakoakoakoaneakoakoakoakoanfakqakragSaiPajzalSamHanganhanianjankanlanmannamHanoagSaiPalZamIafUafUanpanqanransantanuanvafUafUaabaabaabaaEaaEaaEaaEaaEaaEaaEajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOanwanxanyacOanzanAacOaitagBakGanBanCanDanEanFanEanGakGagBaitaixaixaixaixaixaixaixaixaixaixaixanHagIanIagSalUaiPajzaiPaiPanJaiPaiPalSaiPaiPanJajzalSagSanKajuajuanLajuanMajuanNajuanOanPabDagSaiPajzalSamHanQanlanRanlanlanlanlanSamHanTagSaiPalZamIalVafUafUanUamJalsamLanUafUafUanVanVanVanVanWaaEaaEaaEaaEaaEajNajNaaEalwamfalyaaEalwamfalyaaEalwamfalyaaEajNajNajNajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOanwanXanYacOanZaeoaoaaitagBakGaobaocaodaoeaocaofaofakGagBaitaeoaeoaeoaeoaeoaeoaogaeoaeoaeoaohanHagIanIagSaiPaiQaoiaojaljaokaolaomaonaolaljaooaoiaopagSabDabDaoqaoraoqaosaoqaoraoqabDabDaotagSalUajzalSamHaouaovanRaowaoxanlaoyaozamHamHagSaiPalZamIaiPaiPafUafUajGaoAaoBafUafUafUaoCaoDaoEaoFanWanWanWaaEaaEaaEaaEaaEaaEaaEaoGaaEaaEaaEaoGaaEaaEaaEaoGaaEaaEaaEaaEaaEajOaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabacOaoHaoIaoJacOaoKaoLacOaoMahkaoNaoOaoPaoQaoRaoRaoRaoRaoSaoTaitaeoaeoaeoaeoaeoaeoajTaeoaeoaeoacOaoUagIaoVaoqaoqaoWaoqaoqaoXaoXaoXaoXaoYaoXaoXaoqaoqaoZaoqabpabpapaapbapaapcapaapbapaabpabpabpaoqaoqajzalSamHanlanlapdapeapeapeapeapeapfamHamHamHapgamIaiPaphaphapiapjapkaplapmaphaphapnapoappapqaprapsapraptaptapuapvapvapvapvapvapvapvapvapvapvapvapvapvapvapwaptapxaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEapyapyapyapyapyapyapyapyapyapyapyapyapyapyapyapzapAacOapBacOacOaitagBakGapCamNapDapEamNapFapGakGapHapIapJapJapJapJapJapJapJapJapJapJapJapKapLanIaoqapMapNapOaoqapPapQapRapSapTapUaoXapVapWapXapYapYapYapZapYaqaaqbaqcaqdaqeaqfaqgaqhaqiaoqaqjalSamHanlaqkaqlanlanlanlanlanlaqmaqnaqoamHaqpamIaiPaphaqqaqraqsapkaqtaqraquaphaqvaqwaqxaqyanWanWanWaaEaaEaaEaaEaaEaaEaaEaqzaaEaaEaaEaqzaaEaaEaaEaqzaaEaaEaaEaaEaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEapyaqAaqBaqCaqDaqCaqCaqEapyaqFaqGaqHaqIaqJapyaitaoJacOacOacOaqKaitagBakGaqLamNaqMaqNamNamNaqOakGaqPaitapJaqQaqRaqSaqTaqUaqVaqWaqXaqYapJaizagIanIaoqaqZaqdaraapaarbarcarcarcardarearfargaqdarhariariariariariarjarkarlaqdaqdarmarmarmarnaoqaroalSamHanQanlanlanlarparqarpanlanlanlanSamHalZamIaiPapharrarsartaruarvarwarxaphanVaryarzanVanWaaEaaEaaEajNajNajNajOaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNajNaaEajNaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEapyarBarCarCarCarCarDarEarFarGarHarIarHarEarJarKarLarMarNarNarNarOaiwakGarPamNarQarRarSarTarUakGarVaoMarWarXarXarYarZasaarZarZarZasbascasdagIanIaoqaseaqdasfaoqasgasharcasiasjaskaslasmasnasoaspasqasqasrasrasrasrassasrastasnasnasnasnasuasvalSamHaswasxasyaszarpasAarpasBasCasDasEamHalZamIaiPaphasFasGasHasIasJasKasLaphasMasNasOasPaaEaaEaaEaaEaaEaaEaaEajNaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyasRarCasSarCasSarCasTasUasVasWasXarCasYapyasZataatbatcatcatdaeoateakGatfamNarQatgamNamNathakGatiaitapJatjatkatlatmarZarZatnatoatpatqatragIanIaoqatsattatuaoqatvatwatxatyatzatAarfargaqdaqdatBatCatDatDatDatEatFatGatHatIatJatKatLatMaoqatNalSatOatPatPatPatPatQatRatSatPatTatTatTatOalZamIatUatUaphaphatVatWatXaphaphatUatUasNasOasPaabaabaaEaaEaaEaaEaaEaaEaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajOaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyatYatZauaauaauaauaaubaucaudaueasXarCaufapyaugaugaugaugaugauhaugaugakGakGauiaujaukaulaumakGakGaunaitapJauoaupauqatmaurausautauuauvapJauwauxauyaoqauzauAauzaoqauBauCaoXarfauDaoXaoXargaqdauEauFauGauEaqdaqdauHaoqaoqaoqauIauJaoqaoqaoqaoqauKauLatOauMauNauOatPauPauQauRauSauTauUauVatOalZamIatUauWauXaphauYauZavaaphavbavcatUasNavdasPaabaabaabaabaaEaaEaaEajNaaEalwarAalyaaEalwarAalyaaEalwarAalyaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyaveavfavfavfavgavgavhapyaviavjavkarHavlapyavmavnavoavpavqavravsavtavuavvavwavwavxavwavyavzavzavzavAavzavzavzavzavzavzavzavzavzavzavzavBavCavDaoqavEavFaqdavGavHavIavJavKavLavMavNavOaqdaqdatBavPavQaqdaqdavRaoqavSavTavUavVavWavXavYaoqavZawaawbawcawdaweawfaweawgaweawhawiawjawkatOalZamIatUawlawmawnawoawpawqawrawsawtatUasNasOasPasPasPasPasPaaEaaEaaEajNaaEalwawualyaaEalwawualyaaEalwawualyaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEawvapyapyapyapyapyawwawxawwapyapyawyavjawzarCavkawAawBawCavqavqavqavqavqavqavqavqawDavqawEavqawFavzawGawHawIawJawKawLawMawNawOawPawQawRawSawTawUavCawVapaawWavFaqdawXavHawYauzawZaxaaxbaxcaxcaxcaxdaxeaxfaxdaxcaxgaxhaxiaxjaxkaxlaxmaxnavSavYaoqaxoaxpatOaxqaxraxsatPaxtaxuaxvauSaxwaxxaxyatOalZaxzatUaxAaxBatUaxCaxDaxEatUaxFaxFatUasNasOasPaxGaxHaxIasPasPaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEawwaxJaxKawwaxLaxMaxMaxMaxNawwasVavjarCarCaxOaxPaxQavqaxRaxSaxSaxSaxSaxSaxSaxSaxTaxSaxUavqaxVawTaxWaxXaxYaxZaxZaxZaxZayaaybaycaycaycaycawTaydayeayfaygatDayhatDayhayiatDayjaykatDatDatDatDatDatDaylaymaqdaqdaqdaynaoqayoavSaypayqavSayraoqaoqaoqaysatOatOaytatOatOaytayuayvatOaytatOatOatOaywayxatUatUatUayyayzayAayBatUatUatUatUasNayCayDayEayFayGayHayIayJayJayJayJayJayJayJayJayJayJayJayJayJayJayJayJaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEayKasVasTayLasVarCarCayMaubayNaudayOayParCasXawwaxQavqayQayRayRayRayRayRayRayRayRayRaySavqaxVayTaxWaxXayUaycayVayVayWayVayXaycayYayZayZazaazbavCawVazcaqdaqdaqdaqdazdaqdauzazeazfazgaqdazhaqdaziazjasnasnazkazlazmaoqayravSaypaznavSavSaoqazoazpazqazrazsaztazsazuazvazwazxazyaztazsazzazsazAaztazsazBazsazCazDazEazFazGazHazIazIazJazKazLazMazNazOazPasPaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEawwazQazRawwazSazTazUazVazWawwasVarCazXarCazYapyazZavqayQayRaaEaaEaaEaabaaEaaEaaEayRaySavqaxVawTaAaaxXaycaycaycaycaAbaycaxXaycaycaAbaAcawTawUavCawVauzawWaAdasnasnaAeasnaAfaAgaAgaAgaAgaAhaAgaAiaAjaAkaAlaoqaoWaoqaoqaAmaAnaAoaApayraAqaoqaAraAsaAtaAuaAvaAvaAvaAvaAvaAwaAxaAvaAyaAzaAvaAAaABaAAaAvaAvaACaADaAEaAFaAGaAHaAIaAJaAJaAJaAKasPasPasPasPasPasPaaEaaEajNajNaaEajNajNajOajNajNaaEajNajNajNajNajNajNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaaEaaEaaEaaEaabaALaALaALaALaAMaAMaAMaALaALaALaabaabaabaabaaEaaEaaEaANapyapyapyapyapyapyapyapyapyapyaAOaAPaAQaAPaARaASaATaAUaAVayRaaEaaEaabaabaabaaEaabayRaySaAWaAXaAYaAZaBaaycaycaBbaBcaBdaBeaBfaycaycaycaBgaBhaBiavCaBjaoqaBkaqdaqdaBlaBmaBnaxiaBoaBpaBqaBraBsaBtaBuaBraBqaBraBvaBwaBxaxiaxkaByaBzaBAaBBaBBaxiaBCaBDaBEaBFaBGaBGaBGaBGaBGaBHaBIaBGaBJaBGaBGaBKaBLaBKaBMaBKaBNaBOaBPaBQaBRaBSaBTasOaBUaBUaBUaBUaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaaEaabaabaabaALaBVaBWaBXaBYaBZaCaaCbaCcaALaabaabaabaaEaaEaaEaaEaaEaCdaCeaCfaCgaChaCiaCjaCkasVaClarCarDaCmarHaCnapyaCoavqaCpayRaaEaaEayRayRayRayRayRayRaySavqaCqavzaCrawTawTayTawTawTavzawTaCsayTawTawTawTavzawUavCaCtaoqaCuapaaCvaCwaCxaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoqaoWaoqaoqaoqaoqaoqaoqaoqaoqaoqaCyaBQaCzaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCBaCAaCAaCAaCBaCAaCCaBQaCDaCEaCFaCGaBUaCHaCIaBUaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaAMaBWaBWaBWaCJaBWaBWaCKaCLaALaALaALaaEaaEaaEaaEaaEaaEaCdaCMapyapyapyapyaCNapyaCOaCParCarCaCQauaaCRaCSaCTaCUaCVayRaaEaaEayRaCWaCXaCXaCXaCXaCYaCZaDaaDbaDcaDdaDdaDdaDdaDdaDeaDdaDfaDdaDdaDdaDdaDgaDhaDiaDjaDkaDlaDmaDmaDnaDoaDpaDqaDqaDqaDqaDqaDqaDqaDqaDraDqaDsaDtaDuaDqaDqaDvaDqaDqaDqaDwaDxaDyaDzaDAaDBaCAaDCaDDaCAaDCaDDaCAaDCaDDaCAaDCaDDaCAaDEaDFaDFaDGaDHaCAaDIaBQaDJaCEaDKaDLaBUaDMaCFaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaAMaBWaDOaBWaBWaDPaCKaCKaDQaDRaDSaDTaaEaaEaaEaaEaaEaaEaCdaCdaCdaCdaDUapyaDVapyapyarCarCarCaDWaDXaDYawwaxQavqaCpayRaaEaaEayRaDZaEaaEbaEbaEbaEcaEbaEbaEdaEeaEfaEgaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEiaEjaEkaElaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEgaEmaEfaEgaEgaEgaEgaEgaEgaEhaEgaEgaEgaEgaEgaEgaEfaEgaEnaEoaEpaEqaCAaEraEsaCAaEtaEuaCAaEtaEvaCAaEtaEwaCAaExaDGaDGaDGaEyaCAaCCaEzaEAaEBaECaEDaEEaEFaEGaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaEHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaAMaBWaBWaBWaEIaEJaCKaCKaEKaALaALaALaELaaEaaEaaEaaEaaEaCdaCdaCdaCdaDUawwaEMaENaCgaCiaEOarCarCarCaEPawwaxQavqaCpayRaabaaEayRaDZaEQaERaESaETaEUaEVaEWaEXaEYaEZaFaaFaaFaaFbaFcaFcaFdaFaaFaaFaaFeaFfaFgaEZaFaaFaaFaaFaaFhaFaaFiaFaaFaaFaaFjaFkaFlaEZaFaaFaaFaaFmaFcaFcaFnaFaaFoaFpaFmaFcaFqaFraFsaFtaFuaBQaFvaCAaFwaFxaCAaFyaFxaCAaFzaFxaCAaFAaFxaCAaFBaDGaDGaDGaExaCAaFCaFDaFEaFFaFGaFHaFIaFJaFKaDNaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaabaabaabaabaabaabaabaALaALaFLaFMaBWaBWaCKaCKaFNaALaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEasQapyapyapyapyapyapyarCaFOarCaFPapyaFQaFRaCVayRaabaabayRaDZaEQaFSaugaugayRaFTayRaugaFUaFVaFVaFVaFWaFVaFXaFYaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFZaFVaFVaFVaFVaFVaFYaFYaFVaGaaGbaGaaGcaGaaGdaGaaGcaGcaGeaGfaEqaCAaGgaGhaGiaGjaGkaGlaGmaGnaGoaGpaGhaGqaGraGsaGsaGsaGtaCAaGuaGvaGwaCEaGxasOaBUaBUaBUaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaabaabaabaabaabaabaabaabaabaALaALaALaALaGyaGzaALaALaALaabaabaabaaEaaEaaEaGAaGAaGAaGBaGCaGDaGAaGAaGEaGFaGGaGHapyapyapyapyapyapyaGIavqaCpayRayRayRayRaDZaGJaGKaGLaGMaGNaGOaGNaGPaGQaFVaGRaGSaGTaFVaFVaFVaFVaGUaGTaGTaGTaGTaGRaGVaGWaGRaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGXaGYaGTaGZaHaaFVaFVaFVaFVaHbaHcaHdaGcaHeaHcaHfaHgaHhaHiaHjaHkaHlaHmaGhaHnaHmaGhaHoaHnaGhaHmaHpaHqaHpaHnaHmaHpaHmaHnaHlaHraHsaDJaCEaGxasOaBUaHtaHuaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaALaALaALaALaabaabaabaabaabaabaaEaaEaGAaHvaHwaHxaHyaHzaHAaHBaHCaHDaHDaHEaHFaHFaHFaHFaHFaHGaGIavqaHHaHIaHIaHIaHIaHJaHKaHLaugaHMavqaHNaHOaHPaHQaHRaGTaGTaGTaGTaGTaGTaGTaHSaHTaHTaHTaHUaGTaGTaGTaHSaHTaHTaHTaHVaHWaHXaHSaHTaHTaHTaHYaHZaHZaHZaHZaHZaHZaHZaIaaIbaIcaIdaGcaIeaIcaHfaHfaGaaIfaIgaIhaIiaIjaIkaIjaIjaIkaIkaIjaIlaIjaImaIkaInaIoaIjaIpaIjaIjaIiaIqaIraIsaCEaItaIuaIvaIwaIxaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaIyaIzaIzaIAaIBaICaIDaIEaIFaIFaIFaIFaIFaIFaIFaIFaugaIGaEbaEbaEbaEbaEbaEbaIHaIIaFSaFVaFVaHRaFVaIJaIKaILaFVaFVaFVaFVaFVaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaIMaIMaIMaFVaFVaFVaFVaFVaFVaFVaFVaGcaINaIOaIPaIQaIRaISaISaITaIUaIVaIWaEqaCAaIXaIYaIZaJaaJbaJcaJdaJeaJfaJgaJcaJhaJiaJjaJkaJlaJmaJnaJoaJpaJqaCEaJraJsaJtaJuaJvaDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaJwaJxaJyaIAaIBaJzaIDaJAaJBaJCaJDaJEaJFaJBaJGaJHaGIaGIaJIaJJaJKaJLaJMaJIaJNaEQaFSaFVaGTaGTaFVaJOaIKaJPaJQaGTaJRaJSaJTaJSaJUaJVaJVabpabpaJWaJWaJWaJWabpaJWabDabDabpabDabpabpabpabpabpabpabDabDabDabDabDabDabpabpaJXaJYaJZaKaaGcaKbaHfaIOaKcaGaaKdaBQaEqaCAaCAaCAaCAaCAaCAaCAaCAaCAaCAaCBaKeaFxaCAaCAaKfaCAaCAaCAaCCaJpaDJaCEaKgaKhaKiaKiaKiaKiaKjaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaKkaIzaKlaIAaIBaKmaKnaKoaJBaJBaJBaJBaJBaKpaIDaKqaKraKraKraKraKraKraKraKraKsaKtaKuaFVaGTaGTaFVaKvaIKavqaFVaGZaKwaFVaFVaFVaJVaJVaJVabpabDabDabDabDabDabpabDabDabDaKxabDabDabDabDabpabpabDabDabDabDabDabDabDaKyaKzaKAaKBaKCaKDaGcaKEaKFaKGaKHaGcaKIaBQaEqaCEaKJaKKaKLaKMaKNaKOaKPaKQaCAaKRaKSaKTaCAaKUaKVaCAaKWaCAaKXaKYaKZaCEaLaaLbaKiaLcaLdaLeaKiaKiaKiaLfaLfaLfaLfaKiaKiaKjaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaGAaLgaLhaLiaLjaLkaLlaLmaLnaLoaLpaLpaLpaLqaJBaLraKqaLsaLtaLuaLvaLwaLxaLyaLzaLAaLBaLCaFVaGTaGTaFVaLDaLEayRaFVaFVaFVaFVabpaJVaJVaJVaJVabpabpabpabpabpabpaLFabpabpabpabpabDabDabDabDabpabpabDabDabDabDabDabDaKyaLGaLHaLIaLJaLKaLKaLKaLKaLKaLLaLMaLLaAraBQaEqaCEaLNaLOaLPaKMaLQaLRaLSaLTaCAaLUaLVaLWaCAaLXaLYaLZaMaaCAaCCaJpaDJaCEaLaaLbaKiaKiaKiaMbaKiaMcaMdaMeaMfaMgaMhaMiaMjaKjaabaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaMkaGAaHBaHBaHBaHBaHBaHBaIDaMlaMmaMnaMoaMpaMqaJBaLraKqaMraMsaMtaMtaMuaMvaMwaMxaMyaMzaMAaFVaGTaMBaFVaMCaMDabpabpabpabpabDabDabDabDabDaJVabpabDabDabDabDabDabpabDabDabDaMEaMFaMGaMHaMGaMGaMGaMHaMIaMIaMIaMJaMIaMKaLHabDaMLaMMaMNaMOaMPaMQaMRaMSaMTaMUaMVaBQaEqaCEaKMaMWaKMaKMaKMaMXaMYaKMaCAaCAaCAaCAaCAaCAaCBaCAaCAaCAaCCaMZaNaaCEaLaaLbaKiaNbaNcaNdaNeaNdaNdaNdaNfaNgaNhaNiaNjaKjaabaabaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaMkaNlaNmaNnaNoaNpaNqaNraNsaNtaNuaNvaNwaIDaNxaNyaNzaNAaNBaNCaNDaNEaNFaNGaNFaNHaJBaNIaKqaMtaNJaNKaNLaNMaNNaMtaLzaNOaNPaNQaNRaGTaNSaFVaNTaNUabDabpabpabpabDabDabDabDabDabDabpabDabDaJWabDabDabpabDabDaKyaNVaLHabDabDabDabpabpaotabpabDabDabDabDabDabDabpaLKaNWaNXaNYaNZaNZaOaaObaOcaOdaOeaOfaOgaOhaOiaOjaOkaOkaOkaOlaOmaOnaOoaOpaOqaOraOsaOtaOuaOvaOwaOxaOyaOzaOAaCEaLaaLbaKiaOBaNdaNdaKiaOCaODaOEaNdaOFaOGaNiaOHaKjaabaabaabaabaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaMkaNoaNoaOIaNoaOJaOKaOLaOMaONaOKaOOaOPaIDaOQaORaOSaORaOTaKnaOUaOVaJBaOWaJBaNHaJBaLraKqaOXaOYaOZaPaaPbaNNaPcaKraPdaPeaNQaFVaGTaGTaFVabDaPfabDaKyaMFaMGaMHaMIaMIaMIaMJaMIaMGaMIaMJaMIaMIaMIaMHaMIaMIaMKaPgabDaPhaPhaPhaPhaPhaPhaPhaPiaPiaPjaPjaPjaPjaPiaPiaPkaPlaPmaPnaPoaLKaPpaPqaLLaPraBQaEqaCEaPsaPtaKMaLQaLQaPuaPvaPwaLQaPxaPyaPzaPAaPBaPBaPBaPCaPxaCCaJpaPDaCEaLaaLbaKiaPEaPFaPGaKiaPHaPIaPJaPKaPLaPMaPNaPOaKjaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaPPaMkaPQaPRaNnaNoaPSaPTaPUaPVaPWaPXaPYaPZaIDaQaaQaaQaaQaaQaaIDaQbaQcaQdaQeaQfaQgaQhaLraQiaQjaQkaQiaQiaQiaQiaQiaQlaQmaPeaNQaFVaGTaGTaFVabDaPfabDaQnaLHabpabpabpabDabDabDabDabDabDabDabDabDabDabpabDabDabDabpabDaPhaQoaQpaQpaQqaQraQsaPiaQtaQuaQvaQwaQxaQyaPiaQzaQAaQAaQAaQAaLKaQBaQBaLLaQCaBQaEqaCEaQDaQEaQFaQGaQHaQIaQJaQKaLQaQLaPyaQMaQNaQNaQNaPBaPCaPxaQOaJpaQPaCEaLaaLbaKiaQQaQRaQSaQTaQUaQSaQVaQWaQXaQYaQZaRaaKjaRbaRbaRbaRbaRbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaPPaPPaMkaRcaRdaReaNoaNoaNoaNoaNoaNoaNoaRfaRgaRhaNoaRiaRjaRjaRjaRkaRlaRmaRnaRoaRpaRqaRraRsaIFaQiaRtaRuaRvaRwaRxaRyaRzaRAaRBaRCaRDaFVaFVaGTaFVabDaREabDaREabDabDabpabpabpabDabDabDaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFaRGabDaPhaRHaRHaRHaRIaRIaRIaPiaRJaRKaRLaRMaRNaROaRPaQzaRQaRRaRSaRTaLKabDabDaCEaRUaBQaRVaCEaRWaRXaKMaPwaLQaLQaRYaRZaSaaPxaPyaSbaScaPBaPBaPBaPCaSdaSeaJpaPDaCEaLaaLbaKiaSfaSgaShaSiaSjaSkaSlaSmaSnaSoaSpaSqaKjaSraSsaStaSuaSuaSvaaaaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaMkaMkaSxaSyaSyaSzaSAaNoaSBaSCaSDaNoaSEaSFaSGaNoaSHaSIaSJaSKaSLaSMaSNaSOaSPaSQaQfaSRaSSaSTaSUaSVaSWaSXaSYaSZaTaaTbaTcaTdaPeaTeaTfaFVaGTaFVabDaPfabDaPfabDabDabDabpabpabpaJWabDabpabDabDabDabDabpabDabDabDabDabpabDaPhaTgaTgaTgaRIaRIaThaPiaTiaTjaTkaTlaTmaTnaToaTpaTqaTraTqaTsaLKabDabDaCEaTtaTuaEqaCEaTvaTwaKMaPwaTxaTyaTxaTzaTxaPxaPyaQMaTAaTBaTBaTCaTDaTEaTFaJpaPDaTGaLaaLbaKiaKiaKiaKiaKiaKiaKiaKiaKiaKiaTHaTIaKiaRbaTJaSsaTKaTLaTMaTNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaTOaTPaSyaSyaSyaSyaSyaTQaTRaTSaTTaTUaTTaTSaTVaNoaTWaTXaTYaTXaTZaUaaUbaUcaUdaUcaNAaUdaUeaUfaUgaUhaUiaUjaQlaQlaQlaUkaTcaTdaPeaTeaUlaFVaGTaFVabpaPfabDaPfabDabDabDabpabpaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaUmaUmaPhaPiaUnaUoaUpaUqaUraUsaPiaUtaRSaUuaRQaQAaLKabpabpaCEaUvaBQaUwaUxaUxaUxaUxaUyaTxaUzaUAaUBaUCaPxaUDaPzaUEaPBaPBaUFaUGaUHaUIaIraUJaCEaLaasOasOasOasOasOasOasOasOasOaUKaULaUMaUNaUOaUPaSsaSsaUQaSuaSuaURaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaaEaUSaUTaUUaUVaUWaUXaUYaPWaUZaVaaVbaPWaVcaSyaVdaNoaNoaNoaNoaNoaNoaNoaVeaVfaVgaVhaVhaViaVjaVkaVlaVmaSWaVnaVoaVpaVqaVraVsaVtaVuaVvaFVaFVaHSaFVaLFaVwabpaVwabpabpaPhaPhaPhaPhaVxaVyaVzaVyaVyaVyaVyaVAaVBaVyaVyaVyaVzaVCaVDaVEaVFaVGaVHaVIaVJaPiaPiaVKaVLaVMaVNaPiaPiaQAaQAaVOaQAaQAaLKaotaotaCEaAraBQaEqaVPaVQaVRaVSaVTaTxaVUaVVaUBaUBaPxaVWaVXaVYaVZaVZaWaaWbaPxaWcaJpaWdaWeaWfaWeaWgaWeaWeaWeaWeaWeaWeaWeaWhaWiaUMaWjaWkaWlaRbaRbaRbaRbaRbabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaWmaaEaaEaUSaUTaWnaWoaWpaSyaWqaNoaNoaNoaNoaWraWsaSyaWtaWuaWvaWwaNoaWxaWyaNoaIDaWzaWzaWAaWzaWzaWzaWzaWBaWCaWDaWEaWFaWGaWHaTbaTcaTdaPeaNQaFVaWIaJRaWJabpaREabDaREabDabDaWKaWLaWKaWMaVyaWNaWOaWPaWQaWRaWRaWQaWRaWRaWRaWRaWRaWSaWTaWUaWTaWVaWWaWXaWYaWZaXaaXbaXcaXdaXeaXfaPhaLKaLKaLKaLKaLKaLKaXgaXgaFVaAraBQaEqaUxaXhaXiaXjaXkaXlaXmaXnaUBaUBaPxaXoaPzaUEaPBaPBaXpaXqaPxaXraXsaXtaXuaXvaXwaWgaXxaXyaXzaXAaWeaXBaXCaWhaXDaXEaWjaXFaXGaXHabpabpabpaXIaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaaEaUSaXJaWnaXKaXLaUVaXMaNoaXNaXOaXPaPWaXQaXRaXSaXTaXUaTSaXVaXWaXXaXYaXZaYaaYaaYaaYaaYaaYaaYbaYcaYdaWDaYeaQlaQlaYfaUkaYgaTdaPeaYhaFVaGTaJRaWJabDaPfabDaPfabDabDaPhaYiaPhaYjaVyaYkaYlaYmaYnaYmaYmaYnaYmaYmaYmaYoaYpaYqaWTaWTaYraYsaYtaYuaYvaYvaYwaYxaYyaYzaYAaYBaYCaYDaYEaYFaYGaYHaYIaHXaHaaFVaYJaYKaYLaUxaYMaYNaYOaYPaTxaYQaYRaYSaYSaYTaYUaPzaUEaPBaPBaPBaYVaPxaYWaYXaYYaYZaZaaZbaZcaZdaZeaZbaZdaZfaZgaZhaZiaZjaZkaZlaZmaZnaZoaaaaaaaaaaXIabpabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaaEaaEaaEaaEaZpaZqaZraUTaZsaUTaUTaZtaZuaZvaZvaZwaZxaZyaZzaZAaZBaUTaZCaUTaZDaZEaZFaRwaRwaRwaZGaRwaRwaZHaZIaZJaWDaZKaRwaZLaZMaZNaRAaRBaRCaZOaFVaGTaJRaWJabDaPfabDaPfaRFabpaPhaPhaPhaVyaVyaZPaZQaZRaZSaZSaZSaZSaZRaZSaZSaZRaYkaZTaZUaWTaZVaZWaWWaZXaZYaZZbaababbacbadbaebafbagaYDbahbaibajaFVbakbalbamaFVbanbaobapbaqbarbasbatbauaTxbavbawaUBbaxaPxbaybazbaAbaBbaBbaBbaCaPxbaDaJpbaEbaFbaGbaHbaIbaJbaKbaLbaMbaHbaNbaObaPbaQbaRbaSaXFbaTaZoaaaaaaaaaaXIabpaotaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEbaUaaEaUSaUTbaVaSyaSyaSybaWaNobaXbaYbaZaNobbaaUXbbbbbcbbdaUXbbebbfbbgbbhbbiaVoaVoaVoaVoaVoaVoaVobbjbbkaSWaSXbblbbmaTaaTbbbnbboaPeaNQaFVbbpbbqaFVabDaPfabDaPfaRFabDadWadWbbrbbsbbtbbubbvaZSbbwbbwbbwaZSbbwbbwbbwaZSaYkbbxaWTaWTaWTaWTbbyaWTaWTaWTbbzbbAbbBbbCbbDbbEbbFaYDbbGbbHbbIaFVbbJbbKbbKbbLbbMbbNbbOaUxaUxbbPaUxaUxaTxaTxaTxbbQaTxaPxaPxbbRaPxbbSbbTaPxaPxaPxaCCaJpbbUbbVbbVaWgaWgbbWaWeaWeaWeaWeaWeaWeaWhbbXbbYbaSbbZbcaaZoaZoaZoabpaXIabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEbcbaaEaUSbccbcdbcebcfbcgbchaNoaNoaNoaNoaNobciaSybcjbckbclbcmaNobcnbcoaNobcpbcqbcrbcsbctbcubcvbcvbcwbcxaUibcyaQlaQlaQlaUkaQibczaLBaLCaFVaGRaGTaFVabDaREabDaREaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSaZSaZSaZSaZSbbwbcEaYkbcFbcGaRIaRIbcHbcIbcJbcKaWTaWTbcLaWWbcMbcNbcObcPaYDbcQaFVaFVaFVbcRbcSaFVaFVbcTbcUbcVbcWbcXbcYbcZbdabdbbdcaTxbddbdebdfbdgbdhbdibdebdebdjbdkaTxaCCaJpbaEbdlaJpbdmbdnbdobdpbdqbdrbdsbdtbduaWhbdvbdwbaSaULbdxbdybdzaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaaEaaEaUSbdAbdBbdCbdDbdEbdFaNobdGbdHaXPaPWbdIaSybdJbdKbdKbdKbdKbdKbdKbdKbdKbdKbdLbdLbdMbdMbdMbdMbdNbdObdPbdQbdRbdSbdTbdUbdVbdWbdXbdYaFVaGRaGTaFVabDaPfabDaPfaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwbdZbeabebaYpaZSbbwaZRaYkbcFbcGbecbedbeebefbadbegbehaWTbeibejbekbelbembenbeobepbeqberbesbetbeubevbewbexaBDbeybezbeAbeBbeCbeDbeDbeEbeFbeGbeGbeGbeGbeHbeGbeGbeGbeGbeGbeIbeJaJpbaEbeKbeLbeMbeNbeObePbePbeQbeRbeSbePaWhbeTbeUbeVbeWbeXbeYbeZaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaaEaTObfaaSybfbbfcbfdaTSbfebffaTSaTSbfgaTTaTSbfhbdKbfibfibfjbfkbflbfmbfmbdKbfnbfobfpbfqbfrbdMbfsbftbfubfvbfwbfxbfxbfybfzbfAbfBaMAaFVaGTaHSaFVabpaVwabpaVwbfCabpadWbfDaPhbfEbfFbfGbfHaZRaZSaZSaWMbfIaYkaZSaZSaZSaYkbcFbcGaRIbfJbfKbfLbfMbacbfNbfObfPbfQbfRbfSbfTbfUbfVbfWbfXbfYbfZbgabfYbgbbfWbgcbgdbgebezbeAbeDbgfbggbghbeDbgibdebdebdebgjbgkbdebdebdebglbgmaTxbgnaMZbgobgpbgqbdmbgrbgsbePbgtbePbeSbgubgvbgwbgxbgybgzbgAbgBbgCbgDaZoabpaXIabDabDaaaaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaMkaMkbgEbgFbgGbgHbgIaNobaXbaYbaZaNobgJbgKbgLbdKbgMbgNbgObgNbgNbgNbgNbgPbgQbgRbgSbgTbgUbgVbgWbgXbgYbgZbhabhbbhbbhcbhdbheaRCaZOaFVaGTaJRaWJabDaPfabDaVwaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSbhfbhgbhhaZSbbwaZSaYkbcFbcGaRIbhibhjaWWaWWbhkbhlaWTbhmbhnbhobhpbhqbhrbhsbhtbhubhvbhwbhxbhybhzbhAbhBaBQbgebezbeAbhCbhDbeAbhCbhEaTxbhFbhGbhHbhIbhJbhKbhLbeGbhMbhNbhObhPaIrbgobeKbhQaWgbhRbhSbePbePbhTbhUbeSbhVaWhbhWbhXbhYbhZbiabibbicaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPaPPaMkaMkaMkaMkaMkaMkaNoaNoaNoaNoaNobidaSybiebdKbifbgNbigbihbiibijbikbilbimbinbiobipbiqbiraUgbisbitaQibiubivbiuaUkaQibfAaPeaNQaFVaGTaJRaWJabDaREabDaREaRFabDaaaadWbcAaVybcBbcCbcDaZSbbwaZSaZSaZSaZSaZSbbwaZSaYkbcFbcGaRIaRIbiwbixbiybizaWTaWTbiAbiBbiCbiDbiEbiFaPhbiGaWTaWTbiHbiIbiJaWTaWTbiKaBQbgebeDbeDbezbiLbezbezbiMaTxaTxaTxbiNbiNbiOaTxaTxbdebiPbiQaTxbiRaYXbiSbiTbiUbiVbiWbhSbePbiXbiYbiZbjabjbaWhbjcbjdbjebjfaULbgCbjgaZoabDaXIabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaPPaPPaPPbjhbjhbjhbjibjjbjkbjlbjmbjnbjoaNoaWsaSybjpbdKbjqbgNbjrbjsbjsbjsbjsbjtbjubjvbjwbjxbjybjzbjAbjBbjCbjDaRwbjEaRwbjFbjGbjHaPeaNQaFVaGTaJRaWJabDaPfabDaPfaRFabDadWadWbbrbjIbjJbjKbcDaZSbbwbbwbbwaZSbbwbbwbjLaZSaYkbbxaWTaWTaWTaWTbjMaWTaWTaWTbjNbjObiBbjPbjQbjRbjSaWTbjTaWTbjUbjVbjWbjXbjYbjZbkaaBQbgebeDbkbbkcbkdbkebkebkebkebkfbkgbkhbkibkjbkkaTxbklbkmbknaTxbkoaKYbkpbbVbbVaWgaWgbkqaWeaWeaWeaWeaWeaWeaWhbkrbksbktbkubkvbkwbkxaZoabpaXIabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbkybkzbkAbkBaUTbkCbkDbkEbkFaUTbkGbdKbkHbgNbkIbkJbkKbkLbkMbkNbkObkPbkQbkRbkSbkTbkUbdObkVbkWbkXbkYbkZblaaTcaTdaPeblbaFVblcbbqaFVabDaPfabDaPfaRFabpaPhaPhaPhaVyaVyaZPbfHaZRaZSaZSaZRaZSaZSaZSaZSaZRaYkbldaZUaWTaZVbleblfblgblhblibljbadblkbllblmblnbloaWTblpaWTblqblraWWblsbltbjZbluaTubgebeDblvblwbgfbeDbeDbeDbeDblxbeDbeDbeDbeDbeDblybeDbeDbeDblzblAblBblCblDbaHbaHblEblFblGblHbaHbaHblIbaObaPblJblKbaSaULblLblMblNaZoabDaXIabpabpaotaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhblOblPblQblRblSaTRblTaNtaTSaTSblUbdKbgNbgNbgNbgNbgNbgNblVbdKblWblXblYblZbmabmbbmcaYdaWDbmdaQlaQlaQlaUkaYgaTdaPeaNQaFVbmeaGTaFVabDaPfabDaPfabDabDaPhbmfaPhbmgaVyaYkbmhaWObmibmjaWOaWObmjaWOaWObmjbhhbmkaWTaWTaYrbmlbmmbmnbmobmpbmpbmpbmqbmrbmsbmtbmuaPhbmvaWTbmwbmxbmybmybmzbjZbkaaBQbgebeDbmAbmAbkdbmBbeDbeDbeDbeDbmCbmDbmDbmDbmDbmDbmEbkbbkbbeDblAbmFbaEbaFaXAaXAbmGbmHbmIbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRaZoaZoaZoabDaXIabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbmSaMkaMkaMkaMkbmTbmUbmVaNoaSyaSyaSybdKbmWbmXbmYbmZbnabmZbnbbdKbdLbdLbdLbdLbdLbdLbncaWCaSWbndaVobneaVqaVraVsaVtbnfbngaFVaGTaGTaFVabDaREabDaREabDabDaWKbnhaWKaWMaVybnibnjbnkbnlbnmbnlbnlbnmbnlbnlbnmbnnbnoaWTbnpaWTaWVbnqbnrbnsbntbnubnvbnwbnxaPhaPhaPhaPhbmvaWTaWTbjZbjZbjZaWTaWTbnyaBQbgebeDbeDbeDbgfbeDbeDbnzbnAbnBbeDbnzbnCbnDbeDbeDbnEbnFbnCbnBblAbmFbnGaWebnHaXBaWgbnIbnJbnKaXAaWeaXAbnLaRbbnMaULbaSbnNbnOaZoaaaaaaabpaXIabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhbjhbjhaMkbnPbnQbnRaNoaNobnSaNoaMkaMkbnTbnTbnTbnTbnTbnTbnTbnUbnVbnWbnXbnYaQlbnZaWCaWDaWEboabobaWHbocaTcbodboebofaFVaGTaHSaFVaLFaVwabpaVwabpabpaPhaPhaPhaPhaVxaVybogbohbohboibohbojboibohbohboibokbohbolbombonboobopboqboraWTbosaWTbotaWTaPhaotabpabpabpabpabpabDabDabpabpaCEbouaBQbgebeDbkcbkbbgfbeDbovbowbowbowbowbowbowbowboxbeDbnEbnCbnCbnDboybozboAaWeaWeaWeaWeaWeaWeaWeaWeaWeaWeboBaRbaUMaULbaSboCboDaZoadWadWabDaRFabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhbjhaMkboEboFboGaNoaSyaSyaSyboHboIbnTboJboKboLboMboNbnTboOboPboQaVoboPboRboSbisaUiboTaQlaQlaYfaUkaTcaTdaPeaNQaFVaGTaJRaWJabpaPfabDaPfabDabDaaaadWadWaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaPhaWTaWTboUboVboWboXaWTaRIboYboZboZbpaabDabDaotabpabpabDabDabDabDabpaCEbpbaBQbgebeDbpcbnAbkdbkebpdbpebpfaYOaYOaYObpgbphbpibmDbpjbpkbplbnBblAaJpaPDbpmabDabDabDabDabDabDabDbpnasObpoaRbbppbpqbaSbprbpsaZoaaaaaaabDaRFabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhbjhaMkaMkaMkaMkaMkaSybptaTPbpuboIbnTbpvbpwbpxbpxbpybpzbpAbpBbpCbpDbpEbpFbpGbpHaWDbpIaRwbpJaZMaZNaRAaRBaRCaZOaFVbpKaJRaWJabDaPfabDaPfabDabDabDabpabpabpabDabDabpabDabDabDabDabpabDabDabDabDabpabDaPhbpLbpMbpNbpObpPbpQaWTbpRbpSbpTbpUbpVabDabDabpabDabDabDabDabDabDaotaCEbpWaBQbgebeDbmAbmAbgfbeDbpXbpYaYOaYObpZaYOaYObpYbqabeDbqbbmAbmAbeDblAaJpaPDbpmabDbqcbqcbqcbqcbqcbqcbqcasObpoaWhbqdaRbbqeaRbaRbaRbaWhaWhabpaRFabpaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhbjhbjhbjhaNkaNkaMkaMkaMkaMkaMkaMkbnTbqfbqgbqhbqibqjbqkbqlbqmbhbbqnbqobqpbqqbqrbqsaSXbqtbquaTabqvaTcaTdbqwbqxbqybqzaJRaWJabDaMCaMDaREabDabDabpabpabpabDabDabDaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFaRFabDaPhbqAbqBbqCbqDbqEbqFaWTbqGbqHboZboZbqIabDaotaotabDabDabDabDabDabDabDaCEbqJbqKbgebeDbeDbeDbgfbqLaUxaUxaUxbqMaUxbqMaUxaUxaUxbqNbqbbeDbeDbeDbqOaYXbqPbpmabDbqcbqQbqRbqRbqRbqSbqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdaWhabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbjhbjhaNkaNkaNkaNkaNkaNkaNkaNkaNkbnTbrebrfbrgbrhbribrjbrkbrlbrmaQibrnaQiaQibroaQiaQiaQiaQiaQiaQiaQlaPdaPebrpaFVaFVbbqaFVabDaNTbrqbrrabDabpbrsabpabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaPhbrtbrubrvbrwbrubrxaPhaPhaPhbbwbbwabDabDabDabDabDabDabDabDabDabDabDaCEbrybrzbrAbrBbrCbrBbrDbrEbrBbrBbrBbrBbrFbrGbrBbrBbrBbrEbrHbrBbrBbrBbrIaJpbrJbrKbpmbqcbrLbrMbrNbrMbrObqcbrPbpoaWhbrQbrRbrSbrTbrUbrVbrWbrXabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbnTbrYbrZbsabsbbscbnTaQlbsdbseaQibsfbsgbshbsibsjbskbskbslbskbsmbshaNOaPeaTebsnaFVaGTaFVabDabDaNTbsobspabpabpabDabDabDabDabDabDabDaJWabDabDabDabDabDabDabDabDabDaPhbsqaWWbrubsraWWbssaPhabDabDabDabDabDabDabDabDabDabDabDabDabDaJVaJVbstbpbbsubsvaJpaXsbswbsxaJpaJpaJpaJpaJpbsybszaJpaJpaJpaJpbsAaJpaJpaJpbszbsBbsCbsDbsEbsFbsEbrMbsGbrMbsHbqcbsIbsJbsKbsLbsMbsNbsObsPbrRbsQbrXabpaRFabDabDabDaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaKjaKjaKjaKjaKjaQiaQibsRbsSbsTbsUbsVbsWbsXbsYbsZbtabtabtabtabtbbtcbtdaPeaTebteaFVaGTaFVaotabpabpbtfbtgbspabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaPhbthbtibtjbtkbtlbtmaPhabDabDabDabDabDabDabDabDabDabDabDabDabDaJVaJUbstbtnbaobapbtobtobtpbtqbtobtobtrbtobtobtsbttbtobtubtvbtobtwbtpbtobtobtxaIrbtybtzbpmbqcbtAbsEbtBbsEbtCbqcasObtDaWhbrQbsMbtEbtFbsPbrRbtGbrXabDaRFabpabpabpabpabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQibtHbtIbtJbtKaQibtLbtMbtNbtObtPbtQbtRbtQbtQbshbshaNObtSbtTaFVaFVbtUbtVbtVbtWabpaVwbtXbtYaMIaMIaMJaMIaMGaMIaMJaMIaMIaMIaMJaMIaMGaMIaMJbtZaMDabDaPhbbrbuabuabuabuaaPhaPhabDabDabDabDbubabDabDabDabDabDabDabDaJVaJVaJUbstbpbaBQbucbudbudbudbuebudbudbudbudbufbudbugbudbudbudbudbudbudbudbudbuhaMZbuibpmabDbqcbujbukbulbumbunbuobupbuqburbusbutbuubuvbuwbrRbuxbrXabDaRFabDabDabpabpaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQibuybuzbuAbuyaQibsfbuBbuCbuDbsjbsjbuEbuFbuGbuHbuIbuJbuKbuLbuMbuNbuObuPbuQbtWabpbuRabpabDabDabDabDabDabpabDabDabDabDabDabDabDabpabDabDaNTbrqaMDabpabDabDabpabpabDabDabpabDabDabDabDabDabDabDabDabDabDabDabDaJVaFVbuSaCEbpbaBQbuTbudbuUbuVbuWbuXbudbuYbuZbvabvbbvcbvdbvebudbvfbvgbvhbvgbudbviaJpbvjbpmabDbqcbqcbqcbqcbqcbqcbqcbvkasOaWhaWhaWhaWhaWhaWhaWhaWhaWhabDaRFabDabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaQiaQiaQiaQiaQiaQibsfbsjbvlbvmbvnbvobvpbvqbvnbvrbvsbvtaRCbvubvvbvwbvxbvxbvybvzaMEbvAabpabDabDabDabDabDabpaotabDabDabDabDabDabDabpabDabDabDaNTbtYaMHaMIaMIaMGaMHaMIaMIaMGaMJaMIaMIaMIaMJaMIbtZaMDbvBbvBbvBbvBaFVaYDbvCaCEbvDaYKbvEbudbvFbvGbvHbvIbudbvJbvKbvLbvMbvNbvabuYbudbvObvPbudbvQbudbvRaKYbvSbpmabDabDabDabDabDabDabDbpnbvkasObvTbvUbvVbvVbvVbvVbvVbvUabpabpaRFabDabDabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvXbvYbvZbwabshbwbbwcbwdbwebuGbuGbwfbwgbsjbwhbwibjHaPebwjbwkbwlbwmbwnbwobwpbwqbwrabpabDaJWaJWaJWabDabpabpabDabDaJWaJWabDabpabpabDabDabDabDabDabpaotabpabpabpabDabDabpabDabDabDabDabDabDaNTbtYbwsbwtbwubwvaFVaFVbuSaCEbtnaTubwwbudbwxbwybuebudbudbudbudbudbudbudbudbudbudbudbwzbudbudbudbwAaJpbwBbvTbvTbvTbvTbvTbvTbvTbvTbvTbwCbvTbvTbvUbvVbvVbvVbvVbwDbvUabpaRFaRFabDabDabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwEbwFbwFbwGbshbwHbsWbwIbwJbwKbwLbwMbwLbwLbshbshbwNaPebwOaFVbwPaFVaFVaFVaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVbwQbwQbwQaFVaFVaFVaFVaFVaFVbwRbwRbwRbwRbwSbwTbwUbwVaFVbwWbwXaCEbpbaBQbwwbudbwYbwZbxabwZbxbbxcbxdbxebxfbxgbxhbxibwZbxjbwZbxkbxlbudbuhaJpbxmbxnbxobxpbxqbxrbxsbxtbxubxubxvbxubxwbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabpaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbxxbvWbshbxybsWbxzbxAbtPbxBbxCbxCbxCbxDbxEbxFaPeaNQaFVaGTaGTaGTaGTaGTaGTaGTbbqbwXbwXbwXbxGbmebmebbqbwXbwXbwXbxGaGRbxHaGTbbqbwXbwXbwXbxGaGTaGTbbqbwXbwXbwXbxGaGTaGTaGTaGTbxIbxJbxKbxJbxJbxLbxMbxNbxOaFVbxPaGTaCEbtnbaoaIhbxQbxRbxSbxTbxUbxSbxVbxUbxSbxUbxUbxSbxSbxUbxUbxUbxWbxXbxYbxZbyabybbvTbycbydbyebyfbygbyhbyibyjbykbxubylbymbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbynbwFbvWbwFbyobshbsfbypbshbxAbsjbxBbxBbyqbxBbsjbshbyrbysbytaFVbyubyvbyuaFVaFVaFVaFVbywbyxaWIaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTaGTbyybyzaGTaGTaGTaGTbyAbalbyBaFVbvBbvBbvBbyCbxJbyDbyEbxJbxIaGTaGTaCEbpbaOfbyFbyGbyHbyIbyJbyKbyIbyJbyKbyIbyLbyKbyIbyMbyNbyObyPbyQbyRbySbyTbyUbyVbyWbyXbyYbyZbzabzbbzcbzcbzdbxubzebzfbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbzgbzhbzibzjbzkbshbzlbshbshbzmbshbshbshbshbshbshbshbznbzobzpaFVaFVaFVaFVaFVbzqbzqaFVaFVaFVaFVbzraFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVaFVbzsaFVaFVaFVbzqbzqbvBbvBbztbzubzvbvBaFVaFVaFVaCEbzwbzxbzybudbzzbzAbzBbzCbzAbzDbzCbzEbzBbzCbzFbzGbwZbzHbwZbzIbzJbudbzKbzLbzMbzNbxubxubxubzObzPbzcbzcbzQbxubzRbzSbvUbvVbvVbvVbvVbvVbvUabDaRFabDabDabDabpabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbzTbzUbzVbzWbzXbzYbzZbAabAabAbbAcbAdbAebAfbAgbAhbAibAjbAkbAlbAmbAnbAobAobApbAqbAqbArbAsbAobAobAobAobAtbAubAobAobAobAvbAwbAxbAybAzbAobAobAvbAobAtbAmbAAbABbACbADbAobAtbAEbAFbAobAobAGbAqbAqbAHbAobAIbAJbAKbALbAMbANbAobAObAPbzobAQbudbARbwxbudbASbwxbudbATbwxbudbAUbwxbudbAVbAWbAXbAYbAXbudbAZbsxbBabvTbBbbxubxubxubBcbBdbBebBfbxubxubBgbymbvVbvVbvVbvVbvVbvUabDaRFabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbBhbBibvWbBjbBkbBlbBmbBmbBmbBmbBnbBobBpbBqbBrbBrbBsbBtbBubBvbBwbBvbBvbBvbBvbBvbBxbBybBvbBvbBvbBvbBvbBvbBwbBvbBvbBvbBzbBvbBAbBBbBCbBDbBEbBzbBvbBvbBwbBFbBvbBGbBvbBvbBvbBHbBIbBDbBDbBDbBDbBDbBJbBDbBKbBLbBvbBvbBFbBGbBvbBGbBvbBMbBNbudbBObBPbudbBQbBPbudbBRbBPbudbBSbBPbudbAXbAWbAXbAYbBTbudbBUbmFbBVbBWbBXbBYbBZbBZbCabCbbBZbCcbCdbxubBgbvUbvVbvVbvVbvVbvVbvUabDaRFabDabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbCebCfbvWbvWbvWbwFbAcbCgbChbCibCjbCkbAcbClbCmbCnbCnbCnbCnbCnbCobCnbCpbCnbCnbCqbCnbCrbCsbCsbCsbCsbCtbCubCvbCwbCxbCybCzbCAbCBbCCbCDbCDbCDbCEbCDbCFbCDbCDbCGbCDbCHbCDbCDbCDbCDbCDbCIbCJbCKbCLbCMbCMbCNbCKbCMbCKbCMbCObCPbudbCQbCRbudbCQbCSbudbCQbCTbudbCQbCUbudbCVbCWbCVbAYbCXbudbCYbCZbDabvTbvTbvTbvTbvTbvTbvTbvTbvTbvTbDbbBgbvUbvVbvVbvVbvVbwDbvUabDaRFabDabpabpabpabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwFbDcbDdbvWbDebvWbwFbAcbDfbDgbDhbCjbDibDjbDkbDlbDmbDnbDobDjbDpbDjbDjbDqbDjbDjbDjbDrbDrbDsbDsbDrbDrbDrbDrbDrbDrbDtbDubDvbDwbDxbDwbDwbDwbDwbDybDwbDzbDAbDBbDBbDBbDBbDBbDBbDBbDBbDBbDCbDDbDEbDFbDGbDGbDHbDIbDGbDIbDJbDDbDCbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDKbDLbudbDMbDNbDNbDObDPbDQbDNbDRbDSbDTbDUbDNbDVbDWbDXbDNbDYbDZbvUbvVbvVbvVbvVbvVbvUabpaRFabDabDaotabpaotabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbEabEbbEcbvWbEdbvWbwFbAcbEebEfbEgbEgbEhbEibEjbEkbElbElbElbEmbEnbDjbEobEpbEqbErbDjbEsbEtbEubEvbEwbExbEybEzbEAbDrbEBbECbEDbDwbEEbEFbEGbEHbEIbEJbDwbEKbELbDBbEMbENbEObEPbEQbERbEQbDBbESbETbEUbEVbEWbEWbEXbEYbEWbEYbEWbEZbFabDKbFbbFcbFdbDKbFebFfbFgbFhbFibFjbFkbFlbFmbFnbFobFpbDNbFqbFrbFsbFtbFubDRbFvbDRbFwbDNbFxbFybFzbDNbvTbvTbvTbvVbvVbvVbvVbvVbvTabDaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbDebvWbwFbAcbFAbFBbFCbCjbFDbDjbFEbFFbFGbFGbFGbFHbFIbDjbFJbFKbFLbFMbDjbFNbFObFPbFQbFRbExbFSbFTbFUbDrbFVbFWbFXbDwbFYbFZbGabFZbGbbGcbDwbGdbGebDBbGfbGgbGhbGibEQbEQbGjbDBbEWbEWbGkbGlbEWbEWbGmbGnbGobGpbGqbGrbGsbGtbGubGvbGwbGxbGybGzbGAbGBbGCbGDbGEbGDbGFbGGbGHbELbDNbGIbGJbGKbFtbDRbDRbGLbGMbDRbGNbFxbFxbGObDNaabaabbvTbvTbvTbvTbvTbvTbvTabDaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbwFbAcbGPbGQbAcbGRbGSbDjbGTbGUbGTbGVbGVbGWbGVbDjbGXbFKbFLbGYbDjbGZbHabHbbHcbFRbExbHdbHebHfbDrbHgbFWbHhbHibHjbFZbFZbFZbFZbHkbDwbHlbHmbDBbHnbHobGhbHpbEQbEQbEQbDBbHqbGobHrbHsbHsbHsbHtbHubHvbHvbHwbEYbHxbDKbHybHzbHAbDKbHBbHCbHDbFhbHEbGDbHFbGDbHGbDKbHHbELbDNbHIbGJbGKbHJbHKbDRbHLbHMbHNbDNbDNbDNbDNbDNaaEaabaabaabaabaabaabaaEabpabpaRFabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbwFbHObDcbHPbDjbHQbHRbHSbHTbHUbHVbHWbHXbHYbHZbIabIbbFKbFLbIcbDjbIdbIebIdbIfbIgbIgbIdbIdbIdbDrbHgbFWbFXbIhbIibFZbFZbFZbFZbFZbIjbHlbIkbDBbDBbDBbIlbDBbDBbDBbDBbDBbImbEWbInbIobIpbIqbIqbIrbIpbIsbItbIubIvbIwbIxbGDbIybDKbFebHCbHDbFhbIzbIAbIBbICbIDbDKbIEbELbDNbIFbIGbIHbIIbIJbIKbIJbIJbILbILbIMbINbIObDNaaEaaEaabaabaabaabaaEaaEbIPaRFaRFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbIQbIRbAbbHPbDjbISbITbITbITbIUbIVbIWbIWbIWbIWbIXbIYbIZbJabJbbDjbJcbJdbJebJfbJgbJhbJibJhbJjbJkbJlbFWbFXbDwbJmbJnbFZbFZbJobJpbDwbHlbJqbDBbJrbJsbJtbJubJvbJwbJxbJybEXbEWbInbJzbJAbJBbEWbJCbJDbJEbItbJFbJGbDKbJHbGDbJIbDKbFebJJbJKbJLbJMbJNbJObJPbJQbDKbJRbELbDNbJSbGJbGKbJTbJUbDRbJUbJUbJVbDRbJWbDRbDRbJXaaEaaEaaEaabaabaaEaaEaaEabpaotaotabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbJYbAbbJZbKabHPbDjbKbbKcbKdbHWbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobDjbKpbKqbKrbKsbKtbKubKvbJcbKwbKxbKybFWbKzbDwbKAbKBbKCbKDbKEbKFbKGbHlbHmbDBbKHbHobGgbKIbKJbKKbKLbJybEXbEWbInbJzbEWbEWbEWbEYbEWbKMbItbJFbKNbDCbDCbDCbDCbDCbDCbDCbKObDKbDKbKPbDKbDKbDKbDKbKQbELbDNbKRbGJbGKbKSbGJbGJbGJbGJbDRbDRbKRbKRbDRbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKTbKUbKVaabaabaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbCfbvWbvWbKWbKXbDjbDjbDjbDjbKYbDjbDjbDjbDjbDjbDjbDjbDjbKZbLabKZbDjbIdbIdbIdbIdbIdbDsbLbbDsbDrbDrbLcbFWbLdbDwbDxbDwbDwbDwbDwbDwbDwbLebLfbDBbLgbGgbGgbLhbLibLjbJxbJybGmbLkbLlbDDbDJbDJbLmbDEbDJbDDbLnbLobLpbLqbDCbLrbLsbLsbLtbDCbLubLvbLwbLxbLybLzbLAbDKbHHbELbDNbLBbGJbGKbLCbLDbDRbLEbLEbDRbLFbFqbFqbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLHbLIbLJaabaabaabaabaabaabaacaacaacaacaacaacaacaadaadaabaabaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbLKbLLbLMbvWbKWbKXbLNbLObwEbvWbwFbwFbwFbLPbwEbLQbLRbLSbvWbLTbLUbLVbLWbLXbLYbLZbLYbMabMbbMcbMbbMdbMebLcbFWbMfbMgbMhbMibMjbMkbMlbMmbMjbHlbELbDBbMnbGgbGgbGgbMobMpbJxbJybEXbEWbMqbMrbMsbMtbMubMvbMwbDJbMxbJFbEWbMybMzbMAbMBbMCbMDbMEbMFbGvbMGbGvbGvbMHbMIbDKbMJbELbDNbMKbGJbMLbMMbMNbMNbMNbMNbMObLFbFqbMPbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMQbMRbMSbKVbMTbMTbMTbMTbMTaabaabaabaadaadaadaadaadaadaabaabaabaaEbMUaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbMVbwFbKWbMWbKWbKXbMXbwFbwFbvWbMYbMZbMZbNabMZbMZbMZbMZbNbbNcbNdbNebNfbNgbNhbNcbNcbNibNjbNkbNlbNmbNnbNobNpbNqbNrbNsbNtbNubNvbNwbNxbMjbHlbELbNybGgbGgbGgbGgbMobMpbJxbJybEXbEWbNzbDJbNAbNBbNCbNDbNEbDJbMxbNFbEWbMybNGbNHbNIbNJbNKbNLbNMbNNbNObNPbGDbGDbNQbDKbMJbELbDNbNRbGJbNSbNTbNUbDRbNUbDRbDRbLFbNVbNWbLGbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNXbNYbLIbNZbOabMTbObbOcbOdbMTaabaabaabaabaabaabaabaabaabaabaabaaEbOeaaEaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbOfbOgbOhbOibOjbOkbwFbwFbOlbvWbOmbOnbOobOobOobOobOobOpbOpbOpbOqbOrbOsbOpbOtbOtbOubOvbOwbOubOtbOtbOtbOxbFWbLdbMgbOybOzbOAbOBbOCbODbMjbHlbELbDBbOEbGgbOFbOGbOHbOIbOJbOKbOLbOMbONbDCbOObOPbOQbORbOSbDCbMxbJFbEWbOTbDCbOUbNIbEWbMybOVbOWbOXbNObGDbGDbGDbGDbOYbMJbELbDNbOZbFqbLGbPabPbbPbbPcbDRbDRbDRbIFbIFbDRbJXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKVbPdbPebPfbPgbPhbPibPjbMTaabaabaabaabaabaabaabaabaabaabbPkbPkaaEbPlaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbvWbvWbvWbvWbvWbKWbKXbPmbPnbPobvWbOmbwFbOobPpbPqbPrbOpbPsbPtbPubPvbPwbPxbOpbPybPzbPAbPBbPCbPDbPEbPFbPGbPHbFWbLdbMgbPIbPJbMjbMjbMjbMjbMjbPKbPLbPMbPNbPObPObPObPPbPQbPRbDCbPSbPTbPUbDCbPVbPWbPXbPYbPZbDCbDCbQabQbbDCbDCbQcbQdbQebQfbOVbQgbQhbQibQjbQkbQlbQmbDKbMJbELbDNbLFbNWbLGbDRbQnbQobQpbFqbQqbQrbDRbDRbQsbDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKVbQtbQubQvbMTbQwbQxbQybQzayJaaEaaEaaEaaEbPkaaEaaEaaEaaEaaEaaEbQAbQBaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkbvWbQCbQDbzhbQEbQFbQGbQHbQFbQFbQFbQFbQIbwFbOobQJbQKbQLbOpbQMbQNbQObQPbQQbQRbOpbQSbQTbQUbQVbQWbQXbQYbQZbOtbLcbFWbRabMgbMJbPJbMjbRbbRcbRdbMjbRebELbDBbRfbRgbGgbGgbMobRhbDBbRibRjbRkbRlbDCbDCbRmbRnbDEbDCbDCbRobRpbRqbRrbDCbDCbRsbRtbOVbOVbRubRvbRwbDKbDKbDKbDKbDKbMJbELbDNbDNbDNbDNbRxbDNbDNbDNbDNbDNbDNbDNbDNbDNbDNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMTbMTbMTbMTbRybMTbRzbRAbRBbRCbRDbREaaEbPkaaEaaEaabaabaabaabaabaaEaaEaaEaaEaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabbvWbQCbRFbzUbRGbRHbRIbRJbOgbOgbOgbOgbRKbwFbOobRLbRMbRLbOpbRNbRObRPbRQbRRbRSbOpbRTbQTbRUbRVbRWbRXbRYbRZbSabSbbFWbLdbMgbScbSdbSebSfbSgbShbMjbRebELbSibSjbSkbSlbSlbSmbSnbSobSpbSqbSrbSsbStbSubSvbSwbSxbSybSzbSAbSBbSCbSDbSEbSFbSGbSHbSIbSJbSKbSLbSDbSMbSNbSObSPbSQbScbSRbSRbSRbSSbSRbSRbSRbSRbGHbSTbSUbSVbSVbSVbSVbSVbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSWbSXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMTbMTbSYbSZbMTbTabMTbMTbMTbMTbMTayJbTbaaEaaEaabaabaabaabaabaabaabaabaabaabaabaabaabaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabbvWbvWbvWbvWbvWbvWbvWbvWbwFbwFbwFbwFbTcbOpbOpbTdbTebTdbOpbTfbTgbThbTibTjbTkbOpbTlbQTbRUbTmbTnbTobRYbTpbTqbLcbFWbLdbMgbELbPJbMjbTrbTsbTtbMjbTubOCbTvbTwbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbTKbRqbTLbTMbTNbTObTPbSwbTQbTRbSwbSrbSwbSrbTSbSlbSlbSlbTTbTUbELbTVbTWbTWbTWbTWbTXbTWbTWbTWbTWbTYbTZbMjaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUabUbbQubPibMTbUcbUdbUebUfbMTaabaabaabaabaabaabaabaadaadaadaadaadaabaabaabaabaabaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabaabbvWbUgbUhbUibUjbUkbUlbvWbvWbvWbvWbvWbTcbOpbUmbUnbUobUpbUqbUqbUqbUrbUsbUqbUtbOpbUubQTbUvbUwbUxbUybUzbUAbSabUBbUCbUDbMgbHmbPJbMjbMjbUEbMjbMjbPJbELbUFbUFbUFbUFbUGbUFbUFbUFbUHbUIbUJbUHbUKbUHbULbUMbUNbUObUPbUQbURbUObUNbUSbUTbUUbUVbUWbRkbUXbUYbSlbUZbVabVabVabVabVabVabVabVabVabVabVabVabVabMJbVbbMjaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVcbVdbVebVfbVgbVhbMTbVibVjbMTaabaabaabaabaabaadaadaadaacaacaacaadaadaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaNkaabaabaabaabbvWbwFbwFbVkbwFbwFbwFbwFbwFbwFbwFbvWbTcbOpbVlbUqbUqbVmbUqbUqbUqbVnbVobVpbVqbVrbVsbVtbVtbVtbVtbVtbVubVvbPGbVwbFWbVxbMgbVybVzbVAbVAbVBbVCbVAbVDbELbUHbVEbVFbVGbVHbVIbVJbUHbVKbVLbVMbVNbVObUHbSObVPbVQbVRbSObSObVSbVTbVUbVVbSObSObVWbSlbVXbVYbSlbSlbVZbWabWbbWcbWdbVabWebWfbWgbWhbWibWjbWkbVabMJbVbbMjaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWlbOabOabWmbMTbWnbMTbMTbMTbMTaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaNkaNkaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbWobwFbwFbWpbwEbPobwFbwFbwFbwFbWqbTcbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbOpbWrbWsbWtbWubWvbWwbWxbWybOtbWzbFWbWAbWBbWCbPLbPLbPLbPLbWDbPLbPLbPLbWEbWFbWGbWHbWIbWJbWKbWLbWMbWNbWObWPbWQbUHbWRbWSbWTbWUbWVbSObWWbWUbWXbWYbWZbSObXabXbbRkbSlbSlbSlbXcbXdbXebXfbXgbXhbXibXjbXkbXlbXmbXnbXobVabMJbVbbMjaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWbXpbMTbMTbMTbKVbMTaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbXqbwFbXrbvWbvWbvWbvWbXsbXsbXsbvWbXtbXubMZbMZbMZbXubXubXvbXwbXxbXybXzbXybXAbXwbXwbXBbXwbXwbXCbXDbXEbOtbLcbFWbLdbXFbXFbXFbXFbXFbELbPJbUHbUHbUHbUHbXGbXHbXHbXHbXIbXJbXKbXHbXLbXMbXHbXNbUHbXObSlbXPbXQbXRbVPbXSbXQbXPbXTbXUbSObXVbXWbXXbXYbXZbYabYbbVabYcbYdbYebYfbYgbYhbYibYjbYkbYlbYmbYnbYobYpbYqbYrbYrbYrbYragragrbYsagrbYsbYsbYsbYtbYsbYsbYsagrbYsbYsbYsbYsagragragragraaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabbYvaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbYwbwFbYxbvWbYybYzbvWbYAbwFbwFbvWbTcbYBbYBbXwbXwbXwbXwbYCbXwbYDbYEbYFbYGbYHbYIbYJbYKbYLbXwbMbbYMbYNbMebLcbFWbLdbXFbYObYPbYPbXFbELbPJbUHbYQbYRbYSbYTbYUbYVbYVbYVbYWbYXbYYbYZbZabZbbZcbYXbZdbTSbVYbXQbXRbVPbZebXQbSlbXTbZfbZgbZgbZhbZibZhbZgbZjbZgbVabVabVabVabZkbZlbZmbZnbZobZpbZqbZrbVabZsbZtbMjaabaabaabaabaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbVkbwFbwFbWqbwFbwFbZubwFbwFbwFbvWbTcbZvbZwbZxbZybZzbZAbZBbZAbZCbZDbZEbZFbZFbZFbZFbZGbZHbZIbLWbZJbZKbZLbZMbZNbZObZPbZQbZRbZSbXFbZTbZUbUHbZVbXHbZWbXHbXHbXHbXHbZXbZYbZZcaabXHcabbXLcacbZZcadbUXbUYbXQbXRbVPbZecaecafcagcahcaicajcakcalcamcanbZgcaobVacapcaqcarcascatcaucavbWibWibWibWibVabMJcawbMjaabaabaabaaEaaEaaEajNaaEcaxcaycazaaEcaxcaycazaaEcaxcaycazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEbvWbvWbvWbvWbvWbwFbwFbvWcaAcaAcaAbvWbTcbZvbZwbZxbZybZycaBcaCcaDcaEbZFbZFbZFcaFcaGcaHcaIcaJcaKcaLcaMcaNbNnbNocaOcaPbXFcaQcaRcaScaTbOCcaUbUHcaVcaWcaXcaYcaZcbabXHcbbcbcbUHcbdcbecbfcbgcbhbUHcbicbjcbkcblcbmbSOcbncbocbpbXTbSlcbqcbrcbrcbscbrcbtbZgcbubVacbvcbwcbxcbycbzbXfcbAcbBcbCcbDcbEbVabMJcawbMjaabaabaabaaEaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHcbHcbHcbGaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEcbIcbJcbJcbKcbKcbKcbKcbKbTcbZvbZwbZxbZycbLbZAcbMbZAcbNbZDbZEbZFbZFbZFcbOcbPcbQcbRbMbbMccbSbMebLccbTbMfbXFbXFbXFbXFbXFbELbPJbUHbUHbUHbUHbUHbUHbUHcbUbUHbUHbUHbUHbUHbUHcbVbUHbUHcbWcbXbSObSObSObSOcbYcbZccaccbcccccdcceccfccgcchccibZgccjbVacckcckcckcckcclccmcbAccnbXeccoccpbVaccqcawbMjaabaabaabaaEaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccsccrcbHcbHaabcbHcbHcbHcbHaaEaaEaaEaaEcctaaEaaEaaEaaEcctcbIcbKcbKcbKccuccvcbKccwccxbYBbYBbXwbXwbXwbXwccybXwcczccAccAccAccBccCccDccEccFbXwbMbbMcbMbbMebLcbFWbLdbMgccGccHccIbHmccJbZUbELbELbELbELbELbELccKbELbELbELbELbSPcbXccLccMccNccLccOccPcbXccQccRbSOccSccTccUccVccWccXccYccZcdacbrcdbbZgcdcbVacddcdecdfcbycdgcdhcdicdjcdkcdgcdlcdmcdncdobMjaabaabaabaabaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrcbHcbHcbHcdpcdqcdrcdscdscdscdscdscdscdscdscdscdscdscdtcducdtcdvcdwcdxcdycdzbOgbOgbOgbOgbOgbOgcdAbXwcdBcdCcdDcdDbXwbXwbXwcdEccybXBbMbbMcbMbbMebUBcdFcdGcdHcdIcdJcdJcdJcdKcdLcdMcdMcdMcdNcdMcdMcdOcdMcdMcdMcdMcdPcdQcdRcdScdTcdUcdVcdUcdWcdUcdUbSOcdXbSlbSlbSlcdYccdcdZcbrceacbrcebbZgcecbVacedceecefcascegcehceicascejcekcelbVacembHlcencencencenceoaaEaaEajNaaEcaxcbFcazaaEcaxcbFcazaaEcaxcbFcazaaEajNajNajNajNaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrccrccrcbHcbHcepceqcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcercercbKcescetcbKcbKceuceuceuceuceuceuceucevbMebMebMebMebMebMecewcexceycezcexcexceAceBceCceDceEceFbMgbMgbMgceGceGceGceHceGceGceGceIceGceGceGceGceGceGceGbVbcbXccLccMcdUccLcdUcdUcbXceJceKbSOceLbXYceMceNceObZgcePceQceRceSceTbZgbZgbVabVabVabVabVabVabVabVabVabVabVabVabVacembHlceUceVceWceXceoceoceoaaEaaEaaEceYaaEaaEaaEceYaaEaaEaaEceYaaEaaEaaEaaEaaEajOaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrceZcfaccrceZcfaccrccrcbHcfbcbHcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcercfccfdcfecffcfgcfhcficfjcfkcflcfmcfncfobLYcfpcfqcfrbLYbLYbLYbLYbZKbZJbLYbLYcfscftbMebLcbFWbLdbMgcfucfvceGcfwcfxcfyceGcfzcfAcfBcfCcfAceGcfAcfDcfEceGbVbcbXccLcfFcdUccLcdUcfGcbXcfHcfIbSObSObSObOYbSObSObZgbZgbZgcfJbZgbZgbZgcfKcfLcfMcfNcfOcfPbTWbTWbTWbTWbTWbTWbTWbTWcfQcfRcfScfTcfUcfVcfWcfXcfWcfYcfZcfZcfZcfZcfZcfZcfZcfZcfZcfZcfZcgacgbcgbcgcaaEajNaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrcgdcgecgfcggcghccrccrcgicgjcgkcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcglcercgmcgncgocgpcgqcgrbMbbMbbMbcgscgtcgucgvbMbcgwcgxcgycgzcgAcgBcgCcgDbNlbNlbNlcgEbMbbMecgFbFWcgGbMgbMgbMgceGcgHcgIcgJceGcgKcgLcgMcgNcfAcgOcfAcfEcfEceGbVbcbXccLcgPcgQccLcdUcgRcbXcbXcbXcbXbELcgSbELbELbELcgTbELbELbRebELbELbELbELbRebELbELbELcgUcgVcgWcgXcgYcgYcgYcgYcgYcgZchacenchbchcchdceoceoceoaaEaaEaaEcheaaEaaEaaEcheaaEaaEaaEcheaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHccrccrceZchfchgcgecgfcggchhchfchfchfchfchicbGaaEaaEaaEaaEcctaaEaaEaaEaaEcctaaEaaEcerchjcgnchkchlcbKcgrchmchnchochpchqchrchsbMbchtceuchuceuchvceuceuchwchxceuceuceuceubMechybFWchzbMgchAchBceGchCcfAchDceGchEchFchGchHchIceGcfAchJcfEceGbVbcbXcbXcbXcbXcbXcbXcbXcbXchKccJbTWbTWchLbTWbTWbTWbTWbTWbTWchLbTWbTWbTWbTWchMchNchNchNchNchOchPchQchRchRchRchRchRchRchRcencencencenceoaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNajNajOaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHccrccrccrcgichTchTchUcgfchVchTchTchTchTchTchWcbHaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcerchXchYchYchZcbKcgrbMbciacibchpchqcgucicbMbcidceuciecifcigcihciicijbMbceucikcilcimbMecinbUCciocipciqcirceGchEciscitciucivciwcixciycizceGceGceGceGceGciAciBbTWbTWbTWbTWbTWbTWbTWchLchMbELciCciCciCciCciCciCciCciCciCciCciCbMjciDbMjchNciEciFciGciHciIciJchRciKciLciMciNciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNaaEaaEaaEaaEaaEaaEbYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaacaacaacaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHciQccrccrccrcgfcgfciRciScgfcgfcgfcgfcgfcgfcgfciTayJayJayJayJayJayJayJayJayJayJayJayJciUciVciWciWciXcbKciYciZcjacjacjacjbcjccjdbNlcjecjfcjgcjhcjicjjciicjkbLYcjlcjmbLYcjncjocjpbFWciobMgcjqcjrceGchCcjscjtcjucjvcjwcjxcfAcjyceGcjzcjAcjBceGcjCcjDbELbHmcjEcjFcjGbELbELbELbELcjHciCcjIcjIcjIcjJcjKcjLcjMcjMcjMciCcjNbELcjOchNcjPcjQcjRciEcjScjTcjUcjVcjWcjXcjXciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajOaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHccrccrccrceZcjYcjYcjZcgfckacjYcjYcjYcjYcjYcjYcbHaaEaaEaaEaaEaaEaaEaaEaaEckbckbckbckbcercbKcbKcbKcbKcbKceuceucgucguchrcguceuckcbMbcidceuckdckeckfckgciickhcaMckickjckkcklbMeckmbFWcioceGceGceGceGceGceGceGceGceGcknckockpckqceGckrceGcksciCciCcktckuciCciCciCciCciCciCciCciCciCciCckvckwckxckyckzckyckAckBckCciCcjHbSPckDchNciEckEckFckGckGckHckIckJckIckKcjXciOciPciPchRaaEaaEaaEaaEaaEajNaaEcaxchScazaaEcaxchScazaaEcaxchScazaaEajNaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHccrccrcgicgjcgkcgecgfcggckLcgjcgjcgjcgjckMcbGaaEaaEaaEaaEcctaaEaaEaaEckbckNckNckOckNckNckPckQckQckQckPckRbMbckSckTckUckVckWbMbcidceuchuckXchuceuceuckYckZceuceuclaceubMeclbbFWcaPceGclccldcleclfceGcfAcfAclgclhcfBcfAclicljcfAcfAcfAciCclkcllckyclmclncloclpclpclpckyckyclmckyckyclqckyckyclrckyckyclscltciCcluclucluchRchRchNchNchNchNchNchRchRchRchRchRchRchRchRchRaaEaaEaaEaaEaaEajNaaEcaxclvcazaaEcaxclvcazaaEcaxclvcazaaEajNaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrcgdcgecgfcggcghccrccrceZchfchgcbHaabaaEaaEaaEaaEaaEaaEaaEckbclwclxclxclyclzclAclzclzclzclBclCclCclDclEclFclEclGclEclHclIclJclKclLclMclNclObMcceuclPclQclRbMebLcbFWclSceGclTcgIcivclUclVclWcivcivclXclYclZcmacmbcmccmccmcciCcmdcmecmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmfcmgcmfcmfcmhcmfcmicmhcmjcmkcmlcmmcmmcmnaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrcgicmoccrcgicmoccrccrcbHcbHcbHcbHaabaabaabaaEaaEaaEaaEaaEckbcmpcmpcmpcmqcmrcmrcmsclxclwckPbMbbMbcmtcaMbNkcmubNkbNlbNlcmvcmwcmxbNlbNlbNjbNlcgEceuclQclQclRbMebLcbFWbLdckpcfAcfAcmycjtcmzcjtcjtcjtcmAcmBcfAcmCcmDcmccmEcmFciCcmGcmHckyckyckyckyckyckyckyckycmIcmJcmKcmLcmMcmLcmLcmLcmLcmNcmLcmLcmOcmPcmmcmmcmnaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOaaEajNajNajNajNajNajNajNajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrccrccrcbHcbHaabaabaabaabaabaabaabaabaabbvWbvWckbckbckbckbcmQckbckbckbckbckbckbcmRchucmSchvcmRbMebMebMebMebMebMecmtbMbbMbbMccmTcmUceuclPcmVclRbMecmWbFWcmXcmYcmZcnacnbcnacnccnacnacnacndcnacnacnecmccmccnfcngciCcnhcnicmIcnjcnjcnjcnjcnkcnjcnjcnlcnmcnncnocnlcnjcnjcnjcnjcnpcnjcnqcnrcmPcmmcnsciCaaEaaEaaEaaEaaEaaEayJaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrccrccrccrccrcbHcbHaabaabaabaabaabaabaabaabaabaabbvWcntcnucnucnubvWcnvcnwcnxcnycnycnzcnAcnBcnCcnDcnEcnFcnGcnHcnIcnIcnIcnwcnJcnKcnKcnLcnKcnKcnMcnMcnMcnMcnMbLccnNcnOcnPcfAcmccnQcmccnRcmccmccmccnScnTcmccmccmccmccnUcnVciCckycmHcnWcnXcnYcnYcnYcnYcnYcnYcnYcnWcnrcnYcnYcnYcnYcnYcnYcnZcnYcoacnrcmPcmmcmmciCaaEciCciCciCciCciCaaEcobaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbHcbHccrcocccrcbHcbHaabaabaabaabaabaabaabaabaabaabaabbvWcodcoecoecoebvWbwFcnwcofcogcnIcohcoicojcokcolcomconcoocopcnIcnIcoqcnwcorcnKcoscotcoucnKcovcowcoxcoxcnMbHgcoycozcoAcmZcmZcoBcmZcoAcoCcfAcfAcoDcmbcfAcoEcmbcmccmEcmFciCckycmHcnWcoFcnYcoGcoHcoIcoJcoJcnYcnWcnrcnYcoKcoLcoMcoNcoOcoPcnYcoQcoRcnjcoScoTcoUcoVcoUcoWcoXcoYciCaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabcbGcbHcbHcbHcbGaabaabaabaabaabaabaabaabaabaabaabaabbvWcoZcpacpbcoebZubwFcnwcnIcnIcnIcpccpdcpecpfcpgcphcpicpjcpkcnycnycplcnwcorcnKcpmcpncpocppcppcpqcprcpscptcpucpvbLdceGcgHcfAcpwcpxceGcpycfAcfAcpzcpAcpBcpCcmDcmccmccmcciCcpDcmHcnWckyckycpEcpFcpGcpGcpHclmcpIcnrcpJcpKckyckyckycpLcpMcpJckycnrckycpNcmmcmnaaEcmncpOcpPcoYciCaaEajOaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaabbvWbvWbvWbvWbvWbvWbvWcpQcpRcoecoebvWbwFcnwcpScpScpScpScpScpTcpfcpgcphcpUcpScpScpScpScpScnwcorcnKcpVcotcpWcpXcpYcpZcqacqbcnMbHgbFWcozcqccqdcqecqeclfceGcqfcfAcqgclhcqhcfAcqgcqicfAcfAcfAciCcqjcmHcnWcqkcqlcpHckyckyckycpEcqmcqncnrcmncqocqpckycqqckycqrcnYcqscqtcqucqvcqwcqxcqycqxcqzcoYcoYciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabbvWbvWbvWbvWbVkcqAbVkbwFbwFbvWcqBcnucnucnubvWbwFcnwcnxcnycnycqCcqDcpecpfcpgcphcpicqEcqFcnIcnIcnIcnwcorcnKcqGcqHcpocqIcnKcqJcqKcqLcnMcqMcqNcqOceGceGceGceGceGceGceGceGceGceHceGceGciCciCciCciCciCciCckycmHcnWcmHckycpEcqmcqmcqmcpHcqPcqQcqRcmncqScqTckyckyckycqUcnYcqVcnrcmPcmmcmmciCaaEciCciCciCciCciCcqWcqXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabbvWcqYcqZbvWbwFbwFbwFbwFbwFbvWbvWbvWbvWbvWbvWbwFcnwcofcogcnIcracoicrbcpfcrccphcrdcoocrecnIcnIcoqcnwcrfcrgcrhcricrjcrkcnKcqKcqKcrlcnMcrmcrncrocrpcrqcrqcrqcrrcrscrtcrucrvcrwcrxcrycrzcrAcrBcrCcrDcrEcrFcnpckxcmHcnYcrGcrGcrHcrGcrGcnYcrIckycmncrJcrKckyckycrLcrMcnYcqVcnrcmPcmmcnsciCaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaadaadaadaadaadaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbVkcrNcrObwFbwFbVkcqAcrPcrQcrRcrSbvWbwFbwFbwFcnwcnIcnIcnIcrTcrUcpecrVcrWcphcpicpjcrXcnycnycplcnwbKWcnKcrYcrYcrYcrZcnKcqKcsacsbcsccsdcsecsfcsgcsgcsgcsgcsgcsgcsgcsgcshcsicsjcskcslcsmcsncsocspcsqcsncsrcsscmHcnYcnYcnYcnYcnYcnYcnYcstcsncsucsvcswcsxcsycsycszcnYcsAcnrcmPcmmcsBciCaaEciCciCciCciCciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbwFbwFbVkcsCbwFbwFcsDbwFbvWbwFcnwcnwcnwcnwcnwcnwcnwcnwcpecrVcsEcsFcsGcpScpScpScpScpScnwbKWcnKcsHcsHcsHcsHcnKcqKcqKcqKcnMcsIcsJcsKcsLcsMcsMcsMcsMcsMcsMcsMcsLcsNcsOcsPciCcsQcsRcsScsTcnYcsUcmecmfcsVcnYcsWcsXcsXcsYcsZcnYctacsUcnYcmncmncpJcmncmncnYcnYctbctccmLctdctectfctgctfcthctictjciCaaEajNaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbVkctkctlbwFbwFbVkcsCbwFctmctnctobvWbwFcnwcnIcnIctpcnIcnwctqctrctscttctuctvcpictwctxcnIcnIcnIcnwbKWcnKctycsHctzcsHcnKctActBctCcnMctDctEctFcsMaabaaEaaEaaEaaEaaEaabcsMcsNctGctHctHctIctJctKctLcnYctMcsrctNctNctOctNctNctNctNctNctOctNctPckyckyckyckyckyckyckyctQctRctSctTctUcmmcmnaaEcmnctVctjctjciCaaEcqXaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWctWctXbvWbwFbwFbwFbwFbwFbVkbVkbVkbvWbwFcnwcnIcnIcnIcnIcnwctYctZcuacubcuccubcrdcoocudcnIcnIcoqcnwbKWcnKcnKcnKcnKcnKcnKcnMcnMcnMbYBcuecrncsKcsMaabaabaaEaaEaaEaaEaaEcsMcufcugcuhcuicujcukculcumcnYckycmecunckycqscqucqucqucuocqucqucqucqucqucqucqucqucqucqucqucupcuqcurcuscutcuucuvcuwcuvcuxctjctjciCaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbwFbwFbwFbwFbwFcuybOnbwFbZubwFcnwcuzcnIcuAcuBcuCcuDcuEcuFcuGcpfcuGcpicpjcuHcnycnycplcnwbKWbwFbwFcuIbwFbwFbwFcuJbwFcuKcuLcuMcuNcsKcuOcsMcsMcsMcsMcsMcsMcsMcsLcufcugcuPcuQckyckyckycuRcuScmfcnickyckycuTcuUcmLcmLcuVcmKcmLcmLcmKcmLcmLcmLcmKcmLcmLcmLcmKcqRckycuWcmmcmmciCaaEciCciCciCciCciCaaEcobaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWcuXcuYcuZbwFbwFbwFbwFcsCcvacvbcvcbvWbwFcnwcvdcvecvfcnIcnIcvgcvhcvicokcvjcpfcvkcpScpScpScpScpScnwbJZbOgbOgcvlbOgbOgbOgcvmcvncvocsLcvpcvqcvrcvscvtcvucvvcvwcvxcvycvzcvAcvBcvCcvDcvEcvFcvGcvFcvHcnYcvIcvJcvKcvLcvMcvNcvOcvLcvMcvPcvQcvLcvRcvNcvScvLcvRcvNcvTcvLcvRcvUcvUcvVcmmcmmciCaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabbvWbvWbvWbvWbvWbvWbvWbZvbZvbvWbvWbvWbvWbwFcnwcnIcvWcnIcnIcvXcvYcvZcwacpfcuacpfcwbcwccwdcwdcwdcwdcnwbwFcsLcsLcsLcsLcsLcsLcsLcsLcsLcwecwfcrncwgcwgcugcwgcwgcwgcwhcugcwicwicwjcwkciCcmncmnciCciCciCciCcmmcmmcwlcwmcwncmmcwocwpcwqcwrcwlcwscwtcmmcwlcwucwtcmmcwlcwvcwtcmmcmmcmmcmmcmmciCaaEajNajOcobajNajNcqXajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEaaEcwwcwxcwxcwxcwxbwFcnwcnIcnIcnIcnIcnwcwycwzcwAcpfcuacpfcwBcwCcwdcwdcwdcwDcnwbwFcsLcwEcwFcwGcwHcwIcwJcwKcwLcwMcwNcwOcwPcwQcwQcwQcwQcwQcwRcwQcwQcwQcwScwTcsLabDabDabDabDabDciCcwUcwVcwWcmmcwXcwUcwWcmmcwYcwZcwWcmmcxacwUcwWcmmcxbcwUcwWcmmcxccxdcmmcwUcmmcmmciCaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaabaaEaaEaaEcwwcwwcwwcxecxfcxgcxhbwFcnwcnIcnIcxicnIcnwcxjcxkcxlcxmcxncpfcxocxpcwdcwdcwdcwdcnwbIQcxqcxrcxscxtcxucxucxscxscxvcxvcxvcxwcxxcwgcugcwgcwgcwgcxycugcwicwicugcxzcsLabDabDabDabDabDciCciCciCcxAcmncxBciCcxCcxDcxEciCcxAcmncxBciCcxAcmncxBciCcxAcmncxBciCciCciCciCcxFciCciCabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaabaabaabaabaabaaEcxGcxGcxGcxHcxIcxJcxIcxKcxLcxMcxNcxOcnwcnwcnwcnwcnwcnwcnwcnwcnwcnwcnwcxPcnwcnwcnwcnwcnwcnwcnwbDccsLcxQcxRcxScxRcxRcxTcxRcxRcxRcxRcxRcxRcxRcxRcxRcxTcxUcxVcxRcxRcxScxRcwfcsLabDabDabDabDabDadWadWabpcxWabpcxXabpcxYabpcxZabpcxWabpcxXabpcxYabpcxZabpcxWabpcxZabpabpabpciCcyacybciCabDabpabpabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEcwwcwwcwwcyccydcyecwxcyfbAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAabAbcsLcsLcygcsLcsLcsLcsLcyhcygcyhcyhcyhcyhcyhcygcyicsLcsLcsLcsLcyjcsLcsLcsLcsLabDabDabDabDabDaRFabpcykcxAcmncxBcykcxCcxDcxEcykcxAcmncxBcykcxAcmncxBcykcxAcmncxBcykabDabDcxFcylcymciCabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEajNajNajNajOajNaaEcxGaaEaaEaaEaaEaaEcwwcwxcwxcwxcwxcynbwFbwFbvWbvWbvWbvWbvWcyocypbwFcyqcyrcysbwFcypbPnbLQbvWbvWbvWbvWcytcyucyvabDabDabDcytcyucyvabpabpabpcytcyucyvabDabDabDcytcyucyvaaaaaaabDabpaotabpabpabpabpabpcykcywcyxcyycykcyzcyAcyBcykcyCcyDcyEcykcyFcyGcyHcykcyIcyJcyKcykabDabDciCciCciCciCabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEajOaaEbvWbvWbvWbvWbvWaaaaaaaaabvWbvWbvWbZvbZvbZvbZvbZvbvWbvWbvWbvWaaaaaacyLcyMcygcyNabDabDabDcyMcygcyNabpabpabpcyMcygcyNabDabDabDcyMcygcyNaaaaaaabDabDabpaotaotabpaRFabpcykcyOcyPcyQcykcyRcyScyTcykcyUcyVcyWcykcyXcyYcyZcykczaczbczccykabDabDabpabDabDabDabDabDczdczeabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczgczhczhcziczjcziczkabDabDczlczmczlabDabDabDczlcznczlabDabDczgczoczpczoczkaaaabDabDabpabDabpabDaotabpcykcyOcyOcyOcykcyRcyRcyRcykcyUcyUcyUcykcyXcyXcyXcykczaczaczacykabDabDabpabDabDabDabDabDabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaadaadaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEajOaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczxczyczzczAczBczkabDczlczCczlabDabDabDczlczCczlabDabDczDczEczFczGczDaaaabDabDaotabDabDabDaXIabpcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykcykabDabDabpabDabDabDabDabDabpczeabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaacaacaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEajNaaEczHczHczHczHczHaaEcxGaaEczHczHczHczHczHaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczgczoczIczJczzczzczzczBczKczoczLczCczMczNczNczNczLczCczMczoczoczxczOczFczGczBczkabDabDabDabDabDabDczPabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpczPabpabpabpabpabpabpbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaadaadaadaacaacaacaacaacaacaacaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczDczQczzczzczzczRczSczTczUczCczVczVczVczVczVczCczWczXczYcziczEczFczGczBczKczkabDabDabDabDabDczPaRFabpaotczPabpaRFczPczPaRFabpaRFabpczZczPczPaRFczPaRFaRFaotaRFczPabpaRFabpaRFczeczZczebIPbIPbIPabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaadaadaacaacaacaacaacaacaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczBczoczKczoczoczoczocAaczCczCczCczCczCczCczCczCczCczCczCczCczCcAbczFczFczFczicAcczDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDabDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAdcAecAfcAgcAhcAicAjczCcAkcAlcAlcAlcAlczCcAlcAlcAlcAlcAmczCczicAnczFczFcAbczFcziaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaacaacaacaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajOaaEczHczHczHczHczHaaEcxGaaEczHczHczHczHczHaaEajNaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAecAecAocApcAqcArcAsczCcAkcAtcAtcAtcAtczCcAtcAtcAtcAtcAmczCcAuczocziczoczocziczxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaacaacaacaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcxGaaEaaEaaEaaEaaEaaEaaEajOaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczicAvcAecAwcAxcAycAzcAAczCcAkczVczVczVczVczCczVczVczVczVcAmczCczicABczCczCcACczCcziaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaacaacaacaacaacaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEczfczfczfczfczfaaEcxGaaEczfczfczfczfczfaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczBczoczhczoczoczoczoczJczCczCczCczCczCczCczCczCczCczCczCczCczCcADczCczCczCczNcAEczDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabbYvaacaacaacaacaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEczqczrczrczrczrczscxGcxHcztcztcztcztczuaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczDcAFczCczCczCcAGczCcAHczWcAecAIcAlcAlcAlcAJcAecAKczTczYcziczCczCcALczBczhcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEczHczHczHczHczHaaEcANaaEczHczHczHczHczHaaEajNaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczoczIczhcAGczhcAGczIczhczoczoczoczoczNczNczNczoczoczoczoczoczxcAPczCcAQczBcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEcARaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczvczwczxcASczDcASczBcAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczDcATcAUcAVczDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOajNajNaaEajNaaEcARaaEaaEajNajOajNajNajNajNaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczKczKczicAWczicAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAOczocziczocAMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEcAXaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaaEbYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEajNajNajOajNajNaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYuaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEaaEbYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYubYubYubYubYubYuaaEaaEbYubYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYubYubYubYubYubYubYubYubYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYubYubYubYuaaabYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubYuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSwaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/_maps/map_files/AsteroidStation/z5.dmm b/_maps/map_files/AsteroidStation/z5.dmm new file mode 100644 index 00000000000..0e4c39ce479 --- /dev/null +++ b/_maps/map_files/AsteroidStation/z5.dmm @@ -0,0 +1,271 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space, +/area/space) +"b" = ( +/turf/closed/mineral/random/high_chance, +/area/mine/explored) +"c" = ( +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) + +( +1, +1, +1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcbbaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbaaaaabbaaaaaaaaaaaabbbbbbbbbccbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbbbbbbbbbbbbbbbbbbbbbaaaaaaaabbbbbbbbbbbccbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbaaaaaaaabbbabbbbbbbbbbbbbbbccbbbbbbbbbbbbbbbbbbbbbbaaaaaabbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaabbbbbbbbbccccbbbbbbbbbbbbbbbaaaaaaaaaaaaaaabbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbcbaaaaaaaaaaaaaaaaaaaaabbcaccbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaacccbbbbbbbbbbbccaaaaaaaaaaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbaaaaaaaaaaaaabbbbbbbbbbbbcaaaaaabbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbaaaaaaaabaaaaaabbbbbbbbbccaaaaabbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbaaaaaaaabbaaaaaaaabbbbbbbaaaaaacbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbcaaaaaaaaabbbaaaaaaacbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbaaaaaaaaaaaaaaaaaaaccbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index a0912232dcc..5ecccfef356 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -2781,7 +2781,7 @@ "bbA" = (/obj/structure/grille,/obj/structure/cable/cyan{icon_state = "0-8"},/obj/structure/cable/cyan{icon_state = "4-8"},/obj/structure/cable/cyan{icon_state = "2-4"},/obj/structure/cable/cyan{icon_state = "1-4"},/turf/open/floor/plating,/area/maintenance/asmaint2) "bbB" = (/obj/structure/cable/cyan{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/cyan/hidden,/turf/open/floor/plating,/area/maintenance/asmaint2) "bbC" = (/obj/structure/cable/cyan{icon_state = "1-8"},/turf/open/floor/plating,/area/maintenance/asmaint2) -"bbD" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/organ/internal/gland/bloody = 7, /obj/item/organ/internal/gland/bodysnatch = 4, /obj/item/organ/internal/gland/egg = 7, /obj/item/organ/internal/gland/emp = 3, /obj/item/organ/internal/gland/mindshock = 5, /obj/item/organ/internal/gland/plasma = 7, /obj/item/organ/internal/gland/pop = 5, /obj/item/organ/internal/gland/slime = 4, /obj/item/organ/internal/gland/spiderman = 5, /obj/item/organ/internal/gland/ventcrawling = 1, /obj/item/organ/internal/body_egg/alien_embryo = 1, /obj/item/organ/internal/hivelord_core = 2); lootcount = 3; name = "organ spawner"},/obj/structure/closet/secure_closet{name = "xenobiology research materials locker"; req_access_txt = "55"},/turf/open/floor/plasteel/white,/area/toxins/xenobiology) +"bbD" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/organ/gland/bloody = 7, /obj/item/organ/gland/bodysnatch = 4, /obj/item/organ/gland/egg = 7, /obj/item/organ/gland/emp = 3, /obj/item/organ/gland/mindshock = 5, /obj/item/organ/gland/plasma = 7, /obj/item/organ/gland/pop = 5, /obj/item/organ/gland/slime = 4, /obj/item/organ/gland/spiderman = 5, /obj/item/organ/gland/ventcrawling = 1, /obj/item/organ/body_egg/alien_embryo = 1, /obj/item/organ/hivelord_core = 2); lootcount = 3; name = "organ spawner"},/obj/structure/closet/secure_closet{name = "xenobiology research materials locker"; req_access_txt = "55"},/turf/open/floor/plasteel/white,/area/toxins/xenobiology) "bbE" = (/mob/living/simple_animal/mouse/brown,/turf/open/floor/wood,/area/maintenance/fore{name = "Security Maintenance"}) "bbF" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"}) "bbG" = (/obj/structure/closet/crate{name = "solar pack crate"},/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/solar_assembly,/obj/item/weapon/circuitboard/solar_control,/obj/item/weapon/electronics/tracker,/obj/item/weapon/paper/solar,/turf/open/floor/plating,/area/maintenance/fore{name = "Security Maintenance"}) diff --git a/_maps/map_files/BirdStation/z5.dmm b/_maps/map_files/BirdStation/z5.dmm index 3466e3566b1..95e62d3e425 100644 --- a/_maps/map_files/BirdStation/z5.dmm +++ b/_maps/map_files/BirdStation/z5.dmm @@ -56,7 +56,7 @@ "bd" = (/turf/closed/mineral/diamond,/area/mine/unexplored) "be" = (/mob/living/simple_animal/hostile/asteroid/basilisk,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) "bf" = (/obj/structure/alien/weeds,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"bg" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/organ/internal/body_egg/alien_embryo = 5, /obj/structure/alien/egg = 1); name = "xeno egg spawner2"},/turf/open/floor/plating/asteroid/airless,/area/mine/explored) +"bg" = (/obj/effect/spawner/lootdrop{loot = list(/obj/item/organ/body_egg/alien_embryo = 5, /obj/structure/alien/egg = 1); name = "xeno egg spawner2"},/turf/open/floor/plating/asteroid/airless,/area/mine/explored) "bh" = (/mob/living/simple_animal/hostile/asteroid/fugu,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) "bi" = (/turf/closed/mineral/random/high_chance,/area/mine/explored) "bj" = (/turf/closed/mineral/clown,/area/mine/explored) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 07aafa41947..87cdb1c609c 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -2302,11 +2302,16 @@ /turf/open/floor/plating, /area/aisat) "aee" = ( -/obj/machinery/porta_turret/syndicate{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/closed/indestructible/opshuttle, -/area/shuttle/syndicate) +/obj/structure/sign/map/right/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Port Hallway" + }) "aef" = ( /obj/structure/table, /obj/item/device/aicard, @@ -2848,12 +2853,12 @@ /turf/open/floor/plating, /area/shuttle/abandoned) "afr" = ( -/turf/open/space, -/turf/closed/wall/shuttle{ - dir = 8; - icon_state = "diagonalWall3" +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 }, -/area/shuttle/syndicate) +/turf/open/floor/plasteel/black, +/area/chapel/main) "afs" = ( /obj/item/device/radio/intercom{ desc = "Talk through this. Evilly"; @@ -5601,6 +5606,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, +/obj/structure/sign/map/left/dream{ + pixel_y = -32 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "alw" = ( @@ -5660,6 +5668,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, +/obj/structure/sign/map/right/dream{ + pixel_y = -32 + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "alC" = ( @@ -19748,7 +19759,7 @@ /obj/machinery/conveyor{ dir = 9; id = "QMLoad"; - verted = -1 + verted = 1 }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -27432,16 +27443,17 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "bcC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable/cyan{ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/asmaint) "bcD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + tag = "icon-manifold-r-f (NORTH)"; + dir = 1 }, /turf/open/floor/plating{ broken = 1; @@ -28187,14 +28199,13 @@ /area/maintenance/asmaint) "bee" = ( /obj/structure/cable/green{ - tag = "icon-1-2"; - icon_state = "1-2" + tag = "icon-4-8"; + icon_state = "4-8" }, /obj/structure/cable/green{ - tag = "icon-2-8"; - icon_state = "2-8" + tag = "icon-1-4"; + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/asmaint) "bef" = ( @@ -29738,17 +29749,13 @@ name = "Fore Port Hallway" }) "bhi" = ( -/obj/machinery/door/airlock/maintenance{ - name = "maintenance access"; - req_access_txt = "12" +/obj/machinery/airalarm{ + dir = 1; + icon_state = "alarm0"; + pixel_y = -22 }, -/obj/structure/cable/green{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/asmaint) +/turf/open/floor/plasteel/black, +/area/chapel/main) "bhj" = ( /obj/structure/sign/bluecross_2, /turf/closed/wall, @@ -30109,6 +30116,9 @@ tag = "icon-manifold-b-f (WEST)"; dir = 8 }, +/obj/structure/sign/map/left/dream{ + pixel_y = 32 + }, /turf/open/floor/plasteel, /area/hallway/primary/port{ name = "Fore Port Hallway" @@ -31167,19 +31177,14 @@ name = "Fore Port Hallway" }) "bjH" = ( -/obj/structure/cable/green{ - tag = "icon-2-4"; - icon_state = "2-4" - }, -/obj/structure/cable/green{ - tag = "icon-1-4"; - icon_state = "1-4" - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=AIW"; location = "QM" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + tag = "icon-2-4"; + icon_state = "2-4" + }, /turf/open/floor/plasteel, /area/hallway/primary/port{ name = "Fore Port Hallway" @@ -31847,9 +31852,6 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, /obj/structure/disposalpipe/segment{ dir = 4; icon_state = "pipe-c" @@ -31877,13 +31879,13 @@ pixel_x = 32; pixel_y = -40 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - tag = "icon-manifold-r-f (NORTH)"; - dir = 1 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + tag = "icon-manifold-r-f (WEST)"; + dir = 8 + }, /turf/open/floor/plasteel, /area/hallway/primary/port{ name = "Fore Port Hallway" @@ -33696,10 +33698,7 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bog" = ( -/obj/structure/table, -/obj/item/weapon/reagent_containers/spray/plantbgone, -/obj/item/weapon/reagent_containers/spray/plantbgone, -/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/machinery/plantgenes, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "boh" = ( @@ -52601,6 +52600,9 @@ c_tag = "Central Hallway South 3"; network = list("SS13") }, +/obj/structure/sign/map/left/dream{ + pixel_y = 32 + }, /turf/open/floor/plasteel, /area/hallway/primary/central) "bWu" = ( @@ -53900,35 +53902,9 @@ name = "Aft Port Hallway" }) "bYl" = ( -/obj/structure/sign/directions{ - dir = 4; - icon_state = "direction_supply"; - name = "cargo bay"; - pixel_y = -24; - tag = "icon-direction_supply" - }, -/obj/structure/sign/directions{ - dir = 4; - icon_state = "direction_bridge"; - name = "bridge"; - pixel_y = -32; - tag = "icon-direction_bridge" - }, -/obj/structure/sign/directions/engineering{ - dir = 1; - icon_state = "direction_eng"; - pixel_x = 0; - pixel_y = -40; - tag = "icon-direction_eng (NORTH)" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/machinery/camera{ - c_tag = "Aft Port Hallway West 3"; - dir = 1; - network = list("SS13") - }, /turf/open/floor/plasteel, /area/hallway/primary/aft{ name = "Aft Port Hallway" @@ -55360,10 +55336,6 @@ /turf/open/floor/plasteel/black, /area/chapel/main) "cbf" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, /obj/machinery/light/small{ dir = 1 }, @@ -61544,11 +61516,6 @@ /turf/open/floor/plasteel/black, /area/chapel/main) "cnx" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, /obj/machinery/light/small, /turf/open/floor/plasteel/black, /area/chapel/main) @@ -64419,14 +64386,9 @@ /turf/closed/wall, /area/maintenance/asmaint2) "ctk" = ( -/obj/structure/cable/green{ - tag = "icon-1-2"; - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 }, -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/asmaint2) "ctl" = ( @@ -71423,7 +71385,8 @@ /obj/machinery/conveyor{ dir = 6; id = "QMLoad"; - tag = "cargoshuttledown" + tag = "cargoshuttledown"; + verted = -1 }, /turf/open/floor/plating, /area/quartermaster/storage) @@ -77739,14 +77702,22 @@ /area/space) "cRz" = ( /turf/closed/wall, -/area/space) +/area/space/nearstation) "cRA" = ( -/turf/open/floor/plating/airless, -/area/space) +/obj/structure/cable/green{ + tag = "icon-1-2"; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/grille, +/obj/structure/window/reinforced/tinted/fulltile, +/turf/open/floor/plating, +/area/maintenance/asmaint2) "cRB" = ( /obj/structure/grille, /turf/open/floor/plating/airless, -/area/space) +/area/space/nearstation) "cRC" = ( /obj/machinery/airalarm{ dir = 8; @@ -77759,6 +77730,9 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, +/obj/item/weapon/reagent_containers/spray/plantbgone, /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "cRD" = ( @@ -77925,6 +77899,182 @@ "cRX" = ( /turf/closed/wall/rust, /area/chapel/office) +"cRY" = ( +/obj/structure/cable/green{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/map/right/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cRZ" = ( +/obj/structure/cable/green{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/map/left/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/entry) +"cSa" = ( +/obj/structure/cable/green{ + tag = "icon-2-8"; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cSb" = ( +/obj/machinery/door/airlock/maintenance{ + name = "maintenance access"; + req_access_txt = "12" + }, +/obj/structure/cable/green{ + tag = "icon-1-2"; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/asmaint) +"cSc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/map/right/dream{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Fore Port Hallway" + }) +"cSd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/map/left/dream{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Fore Port Hallway" + }) +"cSe" = ( +/obj/structure/cable/green{ + tag = "icon-4-8"; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/green{ + tag = "icon-1-4"; + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port{ + name = "Fore Port Hallway" + }) +"cSf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/map/left/dream{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/black, +/area/bridge) +"cSg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/map/right/dream{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/black, +/area/bridge) +"cSh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/sign/map/right/dream{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"cSi" = ( +/obj/structure/sign/map/left/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Port Hallway" + }) +"cSj" = ( +/obj/structure/sign/map/right/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Port Hallway" + }) +"cSk" = ( +/obj/structure/sign/directions{ + dir = 4; + icon_state = "direction_supply"; + name = "cargo bay"; + pixel_y = -24; + tag = "icon-direction_supply" + }, +/obj/structure/sign/directions{ + dir = 4; + icon_state = "direction_bridge"; + name = "bridge"; + pixel_y = -32; + tag = "icon-direction_bridge" + }, +/obj/structure/sign/directions/engineering{ + dir = 1; + icon_state = "direction_eng"; + pixel_x = 0; + pixel_y = -40; + tag = "icon-direction_eng (NORTH)" + }, +/obj/machinery/camera{ + c_tag = "Aft Port Hallway West 3"; + dir = 1; + network = list("SS13") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Port Hallway" + }) +"cSl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/map/left/dream{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft{ + name = "Aft Port Hallway" + }) (1,1,1) = {" aaa @@ -87796,7 +87946,7 @@ aaa aaa aaa aaa -cRA +amd aaa aaa aaa @@ -87813,7 +87963,7 @@ aaa aae aae aaa -cRA +amd aaa aaa aaa @@ -88064,7 +88214,7 @@ aaa aaa aaa aaa -cRA +amd aaa aae aae @@ -88074,7 +88224,7 @@ cRz aaa aaa aaa -cRA +amd aab aaa aaa @@ -88573,18 +88723,18 @@ aaa aaa aaa aaa -cRA +amd aaa aaa aaa aaa -cRA +amd aae aaa aaa aaa aae -cRA +amd aaa aaa aaa @@ -88824,7 +88974,7 @@ aaa aaa aaa aaa -cRA +amd aae aae anR @@ -88835,7 +88985,7 @@ aae aae aae aae -cRA +amd aaa aaa aaa @@ -89606,7 +89756,7 @@ aae aae aaa aaa -cRA +amd aae aaa aaa @@ -89809,7 +89959,7 @@ aaa aaa aaa aaa -afr +acj acm acm acm @@ -90060,7 +90210,7 @@ aaa aaa aaa aaa -afr +acj acm acm acm @@ -91187,7 +91337,7 @@ bnF bUK bVJ bXf -bVb +cSi bUI cbe cda @@ -91418,9 +91568,9 @@ aZo bbg bcC bee -awe -bhi -bie +auq +bhg +cSc bjH bkH bmr @@ -91444,7 +91594,7 @@ bnG bUL bVK bXg -bVb +cSj bUI bZI cdb @@ -91674,11 +91824,11 @@ aXL aBD bbh bcD -auq -auq -bhg -bif -bjI +cSa +awe +cSb +bie +cSe bkI bms bnH @@ -91703,14 +91853,14 @@ bVL bXh bYl bUI -bZI +afr cda cfb cgL cgN ckg clL -bZI +bhi bUI cqX cnQ @@ -91934,7 +92084,7 @@ bcE bef bfB bhg -big +bif bjI bkJ bmt @@ -91958,7 +92108,7 @@ bmt bmt bVM bXi -bYm +cSk bUI cbf cdc @@ -92373,7 +92523,7 @@ acy acm acm acm -aee +acm acm acm acm @@ -93921,7 +94071,7 @@ aaa aaa aaa aaa -aei +acL acm acm acm @@ -99698,7 +99848,7 @@ cgO cgO cgO cgO -cRA +amd cRz aae aaa @@ -99955,8 +100105,8 @@ cdx cdx cdi cgO -cRA -cRA +amd +amd cRB aae aae @@ -100212,9 +100362,9 @@ cvL cIY cmf cgO -cRA -cRA -cRA +amd +amd +amd cRz aae aaa @@ -104527,7 +104677,7 @@ aYl aYl aYl aRV -big +cSd bjR blf bmL @@ -104551,7 +104701,7 @@ bTH bmL bVM bXi -bYm +cSl caa cbF cdG @@ -104784,7 +104934,7 @@ bdl bez bgg aRV -big +cSc bjR bkT bmH @@ -104808,7 +104958,7 @@ bTL bmH bVM bXi -bYm +aee caa cbL cdH @@ -105848,7 +105998,7 @@ cmo cnY cpN crF -ctj +ctk cpP cpP cpP @@ -106105,8 +106255,8 @@ cmp ckD cpO crG -ctk ccg +cRA ccg ccg ccg @@ -114512,7 +114662,7 @@ ahw ahw ahv akQ -alw +cRY alU alU ant @@ -114829,7 +114979,7 @@ bQz bze bUc bhC -bWs +cSh bXD bZb cav @@ -117082,7 +117232,7 @@ ahw ahw ahv akV -alw +cRZ alZ amO anD @@ -119187,7 +119337,7 @@ btz btz btz bBh -bDd +cSf bFw bHE bJG @@ -119444,7 +119594,7 @@ bvs bxw bzG bBh -bDd +cSg bFz bHI bJG diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm index d5de9eb36f1..9a976b2f168 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm @@ -60283,9 +60283,7 @@ pixel_y = 0 }, /obj/item/weapon/folder/blue, -/obj/item/clothing/head/collectable/HoS{ - desc = "It's your turn to demand excessive paperwork, signatures, stamps, and hire more clowns! Papers, please!"; - icon_state = "hopcap"; +/obj/item/clothing/head/collectable/HoP{ name = "novelty HoP hat" }, /obj/machinery/light/small{ @@ -61690,8 +61688,12 @@ /area/library) "bVL" = ( /obj/structure/table/wood, -/obj/item/weapon/paper, /obj/machinery/light, +/obj/item/toy/cards/deck/cas, +/obj/item/toy/cards/deck/cas/black{ + pixel_x = -2; + pixel_y = 6 + }, /turf/open/floor/wood, /area/library) "bVM" = ( @@ -90518,7 +90520,7 @@ /obj/item/weapon/nullrod{ pixel_x = 4 }, -/obj/item/organ/internal/heart, +/obj/item/organ/heart, /obj/item/device/soulstone/anybody, /obj/effect/landmark{ name = "revenantspawn" diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 1125e5b1318..4b6ad4ccfca 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -52505,7 +52505,9 @@ /area/solar/port) "ccY" = ( /obj/structure/table, -/obj/item/weapon/storage/fancy/cigarettes, +/obj/item/weapon/kitchen/rollingpin, +/obj/item/weapon/reagent_containers/food/condiment/enzyme, +/obj/item/weapon/reagent_containers/food/condiment/sugar, /turf/open/floor/plating, /area/maintenance/aft) "ccZ" = ( @@ -53384,9 +53386,11 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "ceV" = ( -/obj/item/clothing/under/rank/vice, /obj/structure/closet, -/obj/item/clothing/shoes/jackboots, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, /turf/open/floor/plating, /area/maintenance/aft) "ceW" = ( @@ -63979,8 +63983,9 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "cAy" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, /turf/open/floor/plating, -/area/maintenance/electrical) +/area/maintenance/aft) "cAz" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -63994,39 +63999,42 @@ }, /area/chapel/office) "cAA" = ( -/turf/open/floor/wood, -/area/crew_quarters/bar) -"cAB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "showroomfloor" - }, -/area/crew_quarters/kitchen) -"cAC" = ( -/turf/open/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/crew_quarters/kitchen) -"cAD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "warnplate"; +/obj/machinery/light/small{ dir = 1 }, -/area/maintenance/disposal) +/turf/open/floor/plating, +/area/maintenance/aft) +"cAB" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plating, +/area/maintenance/aft) +"cAC" = ( +/obj/structure/sink/kitchen{ + dir = 8; + pixel_x = 11 + }, +/turf/open/floor/plating, +/area/maintenance/aft) +"cAD" = ( +/obj/structure/table, +/obj/item/weapon/kitchen/knife, +/obj/item/weapon/storage/box/donkpockets, +/turf/open/floor/plating, +/area/maintenance/aft) "cAE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/food/condiment/saltshaker{ + pixel_y = 2 }, -/turf/open/floor/plasteel{ - icon_state = "dark" +/obj/item/weapon/reagent_containers/food/condiment/peppermill{ + pixel_x = 2 }, -/area/medical/morgue) +/obj/item/weapon/reagent_containers/food/snacks/mint{ + pixel_y = 9 + }, +/turf/open/floor/plating, +/area/maintenance/aft) "cAF" = ( /turf/open/floor/plating, /area/maintenance/disposal) @@ -64049,10 +64057,9 @@ /turf/open/floor/plating, /area/crew_quarters/heads) "cAH" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) +/obj/machinery/processor, +/turf/open/floor/plating, +/area/maintenance/aft) "cAI" = ( /obj/machinery/conveyor_switch/oneway{ convdir = -1; @@ -64066,8 +64073,9 @@ /turf/open/floor/plating, /area/maintenance/disposal) "cAK" = ( +/obj/machinery/light/small, /turf/open/floor/plating, -/area/maintenance/asmaint2) +/area/maintenance/aft) "cAL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /mob/living/simple_animal/hostile/lizard{ @@ -64077,10 +64085,15 @@ /turf/open/floor/plasteel, /area/janitor) "cAM" = ( -/turf/open/floor/plasteel{ - icon_state = "floorgrime" +/obj/structure/table/wood, +/obj/structure/disposalpipe/segment, +/obj/item/toy/cards/deck/cas, +/obj/item/toy/cards/deck/cas/black{ + pixel_x = -2; + pixel_y = 6 }, -/area/maintenance/aft) +/turf/open/floor/wood, +/area/library) "cAN" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance"; @@ -83657,10 +83670,10 @@ apQ aaf bCq bCq -bLv -bLv bCq -aaf +bCq +bCq +bCq cfx cfx chO @@ -83913,11 +83926,11 @@ bXv bLv aaf bCq -bHE -ccd +cAy +cAB ccY -bLv -aaf +cAD +cAH cfw cgA chP @@ -84170,11 +84183,11 @@ bHE bLv aaf bCq +cAA bHE bHE ccZ -bCq -bCq +cAK cfw cgC chR @@ -84428,9 +84441,9 @@ bLv bLv bCq bHE -bCq -bCq -bCq +cAC +ccZ +cAE ceV cfw cgB @@ -84684,9 +84697,9 @@ bHE bYu bZk bCq -bHE +bTz +bCq bCq -bSq bCq bCq cfw @@ -84943,7 +84956,7 @@ bZj bCq bHE bCq -bHE +bSq cdW ceW bCq @@ -108273,7 +108286,7 @@ aFu aHc aIw aJS -aJS +cAM aMJ aNP aOS diff --git a/_maps/map_files/generic/z6.dmm b/_maps/map_files/generic/z6.dmm index ebde3b06dfa..82a78c133c6 100644 --- a/_maps/map_files/generic/z6.dmm +++ b/_maps/map_files/generic/z6.dmm @@ -41,8 +41,8 @@ "aO" = (/obj/machinery/computer/operating,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating/airless,/area/awaymission/BMPship/Aft) "aP" = (/turf/closed/wall/shuttle{icon_state = "swall3"},/area/awaymission/BMPship/Aft) "aQ" = (/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/awaymission/BMPship/Aft) -"aR" = (/obj/structure/closet/crate/freezer,/obj/item/organ/internal/appendix,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) -"aS" = (/obj/structure/closet/crate/freezer,/obj/item/organ/internal/brain,/obj/item/organ/internal/appendix,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) +"aR" = (/obj/structure/closet/crate/freezer,/obj/item/organ/appendix,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) +"aS" = (/obj/structure/closet/crate/freezer,/obj/item/organ/brain,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) "aT" = (/obj/structure/table,/obj/item/stack/packageWrap,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) "aU" = (/obj/structure/table,/obj/item/weapon/storage/box,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) "aV" = (/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/BMPship/Aft) @@ -118,7 +118,7 @@ "cn" = (/obj/structure/kitchenspike,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "co" = (/obj/structure/closet/crate,/obj/item/device/analyzer,/obj/item/stack/spacecash/c10,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cp" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c1000,/obj/item/stack/spacecash/c200,/obj/item/stack/spacecash/c500,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) -"cq" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice,/obj/item/organ/internal/appendix,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) +"cq" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice,/obj/item/organ/appendix,/obj/item/weapon/reagent_containers/food/snacks/meat/slab,/obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cr" = (/obj/machinery/button/door{id = "packerCargo"; pixel_y = -24},/obj/machinery/light/small,/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "ct" = (/turf/open/floor/plating{icon_state = "warnplate"; dir = 6},/area/awaymission/BMPship/Aft) @@ -379,43 +379,43 @@ "ho" = (/turf/open/floor/plating/airless,/area/awaymission) "hp" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/awaymission) "hq" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless,/area/awaymission) -"hr" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/awaymission) -"hs" = (/obj/item/wallframe/apc,/turf/open/floor/plating/airless,/area/awaymission) -"ht" = (/obj/structure/ore_box,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless,/area/awaymission) -"hu" = (/obj/item/stack/cable_coil{amount = 5},/turf/open/floor/plating/airless,/area/awaymission) -"hv" = (/obj/structure/ore_box,/turf/open/floor/plating/airless,/area/awaymission) -"hw" = (/obj/machinery/computer/arcade,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hx" = (/obj/effect/decal/remains/human,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hA" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/wallframe/apc,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hB" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/syndicate/green/dark,/obj/effect/gibspawner/generic,/turf/open/floor/plating/asteroid/airless,/area/awaymission) -"hC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) -"hD" = (/obj/machinery/door/unpowered/shuttle,/turf,/area/awaymission/BMPship/Fore) -"hE" = (/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) -"hF" = (/obj/effect/gibspawner/robot,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/BMPship/Fore) -"hG" = (/obj/effect/gibspawner/robot,/turf/open/floor/plating/airless,/area/awaymission) -"hH" = (/obj/structure/mecha_wreckage/ripley,/turf/open/floor/plating/airless,/area/awaymission) -"hI" = (/obj/structure/bed,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hJ" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/storage/wallet/random,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hK" = (/obj/structure/closet,/obj/item/clothing/under/lawyer/bluesuit,/obj/item/clothing/suit/apron,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hL" = (/obj/item/clothing/suit/space/syndicate/green/dark,/turf/open/floor/plating/asteroid/airless,/area/awaymission) -"hM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) -"hN" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "panelscorched"},/area/awaymission) -"hO" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating/airless,/area/awaymission) -"hP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/awaymission) -"hQ" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating,/area/awaymission/BMPship/Aft) -"hR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hT" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) -"hU" = (/turf/closed/wall/shuttle{icon_state = "swall13"},/area/awaymission/BMPship/Fore) -"hV" = (/turf/closed/wall/shuttle,/area/awaymission/BMPship/Fore) -"hW" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg3"},/area/awaymission) -"hX" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hY" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) -"hZ" = (/obj/machinery/door/unpowered/shuttle,/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) -"ia" = (/obj/structure/mirror{pixel_y = 28},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) -"ib" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) +"hr" = (/obj/item/wallframe/apc,/turf/open/floor/plating/airless,/area/awaymission) +"hs" = (/obj/structure/ore_box,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless,/area/awaymission) +"ht" = (/obj/item/stack/cable_coil{amount = 5},/turf/open/floor/plating/airless,/area/awaymission) +"hu" = (/obj/structure/ore_box,/turf/open/floor/plating/airless,/area/awaymission) +"hv" = (/obj/machinery/computer/arcade,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hw" = (/obj/effect/decal/remains/human,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hy" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hz" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/wallframe/apc,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hA" = (/obj/effect/decal/remains/human,/obj/item/clothing/head/helmet/space/syndicate/green/dark,/obj/effect/gibspawner/generic,/turf/open/floor/plating/asteroid/airless,/area/awaymission) +"hB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) +"hC" = (/obj/machinery/door/unpowered/shuttle,/turf,/area/awaymission/BMPship/Fore) +"hD" = (/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) +"hE" = (/obj/effect/gibspawner/robot,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/awaymission/BMPship/Fore) +"hF" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg2"},/area/awaymission) +"hG" = (/obj/structure/mecha_wreckage/ripley,/turf/open/floor/plating/airless,/area/awaymission) +"hH" = (/obj/structure/bed,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hI" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/item/weapon/storage/wallet/random,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hJ" = (/obj/structure/closet,/obj/item/clothing/under/lawyer/bluesuit,/obj/item/clothing/suit/apron,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hK" = (/obj/item/clothing/suit/space/syndicate/green/dark,/turf/open/floor/plating/asteroid/airless,/area/awaymission) +"hL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/floor/plating/airless,/area/awaymission/BMPship/Fore) +"hM" = (/obj/effect/gibspawner/robot,/turf/open/floor/plating/airless,/area/awaymission) +"hN" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating/airless,/area/awaymission) +"hO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/awaymission) +"hP" = (/obj/machinery/door/unpowered/shuttle,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating,/area/awaymission/BMPship/Aft) +"hQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"hT" = (/turf/closed/wall/shuttle{icon_state = "swall13"},/area/awaymission/BMPship/Fore) +"hU" = (/turf/closed/wall/shuttle,/area/awaymission/BMPship/Fore) +"hV" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "panelscorched"},/area/awaymission) +"hW" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hX" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) +"hY" = (/obj/machinery/door/unpowered/shuttle,/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) +"hZ" = (/obj/structure/mirror{pixel_y = 28},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) +"ia" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/awaymission/BMPship/Aft) +"ib" = (/turf/open/floor/plating/airless{broken = 1; icon_state = "platingdmg3"},/area/awaymission) "ic" = (/obj/item/weapon/caution,/turf/open/floor/plating/airless,/area/awaymission) "id" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/awaymission) "ie" = (/obj/structure/closet/crate,/obj/item/stack/spacecash/c10,/obj/item/stack/spacecash/c200,/turf/open/floor/plasteel,/area/awaymission/BMPship/Aft) @@ -433,7 +433,7 @@ "iq" = (/turf/open/floor/plating,/turf/closed/wall/shuttle{icon_state = "swall_f6"; dir = 2},/area/awaymission/BMPship/Fore) "ir" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/floor/engine,/area/awaymission/BMPship/Fore) "is" = (/turf/closed/mineral/diamond,/area/awaymission) -"it" = (/turf/closed/wall/shuttle{icon_state = "wall3"},/area/awaymission) +"it" = (/turf/closed/mineral/clown,/area/awaymission) "iu" = (/turf/closed/mineral,/area/awaymission) "iv" = (/turf/closed/wall/r_wall,/area/awaymission/listeningpost) "iw" = (/turf/open/floor/plating,/area/awaymission/listeningpost) @@ -444,33 +444,33 @@ "iB" = (/obj/structure/table,/turf/open/floor/plasteel,/area/awaymission/listeningpost) "iC" = (/turf/open/floor/plasteel,/area/awaymission/listeningpost) "iD" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating,/area/awaymission/listeningpost) -"iE" = (/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"iF" = (/obj/machinery/computer/message_monitor,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iG" = (/obj/structure/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate{desc = "A weary looking syndicate operative."},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iH" = (/obj/structure/table,/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "november report"},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iI" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iJ" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/syndicate,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iK" = (/obj/machinery/door/airlock,/obj/structure/safe/floor,/obj/item/weapon/paper{info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilised your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear it's ugly head again. -Donk Co. Operative #451"; name = "odd report"},/obj/item/weapon/gun/projectile/automatic/pistol,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iL" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/closed/mineral,/area/awaymission) -"iM" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/mineral,/area/awaymission) -"iN" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/airless,/area/space) -"iO" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iP" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iQ" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iR" = (/obj/structure/disposalpipe/segment,/turf/closed/mineral,/area/awaymission) -"iS" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iT" = (/obj/structure/closet,/obj/item/clothing/gloves/boxing,/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iU" = (/obj/structure/filingcabinet,/obj/item/weapon/paper{info = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it."; name = "april report"},/obj/item/weapon/paper{info = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment."; name = "may report"},/obj/item/weapon/paper{info = "Nanotrasen communications have been noticably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it."; name = "june report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "july report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "august report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "september report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "october report"},/obj/item/weapon/paper{info = "1 x Stechtkin pistol - $600
1 x silencer - $200
shipping charge - $4360
total - $5160"; name = "receipt"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iV" = (/obj/structure/table,/obj/item/weapon/paper{info = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us."; name = "mission briefing"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iW" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"iX" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/awaymission/listeningpost) -"iY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/mineral,/area/awaymission) -"iZ" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) -"ja" = (/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) -"jb" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) -"jc" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) -"jd" = (/turf/closed/mineral/clown,/area/awaymission) -"je" = (/turf/open/floor/plasteel/airless{icon_state = "gcircuit"},/area/awaymission) +"iE" = (/obj/machinery/computer/message_monitor,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iF" = (/obj/structure/chair{dir = 4},/mob/living/simple_animal/hostile/syndicate{desc = "A weary looking syndicate operative."},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iG" = (/obj/structure/table,/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "november report"},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iH" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iI" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/syndicate,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iJ" = (/obj/machinery/door/airlock,/obj/structure/safe/floor,/obj/item/weapon/paper{info = "I wonder how much longer they will accept my empty reports. They will cancel the case soon without results. When the pickup comes, I will tell them I have lost faith in our cause, and beg them to consider a diplomatic solution. How many nuclear teams have been dispatched with those nukes? I must try and prevent more from ever being sent. If they will not listen to reason, I will detonate the warehouse myself. Maybe some day in the immediate future, space will be peaceful, though I don't intend to live to see it. And that is why I write this down- it is my sacrifice that stabilised your worlds, traveller. Spare a thought for me, and please attempt to prevent nuclear proliferation, should it ever rear it's ugly head again. -Donk Co. Operative #451"; name = "odd report"},/obj/item/weapon/gun/projectile/automatic/pistol,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/closed/mineral,/area/awaymission) +"iL" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/mineral,/area/awaymission) +"iM" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/airless,/area/space) +"iN" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iO" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iP" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iQ" = (/obj/structure/disposalpipe/segment,/turf/closed/mineral,/area/awaymission) +"iR" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iS" = (/obj/structure/closet,/obj/item/clothing/gloves/boxing,/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iT" = (/obj/structure/filingcabinet,/obj/item/weapon/paper{info = "A good start to the operation: intercepted Nanotrasen military communications. A convoy is scheduled to transfer nuclear warheads to a new military base. This is as good a chance as any to get our hands on some heavy weaponry, I suggest we take it."; name = "april report"},/obj/item/weapon/paper{info = "Nothing of real interest to report this month. I have intercepted faint transmissions from what appears to be some sort of pirate radio station. They do not appear to be relevant to my assignment."; name = "may report"},/obj/item/weapon/paper{info = "Nanotrasen communications have been noticably less frequent recently. The pirate radio station I found last month has been transmitting pro-Nanotrasen propaganda. I will continue to monitor it."; name = "june report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "july report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "august report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "september report"},/obj/item/weapon/paper{info = "Nothing of interest to report."; name = "october report"},/obj/item/weapon/paper{info = "1 x Stechtkin pistol - $600
1 x silencer - $200
shipping charge - $4360
total - $5160"; name = "receipt"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iU" = (/obj/structure/table,/obj/item/weapon/paper{info = "Mission Details: You have been assigned to a newly constructed listening post constructed within an asteroid in Nanotrasen space to monitor their plasma mining operations. Accurate intel is crucial to the success of our operatives onboard, do not fail us."; name = "mission briefing"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iV" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/awaymission/listeningpost) +"iX" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/mineral,/area/awaymission) +"iY" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/open/floor/plasteel,/area/awaymission/listeningpost) +"iZ" = (/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) +"ja" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) +"jb" = (/obj/structure/toilet{icon_state = "toilet00"; dir = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/awaymission/listeningpost) +"jc" = (/turf/closed/wall/shuttle{icon_state = "wall3"},/area/awaymission) +"jd" = (/turf/open/floor/plasteel/airless{icon_state = "gcircuit"},/area/awaymission) +"je" = (/turf/open/floor/plating/asteroid/airless,/area/mine/explored) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -551,22 +551,22 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasgvgwghgxgygzczcHcHcHcHcHcHcHcHgAcHdMcHgBeeeeeeeeeeeedOdOdOescHdbgCdddddddddQgDgEaPdBgFbcgGayaxazfdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaasaaaaaaaagHgIgJgigzczcHgKcHcHcHcHgLcHgMgLcIcHgKcHcHcHgKcHcHcHcHgKcHcHcRaxaAgNaCaAgOaCaxazaAgPaCcifdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQacaaasaagRasaagSagaggTgUgVcgcgcgcgcgcgcggWgXgYgZcgcgcgcgcgcgcgcgcgcgcgcgcgbPdldldldlhadkhbhchdhaekheaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQacaaaaaaaaaahfakhgcdhhhihjhkgghlgihmgQgQgQgQhnacachohpachqhoachphshthuhvaPhwdlbcdldlhxhyhyhyhyhzhAaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQhBaaaaaaaaaahCalalhDhEgvhEhjhFhEhjgQgQgQgQgQgQhmachrhHhoachphohohohohohobahbdldlhIdlhJdlhIdldldlhKaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQachLaaaaaaaaaahMakalbOgigihjgghjgihjhmgQgQgQhmgQgQgQachGachohohohohohohOhPhQhRhRhRhRhRhSdldldlaCaxaxbPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaahTacafagaghUaghVgQhjhmgQgQgQgQgQgQgQgQgQgQgQhphrhohoachohohNhohobGdldlhXhYdlhIdlhIdlhZiaibaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQhmachrhohohWicicicidaPieifdlbcdldldldldlbGigihfdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQacaaaaaaaaaahfakhgcdhhhihjhkgghlgihmgQgQgQgQhnacachohpachqhoachphrhshthuaPhvdlbcdldlhwhxhxhxhxhyhzaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQhAaaaaaaaaaahBalalhChDgvhDhjhEhDhjgQgQgQgQgQgQhmachFhGhoachphohohohohohobahbdldlhHdlhIdlhHdldldlhJaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQachKaaaaaaaaaahLakalbOgigihjgghjgihjhmgQgQgQhmgQgQgQachMachohohohohohohNhOhPhQhQhQhQhQhRdldldlaCaxaxbPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaahSacafagaghTaghUgQhjhmgQgQgQgQgQgQgQgQgQgQgQhphFhohoachohohVhohobGdldlhWhXdlhHdlhHdlhYhZiaaPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQhmachFhohoibicicicidaPieifdlbcdldldldldlbGigihfdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiiacacacgQgQgQgQgQgQgQgQgQgQgQhmgQgQgQgQgQgQgQgQhmijikikikikikikikazaxaxaxayaAgNaCayayazaxfdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaailakhgcdimarinavioaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaaapalalaqaripiqioaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaairakalbOaniqioaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgQgQacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaaafagaghUagioaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgQgQacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaaafagaghTagioaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQisgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQgQgQgQgQjdgQgQgQgQgQgQgQgQgQgQgQacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQgQjdgQgQjdgQgQgQgQgQgQgQgQgQacacacacgQgQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQgQgQgQgQitgQgQgQgQgQgQgQgQgQgQgQacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQgQacacacgQgQgQitgQgQitgQgQgQgQgQgQgQgQgQacacacacgQgQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQgQgQacacacacgQgQgQgQgQgQgQgQgQgQgQgQgQgQgQacacgQgQgQgQgQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagQgQacacacacacacgQgQgQgQgQgQgQgQgQgQgQgQacacacacgQgQgQgQgQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacgQgQgQgQgQgQgQgQacacacacaaaaaagQgQgQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -620,16 +620,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviwixiviuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviyizivivivivaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviAiBiCiCiDiwiwiDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviFiGiHiCiCiDiwiwiDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuaaaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviIiBiCiCivivivivaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuacaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviCiCiCiJiviuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviviKiziziziviuiLiMiMiNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviOiPiziCiCiCiQiviuiRiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviCiCiyiCiCiCiSiviuiRiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviTiUiziViCiWiXiXiMiYiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviviviZiziviuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuivjajbiviuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuivjajciviuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviEiFiGiCiCiDiwiwiDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuaaaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviHiBiCiCivivivivaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuacaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviCiCiCiIiviuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviviJiziziziviuiKiLiLiMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviNiOiziCiCiCiPiviuiQiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviCiCiyiCiCiCiRiviuiQiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviSiTiziUiCiViWiWiLiXiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviviviYiziviuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviZjaiviuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviZjbiviuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiviviviviuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -639,30 +639,30 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacacaciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdiuiuiuiuiuiuiuacacaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdiuiujdiuiuiuacacacaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiujdiuiuiuiuiuiuiuiuiuiuiuiuacaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiujdjdiuiuiuiuiuiuiuiuiuiuiuacaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiujdjdiuiuiuiuiuiuiuiuiuiuiuacaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdiuiuiuiuiuiuaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuititiuiuiuiuiuiuiuacacaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuitiuiuitiuiuiuacacacaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuitiuiuiuiuiuiuiuiuiuiuiuiuacaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuititiuiuiuiuiuiuiuiuiuiuiuacaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuititiuiuiuiuiuiuiuiuiuiuiuacaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuitiuiuiuiuiuiuaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuititiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuitiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuititiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacacacacaciuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacaaaaaaaaiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacaciuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuitititititititiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacjejejejejeitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujejejejejeitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujejejejeitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiEiuiuiuiuiuiuiuiuiuiuiuiuiuiujejejejejeitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiEiEiuiuiuiuiuiuiuiuiuiuiuiuiuacjejejejeitiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaiEiuiuiuiuiuiuiuiuiuiuiuiuacacitititititiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujcjcjcjcjcjcjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuacjdjdjdjdjdjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdjdjdjdjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdjdjdjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujeiuiuiuiuiuiuiuiuiuiuiuiuiuiujdjdjdjdjdjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiujejeiuiuiuiuiuiuiuiuiuiuiuiuiuacjdjdjdjdjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaajeiuiuiuiuiuiuiuiuiuiuiuiuacacjcjcjcjcjciuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiuiuiuiuiuiuaaaaaaaaaaaaiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuiuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -729,4 +729,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index fabe22f95c4..dd8ce2bdb96 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -13,19 +13,7 @@ #define SLOT_POCKET 2048 //this is to allow items with a w_class of 3 or 4 to fit in pockets. #define SLOT_DENYPOCKET 4096 //this is to deny items with a w_class of 2 or 1 to fit in pockets. -//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. -#define HIDEGLOVES 1 -#define HIDESUITSTORAGE 2 -#define HIDEJUMPSUIT 4 //these first four are only used in exterior suits -#define HIDESHOES 8 -#define HIDEMASK 16 //these last six are only used in masks and headgear. -#define HIDEEARS 32 // (ears means headsets and such) -#define HIDEEYES 64 // Whether eyes and glasses are hidden -#define HIDEFACE 128 // Whether we appear as unknown. -#define HIDEHAIR 256 -#define HIDEFACIALHAIR 512 - -//slots +//SLOTS #define slot_back 1 #define slot_wear_mask 2 #define slot_handcuffed 3 @@ -49,6 +37,49 @@ #define slots_amt 20 // Keep this up to date! +//I hate that this has to exist +/proc/slotdefine2slotbit(slotdefine) //Keep this up to date with the value of SLOT BITMASKS and SLOTS (the two define sections above) + . = 0 + switch(slotdefine) + if(slot_back) + . = SLOT_BACK + if(slot_wear_mask) + . = SLOT_MASK + if(slot_belt) + . = SLOT_BELT + if(slot_wear_id) + . = SLOT_ID + if(slot_ears) + . = SLOT_EARS + if(slot_glasses) + . = SLOT_EYES + if(slot_gloves) + . = SLOT_GLOVES + if(slot_head) + . = SLOT_HEAD + if(slot_shoes) + . = SLOT_FEET + if(slot_wear_suit) + . = SLOT_OCLOTHING + if(slot_w_uniform) + . = SLOT_ICLOTHING + if(slot_l_store, slot_r_store) + . = SLOT_POCKET + + +//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. +#define HIDEGLOVES 1 +#define HIDESUITSTORAGE 2 +#define HIDEJUMPSUIT 4 //these first four are only used in exterior suits +#define HIDESHOES 8 +#define HIDEMASK 16 //these last six are only used in masks and headgear. +#define HIDEEARS 32 // (ears means headsets and such) +#define HIDEEYES 64 // Whether eyes and glasses are hidden +#define HIDEFACE 128 // Whether we appear as unknown. +#define HIDEHAIR 256 +#define HIDEFACIALHAIR 512 + + //Cant seem to find a mob bitflags area other than the powers one // bitflags for clothing parts - also used for limbs diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 9d0840adf36..d5c37b89886 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -55,8 +55,8 @@ #define FACEHAIR 4 #define EYECOLOR 8 #define LIPS 16 -#define COLDRES 32 -#define HEATRES 64 +#define RESISTCOLD 32 +#define RESISTHEAT 64 #define RADIMMUNE 128 #define NOBREATH 256 #define NOGUNS 512 diff --git a/code/__DEFINES/genetics.dm b/code/__DEFINES/genetics.dm index dd3b99c0e86..4cf307dbf34 100644 --- a/code/__DEFINES/genetics.dm +++ b/code/__DEFINES/genetics.dm @@ -80,7 +80,7 @@ #define TR_KEEPSRC 128 #define TR_KEEPORGANS 256 -//Organ stuff, It's here because "Genetics" is the most relevant file for organs +//Organ stuff, It's here because "Genetics" is the most relevant file for organs and bodyparts #define ORGAN_ORGANIC 1 #define ORGAN_ROBOTIC 2 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 0a62f085b66..f05b74117d9 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -60,7 +60,7 @@ #define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian)) -#define islimb(A) (istype(A, /obj/item/organ/limb)) +#define islimb(A) (istype(A, /obj/item/bodypart)) #define isbot(A) (istype(A, /mob/living/simple_animal/bot)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 928ce91fe3d..e13ea1a5174 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -23,13 +23,13 @@ #define FRIDAY_13TH "Friday the 13th" //Human Overlays Indexes///////// -#define SPECIES_LAYER 27 // mutantrace colors... these are on a seperate layer in order to prvent -#define MUTATIONS_LAYER 26 //mutations. Hulk, Tk headglows, etc -#define BODY_BEHIND_LAYER 25 -#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup) -#define BODY_ADJ_LAYER 23 -#define AUGMENTS_LAYER 22 -#define FRONT_MUTATIONS_LAYER 21 //mutations that should appear above body and augments layer (e.g. laser eyes) +#define MUTATIONS_LAYER 27 //mutations. Tk headglows, cold resistance glow, etc +#define SPECIES_LAYER 26 // mutantrace colors... these are on a seperate layer in order to prvent +#define BODY_BEHIND_LAYER 25 //certain mutantrace features (tail when looking south) that must appear behind the body parts +#define BODYPARTS_LAYER 24 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag +#define BODY_ADJ_LAYER 23 //certain mutantrace features (snout, body markings) that must appear above the body parts +#define BODY_LAYER 22 //underwear, undershirts, socks, eyes, lips(makeup) +#define FRONT_MUTATIONS_LAYER 21 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes) #define DAMAGE_LAYER 20 //damage indicators (cuts and burns) #define UNIFORM_LAYER 19 #define ID_LAYER 18 @@ -60,7 +60,7 @@ #define UNDER_BODY_LAYER BODY_LAYER+1 #define UNDER_BODY_ADJ_LAYER BODY_ADJ_LAYER+1 #define UNDER_MUTATIONS_LAYER MUTATIONS_LAYER+1 -#define UNDER_AUGMENTS_LAYER AUGMENTS_LAYER+1 +#define UNDER_BODYPARTS_LAYER BODYPARTS_LAYER+1 #define UNDER_DAMAGE_LAYER DAMAGE_LAYER+1 #define UNDER_UNIFORM_LAYER UNIFORM_LAYER+1 #define UNDER_ID_LAYER ID_LAYER+1 @@ -88,7 +88,7 @@ #define ABOVE_BODY_LAYER BODY_LAYER-1 #define ABOVE_BODY_ADJ_LAYER BODY_ADJ_LAYER-1 #define ABOVE_MUTATIONS_LAYER MUTATIONS_LAYER-1 -#define ABOVE_AUGMENTS_LAYER AUGMENTS_LAYER-1 +#define ABOVE_BODYPARTS_LAYER BODYPARTS_LAYER-1 #define ABOVE_DAMAGE_LAYER DAMAGE_LAYER-1 #define ABOVE_UNIFORM_LAYER UNIFORM_LAYER-1 #define ABOVE_ID_LAYER ID_LAYER-1 @@ -283,6 +283,7 @@ var/list/bloody_footprints_cache = list() #define TURF_WET_WATER 1 #define TURF_WET_LUBE 2 #define TURF_WET_ICE 3 +#define TURF_WET_PERMAFROST 4 //Object/Item sharpness #define IS_BLUNT 0 @@ -316,6 +317,7 @@ var/list/bloody_footprints_cache = list() #define SENTIENCE_ARTIFICIAL 2 #define SENTIENCE_OTHER 3 #define SENTIENCE_MINEBOT 4 +#define SENTIENCE_BOSS 5 //Fire stuff, for burn_state #define LAVA_PROOF -2 diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm index 097ac213004..bd7af5a9e0a 100644 --- a/code/__DEFINES/sight.dm +++ b/code/__DEFINES/sight.dm @@ -16,7 +16,10 @@ #define INVISIBILITY_OBSERVER 60 #define SEE_INVISIBLE_OBSERVER 60 -#define INVISIBILITY_MAXIMUM 100 +#define INVISIBILITY_MAXIMUM 100 //the maximum allowed for "real" objects + +#define INVISIBILITY_ABSTRACT 101 //only used for abstract objects (e.g. spacevine_controller), things that are not really there. + #define BORGMESON 1 #define BORGTHERM 2 diff --git a/code/__HELPERS/bandetect.dm b/code/__HELPERS/bandetect.dm index ee15f67a602..97c7e1567c6 100644 --- a/code/__HELPERS/bandetect.dm +++ b/code/__HELPERS/bandetect.dm @@ -6,7 +6,7 @@ if(!query.Execute()) world.log << "SQL ERROR doing datediff. Error : \[[query.ErrorMsg()]\]\n" - return + return FALSE if(query.NextRow()) var/diff = text2num(query.item[1]) @@ -15,6 +15,7 @@ if(diff < 0) msg += " They are also apparently from the future." message_admins("[key_name_admin(src)] [msg]") + return TRUE #undef YOUNG @@ -22,6 +23,7 @@ var/http[] = world.Export("http://byond.com/members/[src.ckey]?format=text") if(!http) world.log << "Failed to connect to byond age check for [src.ckey]" + return FALSE var/F = file2text(http["CONTENT"]) if(F) @@ -31,4 +33,4 @@ var/y = R.group[1] var/m = R.group[2] var/d = R.group[3] - join_date_check(y,m,d) \ No newline at end of file + return join_date_check(y,m,d) diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index 8e27b4e2acb..60bce0fa978 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -17,8 +17,8 @@ var/list/sqrtTable = list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, var/a = arccos(x / sqrt(x*x + y*y)) return y >= 0 ? a : -a -/proc/Ceiling(x) - return -round(-x) +/proc/Ceiling(x, y=1) + return -round(-x / y) * y #define Clamp(CLVALUE,CLMIN,CLMAX) ( max( (CLMIN), min((CLVALUE), (CLMAX)) ) ) diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index ded24179173..7f5b1709a6c 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -26,6 +26,9 @@ var/Debug2 = 0 var/global/comms_key = "default_pwd" var/global/comms_allowed = 0 //By default, the server does not allow messages to be sent to it, unless the key is strong enough (this is to prevent misconfigured servers from becoming vulnerable) +//Cross server communications +var/global/cross_address = "byond://" //This needs to be global as the message sent contains the comms key. +var/global/cross_allowed = 0 //Don't bother attempting to send if the address wasn't set. //This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage var/MAX_EX_DEVESTATION_RANGE = 3 diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 26838de68c3..826a61fb9ab 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -58,6 +58,9 @@ return var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["middle"]) + ShiftMiddleClickOn(A) + return if(modifiers["shift"] && modifiers["ctrl"]) CtrlShiftClickOn(A) return @@ -264,6 +267,10 @@ A.CtrlShiftClick(src) return +/mob/proc/ShiftMiddleClickOn(atom/A) + src.pointed(A) + return + /atom/proc/CtrlShiftClick(mob/user) return diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 40bb0c2d7d0..e7baed52506 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -26,7 +26,7 @@ H.quick_equip() /obj/screen/ling - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT /obj/screen/ling/sting name = "current sting" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 2fc47ab95be..ef8ecf90a8b 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -81,6 +81,7 @@ /obj/screen/inventory/hand var/image/active_overlay var/image/handcuff_overlay + var/image/blocked_overlay /obj/screen/inventory/hand/update_icon() ..() @@ -89,6 +90,8 @@ if(!handcuff_overlay) var/state = (slot_id == slot_r_hand) ? "markus" : "gabrielle" handcuff_overlay = image("icon"='icons/mob/screen_gen.dmi', "icon_state"=state) + if(!blocked_overlay) + blocked_overlay = image("icon"='icons/mob/screen_gen.dmi', "icon_state"="blocked") overlays.Cut() @@ -97,6 +100,12 @@ var/mob/living/carbon/C = hud.mymob if(C.handcuffed) overlays += handcuff_overlay + if(slot_id == slot_r_hand) + if(!C.has_right_hand()) + overlays += blocked_overlay + else if(slot_id == slot_l_hand) + if(!C.has_left_hand()) + overlays += blocked_overlay if(slot_id == slot_l_hand && hud.mymob.hand) overlays += active_overlay diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 374b077d67a..d981f93f573 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -23,7 +23,7 @@ return I.attack(src, user) -/obj/item/proc/attack(mob/living/M, mob/living/user, def_zone) +/obj/item/proc/attack(mob/living/M, mob/living/user) if(flags & NOBLUDGEON) return if(!force) @@ -34,7 +34,7 @@ user.lastattacked = M M.lastattacker = user - M.attacked_by(src, user, def_zone) + M.attacked_by(src, user) add_logs(user, M, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") add_fingerprint(user) @@ -57,11 +57,11 @@ if(I.force) user.visible_message("[user] has hit [src] with [I]!", "You hit [src] with [I]!") -/mob/living/attacked_by(obj/item/I, mob/living/user, def_zone) +/mob/living/attacked_by(obj/item/I, mob/living/user) if(user != src) user.do_attack_animation(src) - if(send_item_attack_message(I, user, def_zone)) - if(apply_damage(I.force, I.damtype, def_zone)) + if(send_item_attack_message(I, user)) + if(apply_damage(I.force, I.damtype)) if(I.damtype == BRUTE) if(prob(33)) var/turf/location = get_turf(src) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 8f818f47a88..7a561b426ee 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -17,12 +17,15 @@ loc = get_turf(A) /mob/dead/observer/ClickOn(var/atom/A, var/params) - + if(client.click_intercept) if(call(client.click_intercept,"InterceptClickOn")(src,params,A)) return var/list/modifiers = params2list(params) + if(modifiers["shift"] && modifiers["middle"]) + ShiftMiddleClickOn(A) + return if(modifiers["middle"]) MiddleClickOn(A) return diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index a053de3efa2..5ca614626ff 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -5,11 +5,15 @@ Otherwise pretty standard. */ /mob/living/carbon/human/UnarmedAttack(atom/A, proximity) - var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines + + if(!has_active_hand()) //can't attack without a hand. + src << "You look at your arm and sigh." + return // Special glove functions: // If the gloves do anything, have them return 1 to stop // normal attack_hand() here. + var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines if(proximity && istype(G) && G.Touch(A,1)) return @@ -89,9 +93,10 @@ return var/mob/living/carbon/ML = A var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/item/organ/limb/affecting = null - if(ishuman(ML)) // why the hell is this not more general - affecting = ML:get_organ(ran_zone(dam_zone)) + var/obj/item/bodypart/affecting = null + if(ishuman(ML)) + var/mob/living/carbon/human/H = ML + affecting = H.get_bodypart(ran_zone(dam_zone)) var/armor = ML.run_armor_check(affecting, "melee") if(prob(75)) ML.apply_damage(rand(1,3), BRUTE, affecting, armor) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 743d1328a13..067730d32bf 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -202,6 +202,7 @@ var/client_error_version = 0 var/client_error_message = "Your version of byond is too old, may have issues, and is blocked from accessing this server." + var/cross_name = "Other server" /datum/configuration/New() var/list/L = subtypesof(/datum/game_mode) @@ -359,6 +360,12 @@ global.comms_key = value if(value != "default_pwd" && length(value) > 6) //It's the default value or less than 6 characters long, warn badmins global.comms_allowed = 1 + if("cross_server_address") + global.cross_address = value + if(value != "byond:\\address:port") + global.cross_allowed = 1 + if("cross_comms_name") + cross_name = value if("see_own_notes") config.see_own_notes = 1 if("soft_popcap") diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 89861f4a237..d48be2c82c4 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -69,6 +69,15 @@ var/global/datum/controller/master/Master = new() return world << "Initializing subsystems..." + var/tally = 0 + var/obj/effect/spawner/lootdrop/maintenance/L = new() + // Grab it before it gets deleted + var/list/loot = L.loot.Copy() + for(var/item in loot) + tally += loot[item] + world.log << "There are [tally] items in the \ + maintenance loot table." + preloadTemplates() // Pick a random away mission. createRandomZlevel() @@ -162,19 +171,20 @@ var/global/datum/controller/master/Master = new() else priority_queue -= SS if(SS.can_fire > 0) - if(priorityrunning || ((SS.next_fire <= world.time) && (SS.last_fire + (SS.wait * 0.75) <= world.time))) - if(!priorityrunning && (world.tick_usage + SS.tick_usage > TICK_LIMIT_TO_RUN) && (SS.last_fire + (SS.wait*1.25) > world.time)) - if(!SS.dynamic_wait) - priority_queue += SS - continue + if(priorityrunning || ((SS.next_fire <= world.time) && (SS.last_fire + (SS.wait * 0.75) <= world.time || SS.paused))) //we can't reset SS.paused after we fire, incase it pauses again, so we cache it and // send it to SS.fire() var/paused = SS.paused + if(!priorityrunning && !paused && (world.tick_usage + SS.tick_usage > TICK_LIMIT_TO_RUN) && (SS.last_fire + (SS.wait*1.25) > world.time)) + if(!SS.dynamic_wait) + priority_queue += SS + continue SS.paused = 0 ran_subsystems = 1 timer = world.timeofday last_type_processed = SS.type - SS.last_fire = world.time + if (!paused) //only set this when we aren't resuming + SS.last_fire = world.time var/tick_usage = world.tick_usage SS.fire(paused) // Fire the subsystem @@ -198,7 +208,7 @@ var/global/datum/controller/master/Master = new() if(SS.paused) SS.next_fire = world.time //run it next tick if we can, but don't priority queue it, as we are a dynamic wait subsystem else //not paused, it ran all the way thru, normal wait time - SS.next_fire = world.time + SS.wait + SS.next_fire = SS.last_fire + SS.wait //we use last_fire so that its next fire is based off when it started this fire, not when it finished. else if(!paused) SS.next_fire += SS.wait diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 67bcb6566ee..7decbd16a22 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -6,6 +6,7 @@ var/priority = 0 //priority affects order of initialization. Higher priorities are initialized first, lower priorities later. Can be decimal and negative values. var/wait = 20 //time to wait (in deciseconds) between each call to fire(). Must be a positive integer. var/display = 100 //display affects order the subsystem is displayed in the MC tab + var/McTickCheck = 1 // Dynamic Wait // A system for scaling a subsystem's fire rate based on lag. @@ -44,6 +45,8 @@ can_fire = 0 /datum/subsystem/proc/pause() + if(!McTickCheck) + return 0 . = 1 if (!dynamic_wait) Master.priority_queue += src @@ -89,4 +92,5 @@ /datum/subsystem/on_varedit(edited_var) if (edited_var == "can_fire" && can_fire) next_fire = world.time + wait + ..() diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index bbc9ac5afde..08561726e6b 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -13,11 +13,13 @@ var/datum/subsystem/garbage_collector/SSgarbage can_fire = 1 // This needs to fire before round start. var/collection_timeout = 300// deciseconds to wait to let running procs finish before we just say fuck it and force del() the object - var/max_run_time = 1 // how long, in deciseconds, can we run before waiting for the next tick var/delslasttick = 0 // number of del()'s we've done this tick var/gcedlasttick = 0 // number of things that gc'ed last tick var/totaldels = 0 var/totalgcs = 0 + + var/highest_del_time = 0 + var/highest_del_tickusage = 0 var/list/queue = list() // list of refID's of things that should be garbage collected // refID's are associated with the time at which they time out and need to be manually del() @@ -53,15 +55,17 @@ var/datum/subsystem/garbage_collector/SSgarbage ..(msg) /datum/subsystem/garbage_collector/fire() - var/time_to_stop = world.timeofday + max_run_time - HandleToBeQueued(time_to_stop) - HandleQueue(time_to_stop) + HandleToBeQueued() + if (!paused) + HandleQueue() //If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond. //Don't attempt to optimize, not worth the effort. -/datum/subsystem/garbage_collector/proc/HandleToBeQueued(time_to_stop) +/datum/subsystem/garbage_collector/proc/HandleToBeQueued() var/list/tobequeued = src.tobequeued - while(tobequeued.len && world.timeofday < time_to_stop) + var/starttime = world.time + var/starttimeofday = world.timeofday + while(tobequeued.len && starttime == world.time && starttimeofday == world.timeofday) if (MC_TICK_CHECK) break var/ref = tobequeued[1] @@ -73,7 +77,9 @@ var/datum/subsystem/garbage_collector/SSgarbage gcedlasttick = 0 var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del() var/list/queue = src.queue - while(queue.len && world.timeofday < time_to_stop) + var/starttime = world.time + var/starttimeofday = world.timeofday + while(queue.len && starttime == world.time && starttimeofday == world.timeofday) if (MC_TICK_CHECK) break var/refID = queue[1] @@ -84,23 +90,37 @@ var/datum/subsystem/garbage_collector/SSgarbage var/GCd_at_time = queue[refID] if(GCd_at_time > time_to_kill) break // Everything else is newer, skip them - + queue.Cut(1, 2) var/datum/A if (!istext(refID)) - del(A) + del(refID) else A = locate(refID) if (A && A.gc_destroyed == GCd_at_time) // So if something else coincidently gets the same ref, it's not deleted by mistake // Something's still referring to the qdel'd object. Kill it. - testing("GC: -- \ref[A] | [A.type] was unable to be GC'd and was deleted --") - didntgc["[A.type]"]++ + var/type = A.type + testing("GC: -- \ref[A] | [type] was unable to be GC'd and was deleted --") + didntgc["[type]"]++ + var/time = world.timeofday + var/tick = world.tick_usage + var/ticktime = world.time del(A) + tick = (world.tick_usage-tick+((world.time-ticktime)/world.tick_lag*100)) + if (tick > highest_del_tickusage) + highest_del_tickusage = tick + time = world.timeofday - time + if (time > highest_del_time) + highest_del_time = time + if (time > 15) + log_game("Error: [type]([refID]) took longer then 1.5 seconds to delete (took [time/10] seconds to delete)") + message_admins("Error: [type]([refID]) took longer then 1.5 seconds to delete (took [time/10] seconds to delete).") + postpone(time/5) + break ++delslasttick ++totaldels else ++gcedlasttick ++totalgcs - queue.Cut(1, 2) /datum/subsystem/garbage_collector/proc/QueueForQueuing(datum/A) if (istype(A) && isnull(A.gc_destroyed)) diff --git a/code/controllers/subsystem/voting.dm b/code/controllers/subsystem/voting.dm index 0549457940e..6279e25fc84 100644 --- a/code/controllers/subsystem/voting.dm +++ b/code/controllers/subsystem/voting.dm @@ -145,9 +145,19 @@ var/datum/subsystem/vote/SSvote /datum/subsystem/vote/proc/initiate_vote(vote_type, initiator_key) if(!mode) - if(started_time != null) + if(started_time) var/next_allowed_time = (started_time + config.vote_delay) - if(next_allowed_time > world.time) + if(mode) + usr << "There is already a vote in progress! please wait for it to finish." + return 0 + + var/admin = FALSE + var/ckey = ckey(initiator_key) + if((admin_datums[ckey]) || (ckey in deadmins)) + admin = TRUE + + if(next_allowed_time > world.time && !admin) + usr << "A vote was initiated recently, you must wait roughly [(next_allowed_time-world.time)/10] seconds before a new vote can be started!" return 0 reset() diff --git a/code/datums/action.dm b/code/datums/action.dm index 59976843017..677ccc18254 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -270,18 +270,21 @@ check_flags = AB_CHECK_CONSCIOUS /datum/action/item_action/organ_action/IsAvailable() - var/obj/item/organ/internal/I = target + var/obj/item/organ/I = target if(!I.owner) return 0 return ..() -/datum/action/item_action/organ_action/toggle - /datum/action/item_action/organ_action/toggle/New(Target) ..() name = "Toggle [target.name]" button.name = name +/datum/action/item_action/organ_action/use/New(Target) + ..() + name = "Use [target.name]" + button.name = name + diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index a436272faae..1908392d673 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,6 +1,10 @@ // reference: /client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0) -datum/proc/on_varedit(modified_var) //called whenever a var is edited +/datum + var/var_edited = 0 //Warrenty void if seal is broken + +/datum/proc/on_varedit(modified_var) //called whenever a var is edited + var_edited = 1 return /client/proc/debug_variables(datum/D in world) @@ -218,6 +222,8 @@ datum/proc/on_varedit(modified_var) //called whenever a var is edited if(src.holder && src.holder.marked_datum && src.holder.marked_datum == D) body += "
Marked Object" + if(D.var_edited) + body += "
Var Edited" body += "" body += "" @@ -270,6 +276,7 @@ datum/proc/on_varedit(modified_var) //called whenever a var is edited if(ishuman(D)) body += "" body += "" + body += "" body += "" body += "" body += "" @@ -887,6 +894,25 @@ body H.set_species(newtype) H.dna.species.admin_set_species(H,old_species) + else if(href_list["removebodypart"]) + if(!check_rights(R_SPAWN)) + return + + var/mob/living/carbon/human/H = locate(href_list["removebodypart"]) + if(!istype(H)) + usr << "This can only be done to instances of type /mob/living/carbon/human" + return + + var/result = input(usr, "Please choose which body part to remove","Remove Body Part") as null|anything in list("head", "l_arm", "r_arm", "l_leg", "r_leg") + + if(!H) + usr << "Mob doesn't exist anymore" + return + + if(result) + var/obj/item/bodypart/BP = H.get_bodypart(result) + if(BP) + BP.drop_limb() else if(href_list["purrbation"]) if(!check_rights(R_SPAWN)) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index f5fcf511f2f..001614a66aa 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -140,6 +140,6 @@ /mob/living/carbon/human/CanContractDisease(datum/disease/D) - if(dna && VIRUSIMMUNE in dna.species.specflags) + if(dna && (VIRUSIMMUNE in dna.species.specflags)) return 0 return ..() \ No newline at end of file diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index f2bfbfb9bff..74f67b22f74 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -164,7 +164,7 @@ var/list/diseases = subtypesof(/datum/disease) if(ishuman(affected_mob)) var/mob/living/carbon/human/H = affected_mob for(var/obj/item/organ/O in required_organs) - if(!locate(O) in H.organs) + if(!locate(O) in H.bodyparts) if(!locate(O) in H.internal_organs) cure() return diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index ce8c644a67f..c6b4f0a87d0 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -40,12 +40,12 @@ Bonus if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M - var/list/parts = H.get_damaged_organs(1,1) //1,1 because it needs inputs. + var/list/parts = H.get_damaged_bodyparts(1,1) //1,1 because it needs inputs. if(!parts.len) return - for(var/obj/item/organ/limb/L in parts) + for(var/obj/item/bodypart/L in parts) L.heal_damage(get_damage, get_damage, 0) M.adjustToxLoss(get_damage*parts.len) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 59b55e1e88e..9622f9246d7 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -147,10 +147,12 @@ Bonus level = 5 /datum/symptom/heal/dna/Heal(mob/living/carbon/M, datum/disease/advance/A) - var/amt_healed = (sqrt(20+A.totalStageSpeed()*(3+rand())))-(sqrt(16+A.totalStealth()*rand())) + var/stage_speed = max( 20 + A.totalStageSpeed(), 0) + var/stealth_amount = max( 16 + A.totalStealth(), 0) + var/amt_healed = (sqrt(stage_speed*(3+rand())))-(sqrt(stealth_amount*rand())) M.adjustBrainLoss(-amt_healed) //Non-power mutations, excluding race, so the virus does not force monkey -> human transformations. var/list/unclean_mutations = (not_good_mutations|bad_mutations) - mutations_list[RACEMUT] M.dna.remove_mutation_group(unclean_mutations) M.radiation = max(M.radiation - 3, 0) - return 1 \ No newline at end of file + return 1 diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 10e4f5cb7b3..1dc5a575e36 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -31,7 +31,7 @@ Bonus switch(A.stage) if(2) if(M.reagents.get_reagent_amount("inacusiate")<10) - M.reagents.add_reagent("inacusiate"=10) + M.reagents.add_reagent("inacusiate", 10) M << "Your hearing feels clearer and crisp." if(3) if(M.reagents.get_reagent_amount("antihol") < 10 && M.reagents.get_reagent_amount("inacusiate") < 10 ) @@ -98,4 +98,4 @@ Bonus M.reagents.add_reagent_list(list("impedrezene",rand(5,15),"ethanol",rand(7,20),"mindbreaker",rand(5,15))) if(prob(25)) M.reagents.add_reagent("morphine",rand(5,7)) - return \ No newline at end of file + return diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 499a5aaa924..77ec5a583d4 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -12,7 +12,7 @@ disease_flags = CAN_CARRY|CAN_RESIST spread_flags = NON_CONTAGIOUS visibility_flags = HIDDEN_PANDEMIC - required_organs = list(/obj/item/organ/internal/appendix) + required_organs = list(/obj/item/organ/appendix) /datum/disease/appendicitis/stage_act() ..() @@ -21,7 +21,7 @@ if(prob(5)) affected_mob.emote("cough") if(2) - var/obj/item/organ/internal/appendix/A = affected_mob.getorgan(/obj/item/organ/internal/appendix) + var/obj/item/organ/appendix/A = affected_mob.getorgan(/obj/item/organ/appendix) if(A) A.inflamed = 1 A.update_icon() diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 01464fe65fe..8a0349854cb 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -9,7 +9,7 @@ viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication." - required_organs = list(/obj/item/organ/limb/head) + required_organs = list(/obj/item/bodypart/head) severity = DANGEROUS /datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index d627fe8edbe..11a8eebbe5d 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -18,7 +18,7 @@ ..() if(!affected_mob.dna) cure() - if(affected_mob.dna.species.specflags & NOTRANSSTING) //Only species that can be spread by transformation sting can be spread by the retrovirus + if(NOTRANSSTING in affected_mob.dna.species.specflags) //Only species that can be spread by transformation sting can be spread by the retrovirus cure() if(!strain_data["dna"]) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index b814687318a..0eedaa98f70 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -48,7 +48,7 @@ affected_mob.canmove = 0 affected_mob.icon = null affected_mob.overlays.Cut() - affected_mob.invisibility = 101 + affected_mob.invisibility = INVISIBILITY_ABSTRACT for(var/obj/item/W in affected_mob) if(istype(W, /obj/item/weapon/implant)) qdel(W) diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 6086d6d0b22..b2d4fb9065b 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -8,7 +8,7 @@ viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue." - required_organs = list(/obj/item/organ/limb/head) + required_organs = list(/obj/item/bodypart/head) severity = DANGEROUS /datum/disease/tuberculosis/stage_act() //it begins diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index 25c73a7f0ed..bc9d70fc63c 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -11,7 +11,7 @@ permeability_mod = 0.75 desc = "Some speculate, that this virus is the cause of Wizard Federation existance. Subjects affected show the signs of mental retardation, yelling obscure sentences or total gibberish. On late stages subjects sometime express the feelings of inner power, and, cite, 'the ability to control the forces of cosmos themselves!' A gulp of strong, manly spirits usually reverts them to normal, humanlike, condition." severity = HARMFUL - required_organs = list(/obj/item/organ/limb/head) + required_organs = list(/obj/item/bodypart/head) /* BIRUZ BENNAR diff --git a/code/datums/martial.dm b/code/datums/martial.dm index d1b498f5070..46e18dde7d7 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -41,7 +41,7 @@ add_logs(A, D, "attempted to [atk_verb]") return 0 - var/obj/item/organ/limb/affecting = D.get_organ(ran_zone(A.zone_selected)) + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) var/armor_block = D.run_armor_check(affecting, "melee") playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1) @@ -106,7 +106,7 @@ return 0 - var/obj/item/organ/limb/affecting = D.get_organ(ran_zone(A.zone_selected)) + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) var/armor_block = D.run_armor_check(affecting, "melee") playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1) @@ -128,64 +128,6 @@ D.forcesay(hit_appends) return 1 -/datum/martial_art/wrestling - name = "Wrestling" - help_verb = /mob/living/carbon/human/proc/wrestling_help - -// combo refence since wrestling uses a different format to sleeping carp and plasma fist. -// Clinch "G" -// Suplex "GD" -// Advanced grab "G" - -/datum/martial_art/wrestling/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - D.grabbedby(A,1) - var/obj/item/weapon/grab/G = A.get_active_hand() - if(G && prob(50)) - G.state = GRAB_AGGRESSIVE - D.visible_message("[A] has [D] in a clinch!", \ - "[A] has [D] in a clinch!") - else - D.visible_message("[A] fails to get [D] in a clinch!", \ - "[A] fails to get [D] in a clinch!") - return 1 - - -/datum/martial_art/wrestling/proc/Suplex(mob/living/carbon/human/A, mob/living/carbon/human/D) - - D.visible_message("[A] suplexes [D]!", \ - "[A] suplexes [D]!") - D.forceMove(A.loc) - var/armor_block = D.run_armor_check(null, "melee") - D.apply_damage(30, BRUTE, null, armor_block) - D.apply_effect(6, WEAKEN, armor_block) - add_logs(A, D, "suplexed") - - A.SpinAnimation(10,1) - - D.SpinAnimation(10,1) - spawn(3) - armor_block = A.run_armor_check(null, "melee") - A.apply_effect(4, WEAKEN, armor_block) - return - -/datum/martial_art/wrestling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - if(istype(A.get_inactive_hand(),/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = A.get_inactive_hand() - if(G.affecting == D) - Suplex(A,D) - return 1 - harm_act(A,D) - return 1 - -/datum/martial_art/wrestling/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - D.grabbedby(A,1) - D.visible_message("[A] holds [D] down!", \ - "[A] holds [D] down!") - var/obj/item/organ/limb/affecting = D.get_organ(ran_zone(A.zone_selected)) - var/armor_block = D.run_armor_check(affecting, "melee") - D.apply_damage(10, STAMINA, affecting, armor_block) - return 1 - /mob/living/carbon/human/proc/wrestling_help() set name = "Recall Teachings" set desc = "Remember how to wrestle." @@ -452,7 +394,6 @@ if(slot == slot_belt) var/mob/living/carbon/human/H = user style.teach(H,1) - user << "You have an urge to flex your muscles and get into a fight. You have the knowledge of a thousand wrestlers before you. You can remember more by using the Recall teaching verb in the wrestling tab." return /obj/item/weapon/storage/belt/champion/wrestling/dropped(mob/user) @@ -461,7 +402,6 @@ var/mob/living/carbon/human/H = user if(H.get_item_by_slot(slot_belt) == src) style.remove(H) - user << "You no longer have an urge to flex your muscles." return /obj/item/weapon/plasma_fist_scroll diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm new file mode 100644 index 00000000000..c80217e7754 --- /dev/null +++ b/code/datums/martial/wrestling.dm @@ -0,0 +1,421 @@ +/datum/martial_art/wrestling + name = "Wrestling" + var/datum/action/slam/slam = new/datum/action/slam() + var/datum/action/throw_wrassle/throw_wrassle = new/datum/action/throw_wrassle() + var/datum/action/kick/kick = new/datum/action/kick() + var/datum/action/strike/strike = new/datum/action/strike() + var/datum/action/drop/drop = new/datum/action/drop() + +/datum/martial_art/wrestling/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + switch(streak) + if("drop") + streak = "" + drop(A,D) + return 1 + if("strike") + streak = "" + strike(A,D) + return 1 + if("kick") + streak = "" + kick(A,D) + return 1 + if("throw") + streak = "" + throw_wrassle(A,D) + return 1 + if("slam") + streak = "" + slam(A,D) + return 1 + return 0 + +/datum/action/slam + name = "Slam (Cinch) - Slam a grappled opponent into the floor." + button_icon_state = "wrassle_slam" + +/datum/action/slam/Trigger() + if(owner.incapacitated()) + owner << "You can't WRESTLE while you're OUT FOR THE COUNT." + return + owner.visible_message("[owner] prepares to BODY SLAM!", "Your next attack will be a BODY SLAM.") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "slam" + +/datum/action/throw_wrassle + name = "Throw (Cinch) - Spin a cinched opponent around and throw them." + button_icon_state = "wrassle_throw" + +/datum/action/throw_wrassle/Trigger() + if(owner.incapacitated()) + owner << "You can't WRESTLE while you're OUT FOR THE COUNT." + return + owner.visible_message("[owner] prepares to THROW!", "Your next attack will be a THROW.") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "throw" + +/datum/action/kick + name = "Kick - A powerful kick, sends people flying away from you. Also useful for escaping from bad situations." + button_icon_state = "wrassle_kick" + +/datum/action/kick/Trigger() + if(owner.incapacitated()) + owner << "You can't WRESTLE while you're OUT FOR THE COUNT." + return + owner.visible_message("[owner] prepares to KICK!", "Your next attack will be a KICK.") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "kick" + +/datum/action/strike + name = "Strike - Hit a neaby opponent with a quick attack." + button_icon_state = "wrassle_strike" + +/datum/action/strike/Trigger() + if(owner.incapacitated()) + owner << "You can't WRESTLE while you're OUT FOR THE COUNT." + return + owner.visible_message("[owner] prepares to STRIKE!", "Your next attack will be a STRIKE.") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "strike" + +/datum/action/drop + name = "Drop - Smash down onto an opponent." + button_icon_state = "wrassle_drop" + +/datum/action/drop/Trigger() + if(owner.incapacitated()) + owner << "You can't WRESTLE while you're OUT FOR THE COUNT." + return + owner.visible_message("[owner] prepares to LEG DROP!", "Your next attack will be a LEG DROP.") + var/mob/living/carbon/human/H = owner + H.martial_art.streak = "drop" + +/datum/martial_art/wrestling/teach(var/mob/living/carbon/human/H,var/make_temporary=0) + ..() + H << "SNAP INTO A THIN TIM!" + H << "Place your cursor over a move at the top of the screen to see what it does." + drop.Grant(H) + kick.Grant(H) + slam.Grant(H) + throw_wrassle.Grant(H) + strike.Grant(H) + +/datum/martial_art/wrestling/remove(var/mob/living/carbon/human/H) + ..() + H << "You no longer feel that the tower of power is too sweet to be sour..." + drop.Remove(H) + kick.Remove(H) + slam.Remove(H) + throw_wrassle.Remove(H) + strike.Remove(H) + +/datum/martial_art/wrestling/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + ..() + +/datum/martial_art/wrestling/proc/throw_wrassle(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D) + return + if(!A.pulling || A.pulling != D) + A << "You need to have [D] in a cinch!" + return + D.forceMove(A.loc) + D.dir = get_dir(D, A) + + D.Stun(4) + A.visible_message("[A] starts spinning around with [D]!") + A.emote("scream") + + for (var/i = 0, i < 20, i++) + var/delay = 5 + switch (i) + if (17 to INFINITY) + delay = 0.25 + if (14 to 16) + delay = 0.5 + if (9 to 13) + delay = 1 + if (5 to 8) + delay = 2 + if (0 to 4) + delay = 3 + + if (A && D) + + if (get_dist(A, D) > 1) + A << "[D] is too far away!" + return 0 + + if (!isturf(A.loc) || !isturf(D.loc)) + A << "You can't throw [D] from here!" + return 0 + + A.dir = turn(A.dir, 90) + var/turf/T = get_step(A, A.dir) + var/turf/S = D.loc + if ((S && isturf(S) && S.Exit(D)) && (T && isturf(T) && T.Enter(A))) + D.forceMove(T) + D.dir = get_dir(D, A) + else + return 0 + + sleep(delay) + + if (A && D) + // These are necessary because of the sleep call. + + if (get_dist(A, D) > 1) + A << "[D] is too far away!" + return 0 + + if (!isturf(A.loc) || !isturf(D.loc)) + A << "You can't throw [D] from here!" + return 0 + + D.forceMove(A.loc) // Maybe this will help with the wallthrowing bug. + + A.visible_message("[A] throws [D]!") + playsound(A.loc, "swing_hit", 50, 1) + var/turf/T = get_edge_target_turf(A, A.dir) + if (T && isturf(T)) + if (!D.stat) + D.emote("scream") + D.throw_at(T, 10, 4) + D.Weaken(2) + + return 0 + +/datum/martial_art/wrestling/proc/slam(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D) + return + if(!A.pulling || A.pulling != D) + A << "You need to have [D] in a cinch!" + return + D.forceMove(A.loc) + A.dir = get_dir(A, D) + D.dir = get_dir(D, A) + + A.visible_message("[A] lifts [D] up!") + + spawn (0) + if (D) + animate(D, transform = matrix(180, MATRIX_ROTATE), time = 1, loop = 0) + sleep (15) + if (D) + animate(transform = null, time = 1, loop = 0) + + for (var/i = 0, i < 3, i++) + if (A && D) + A.pixel_y += 3 + D.pixel_y += 3 + A.dir = turn(A.dir, 90) + D.dir = turn(D.dir, 90) + + switch (A.dir) + if (NORTH) + D.pixel_x = A.pixel_x + if (SOUTH) + D.pixel_x = A.pixel_x + if (EAST) + D.pixel_x = A.pixel_x - 8 + if (WEST) + D.pixel_x = A.pixel_x + 8 + + if (get_dist(A, D) > 1) + A << "[D] is too far away!" + A.pixel_x = 0 + A.pixel_y = 0 + D.pixel_x = 0 + D.pixel_y = 0 + return 0 + + if (!isturf(A.loc) || !isturf(D.loc)) + A << "You can't slam [D] here!" + A.pixel_x = 0 + A.pixel_y = 0 + D.pixel_x = 0 + D.pixel_y = 0 + return 0 + else + if (A) + A.pixel_x = 0 + A.pixel_y = 0 + if (D) + D.pixel_x = 0 + D.pixel_y = 0 + return 0 + + sleep (1) + + if (A && D) + A.pixel_x = 0 + A.pixel_y = 0 + D.pixel_x = 0 + D.pixel_y = 0 + + if (get_dist(A, D) > 1) + A << "[D] is too far away!" + return 0 + + if (!isturf(A.loc) || !isturf(D.loc)) + A << "You can't slam [D] here!" + return 0 + + D.forceMove(A.loc) + + var/fluff = "body-slam" + switch(pick(2,3)) + if (2) + fluff = "turbo [fluff]" + if (3) + fluff = "atomic [fluff]" + + A.visible_message("[A] [fluff] [D]!") + playsound(A.loc, "swing_hit", 50, 1) + if (!D.stat) + D.emote("scream") + D.weakened += 2 + D.stunned += 2 + + switch(rand(1,3)) + if (2) + D.adjustBruteLoss(rand(20,30)) + if (3) + D.ex_act(3) + else + D.adjustBruteLoss(rand(10,20)) + else + D.ex_act(3) + + else + if (A) + A.pixel_x = 0 + A.pixel_y = 0 + if (D) + D.pixel_x = 0 + D.pixel_y = 0 + + + return 0 + +/datum/martial_art/wrestling/proc/strike(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D) + return + var/turf/T = get_turf(A) + if (T && isturf(T) && D && isturf(D.loc)) + for (var/i = 0, i < 4, i++) + A.dir = turn(A.dir, 90) + + A.forceMove(D.loc) + spawn (4) + if (A && (T && isturf(T) && get_dist(A, T) <= 1)) + A.forceMove(T) + + A.visible_message("[A] headbutts [D]!") + D.adjustBruteLoss(rand(10,20)) + playsound(A.loc, "swing_hit", 50, 1) + D.Paralyse(1) + +/datum/martial_art/wrestling/proc/kick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D) + return + A.emote("scream") + A.emote("flip") + A.dir = turn(A.dir, 90) + + A.visible_message("[A] roundhouse-kicks [D]!") + playsound(A.loc, "swing_hit", 50, 1) + D.adjustBruteLoss(rand(10,20)) + + var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) + if (T && isturf(T)) + D.Weaken(1) + D.throw_at(T, 3, 2) + +/datum/martial_art/wrestling/proc/drop(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D) + return + var/obj/surface = null + var/turf/ST = null + var/falling = 0 + + for (var/obj/O in oview(1, A)) + if (O.density == 1) + if (O == A) continue + if (O == D) continue + if (O.opacity) continue + else + surface = O + ST = get_turf(O) + break + + if (surface && (ST && isturf(ST))) + A.forceMove(ST) + A.visible_message("[A] climbs onto [surface]!") + A.pixel_y = 10 + falling = 1 + sleep(10) + + if (A && D) + // These are necessary because of the sleep call. + + if ((falling == 0 && get_dist(A, D) > 1) || (falling == 1 && get_dist(A, D) > 2)) // We climbed onto stuff. + A.pixel_y = 0 + if (falling == 1) + A.visible_message("...and dives head-first into the ground, ouch!") + A.adjustBruteLoss(rand(10,20)) + A.Weaken(3) + A << "[D] is too far away!" + return 0 + + if (!isturf(A.loc) || !isturf(D.loc)) + A.pixel_y = 0 + A << "You can't drop onto [D] from here!" + return 0 + + if(A) + animate(A, transform = matrix(90, MATRIX_ROTATE), time = 1, loop = 0) + sleep(10) + if(A) + animate(A, transform = null, time = 1, loop = 0) + + A.forceMove(D.loc) + + A.visible_message("[A] leg-drops [D]!") + playsound(A.loc, "swing_hit", 50, 1) + A.emote("scream") + + if (falling == 1) + if (prob(33) || D.stat) + D.ex_act(3) + else + D.adjustBruteLoss(rand(20,30)) + else + D.adjustBruteLoss(rand(20,30)) + + D.Weaken(1) + D.Stun(2) + + A.pixel_y = 0 + + else + if (A) + A.pixel_y = 0 + return + +/datum/martial_art/wrestling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + ..() + +/datum/martial_art/wrestling/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(check_streak(A,D)) + return 1 + if(A.pulling == D) + return 1 + A.start_pulling(D) + D.visible_message("[A] gets [D] in a cinch!", \ + "[A] gets [D] in a cinch!") + D.Stun(rand(3,5)) + return 1 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 933d8ff2db8..1587bc4b8d2 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -146,11 +146,7 @@ /datum/mind/proc/remove_cultist() if(src in ticker.mode.cult) - ticker.mode.cult -= src - ticker.mode.update_cult_icons_removed(src) - var/datum/game_mode/cult/cult = ticker.mode - if(istype(cult)) - cult.memorize_cult_objectives(src) + ticker.mode.remove_cultist(src, 0, 0) special_role = null remove_objectives() remove_antag_equip() @@ -488,20 +484,20 @@ if(ticker.mode.config_tag == "handofgod") text = uppertext(text) text = "[text]: " - if(src in ticker.mode.red_deity_prophets) - text += "RED PROPHET|red follower|employee|blue follower|blue prophet|red god|blue god" + if (src in ticker.mode.red_deities) + text += "RED GOD|red prophet|red follower|employee|blue god|blue prophet|blue follower" + else if(src in ticker.mode.red_deity_prophets) + text += "red god|RED PROPHET|red follower|employee|blue god|blue prophet|blue follower" else if (src in ticker.mode.red_deity_followers) - text += "red prophet|RED FOLLOWER|employee|blue follower|blue prophet|red god|blue god" - else if (src in ticker.mode.blue_deity_followers) - text += "red prophet|red follower|employee|BLUE FOLLOWER|blue prophet|red god|blue god" - else if (src in ticker.mode.blue_deity_prophets) - text += "red prophet|red follower|employee|blue follower|BLUE PROPHET|red god|blue god" - else if (src in ticker.mode.red_deities) - text += "red prophet|red follower|employee|blue follower|blue prophet|RED GOD|blue god" + text += "red god|red prophet|RED FOLLOWER|employee|blue god|blue prophet|blue follower" else if (src in ticker.mode.blue_deities) - text += "red prophet|red follower|employee|blue follower|blue prophet|red god|BLUE GOD" + text += "red god|red prophet|red follower|employee|BLUE GOD|blue prophet|blue follower" + else if (src in ticker.mode.blue_deity_prophets) + text += "red god|red prophet|red follower|employee|blue god|BLUE PROPHET|blue follower" + else if (src in ticker.mode.blue_deity_followers) + text += "red god|red prophet|red follower|employee|blue god|blue prophet|BLUE FOLLOWER" else - text += "red prophet|red follower|EMPLOYEE|blue follower|blue prophet|red god|blue god" + text += "red god|red prophet|red follower|EMPLOYEE|blue god|blue prophet|blue follower" if(current && current.client && (ROLE_HOG_GOD in current.client.prefs.be_special)) text += "|HOG God Enabled in Prefs" @@ -983,12 +979,11 @@ switch(href_list["cult"]) if("clear") remove_cultist() - current << "You have been brainwashed! You are no longer a cultist!" message_admins("[key_name_admin(usr)] has de-cult'ed [current].") log_admin("[key_name(usr)] has de-cult'ed [current].") if("cultist") if(!(src in ticker.mode.cult)) - ticker.mode.add_cultist(src) + ticker.mode.add_cultist(src, 0) message_admins("[key_name_admin(usr)] has cult'ed [current].") log_admin("[key_name(usr)] has cult'ed [current].") if("tome") diff --git a/code/datums/mutations.dm b/code/datums/mutations.dm index 4a74b38236d..3111a81c8d4 100644 --- a/code/datums/mutations.dm +++ b/code/datums/mutations.dm @@ -19,6 +19,7 @@ var/layer_used = MUTATIONS_LAYER //which mutation layer to use var/list/species_allowed = list() //to restrict mutation to only certain species var/health_req //minimum health required to acquire the mutation + var/limb_req //required limbs to acquire this mutation var/time_coeff = 1 //coefficient for timed mutations /datum/mutation/human/proc/force_give(mob/living/carbon/human/owner) @@ -61,6 +62,8 @@ return 1 if(health_req && owner.health < health_req) return 1 + if(limb_req && !owner.get_bodypart(limb_req)) + return 1 owner.dna.mutations.Add(src) if(text_gain_indication) owner << text_gain_indication @@ -120,24 +123,16 @@ species_allowed = list("human") //no skeleton/lizard hulk health_req = 25 -/datum/mutation/human/hulk/New() - ..() - visual_indicators |= image("icon"='icons/effects/genetics.dmi', "icon_state"="hulk_f_s", "layer"=-MUTATIONS_LAYER) - visual_indicators |= image("icon"='icons/effects/genetics.dmi', "icon_state"="hulk_m_s", "layer"=-MUTATIONS_LAYER) - /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) if(..()) return var/status = CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH owner.status_flags &= ~status + owner.update_body_parts() /datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target) return target.attack_hulk(owner) -/datum/mutation/human/hulk/get_visual_indicator(mob/living/carbon/human/owner) - var/g = (owner.gender == FEMALE) ? 1 : 2 - return visual_indicators[g] - /datum/mutation/human/hulk/on_life(mob/living/carbon/human/owner) if(owner.health < 0) on_losing(owner) @@ -147,6 +142,7 @@ if(..()) return owner.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE | CANPUSH + owner.update_body_parts() /datum/mutation/human/hulk/say_mod(message) if(message) @@ -160,6 +156,7 @@ get_chance = 20 lowest_value = 256 * 12 text_gain_indication = "You feel smarter!" + limb_req = "head" /datum/mutation/human/telekinesis/New() ..() @@ -613,6 +610,7 @@ dna_block = NON_SCANNABLE text_gain_indication = "You feel pressure building up behind your eyes." layer_used = FRONT_MUTATIONS_LAYER + limb_req = "head" /datum/mutation/human/laser_eyes/New() ..() diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 4b1786c596a..37e7a2f52b3 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -65,7 +65,7 @@ var/global/max_secret_rooms = 6 walltypes = list(/turf/closed/wall/r_wall=2,/turf/closed/wall=2,/turf/closed/mineral/random/high_chance=1) floortypes = list(/turf/open/floor/plasteel,/turf/open/floor/engine) treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter=2, /mob/living/simple_animal/pet/cat/space=1) - fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/internal/appendix=2,/obj/structure/closet/crate/freezer=2, + fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/appendix=2,/obj/structure/closet/crate/freezer=2, /obj/structure/table/optable=1,/obj/item/weapon/scalpel=1,/obj/item/weapon/storage/firstaid/regular=3, /obj/item/weapon/tank/internals/anesthetic=1, /obj/item/weapon/surgical_drapes=2, /obj/item/device/mass_spectrometer/adv=1,/obj/item/clothing/glasses/hud/health=1) @@ -76,7 +76,7 @@ var/global/max_secret_rooms = 6 treasureitems = list(/obj/item/device/soulstone/anybody=1, /obj/item/clothing/suit/space/cult=1, /obj/item/weapon/bedsheet/cult=2, /obj/item/clothing/suit/cultrobes=2, /mob/living/simple_animal/hostile/creature=3) fluffitems = list(/obj/effect/gateway=1,/obj/effect/gibspawner=1,/obj/structure/cult/talisman=1,/obj/item/toy/crayon/red=2, - /obj/item/organ/internal/heart=2, /obj/effect/decal/cleanable/blood=4,/obj/structure/table/wood=2,/obj/item/weapon/ectoplasm=3, + /obj/item/organ/heart=2, /obj/effect/decal/cleanable/blood=4,/obj/structure/table/wood=2,/obj/item/weapon/ectoplasm=3, /obj/item/clothing/head/helmet/space/cult=1, /obj/item/clothing/shoes/cult=1) if("wizden") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 6dd095996f9..038b52b7a91 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -198,7 +198,7 @@ /atom/proc/ex_act(severity, target) contents_explosion(severity, target) -/atom/proc/blob_act() +/atom/proc/blob_act(obj/effect/blob/B) return /atom/proc/fire_act() @@ -402,3 +402,4 @@ var/list/blood_splatter_icons = list() var/datum/reagent/consumable/nutri_check = R if(nutri_check.nutriment_factor >0) M.reagents.remove_reagent(R.id,R.volume) + diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 0c3f60be2b4..63c03c9c2dd 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -79,7 +79,7 @@ for(var/atom/movable/AM in contents) qdel(AM) loc = null - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT if (pulledby) if (pulledby.pulling == src) pulledby.pulling = null diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 14a79e8a9ae..4185dc51a4b 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -16,7 +16,7 @@ /datum/atom_hud/data /datum/atom_hud/data/human/medical - hud_icons = list(HEALTH_HUD, STATUS_HUD) + hud_icons = list(STATUS_HUD, HEALTH_HUD) /datum/atom_hud/data/human/medical/basic @@ -67,24 +67,49 @@ return 0 //helper for getting the appropriate health status -/proc/RoundHealth(health) - switch(health) +/proc/RoundHealth(mob/living/M) + if(M.stat == DEAD) + return "health-100" //what's our health? it doesn't matter, we're dead + var/resulthealth = (M.health / M.maxHealth) * 100 + switch(resulthealth) if(100 to INFINITY) return "health100" - if(70 to 100) - return "health80" - if(50 to 70) - return "health60" - if(30 to 50) - return "health40" - if(18 to 30) + if(90.625 to 100) + return "health93.75" + if(84.375 to 90.625) + return "health87.5" + if(78.125 to 84.375) + return "health81.25" + if(71.875 to 78.125) + return "health75" + if(65.625 to 71.875) + return "health68.75" + if(59.375 to 65.625) + return "health62.5" + if(53.125 to 59.375) + return "health56.25" + if(46.875 to 53.125) + return "health50" + if(40.625 to 46.875) + return "health43.75" + if(34.375 to 40.625) + return "health37.5" + if(28.125 to 34.375) + return "health31.25" + if(21.875 to 28.125) return "health25" - if(5 to 18) - return "health10" - if(1 to 5) - return "health1" - if(-99 to 0) + if(15.625 to 21.875) + return "health18.75" + if(9.375 to 15.625) + return "health12.5" + if(1 to 9.375) + return "health6.25" + if(-50 to 1) return "health0" + if(-85 to -50) + return "health-50" + if(-99 to -85) + return "health-85" else return "health-100" return "0" @@ -99,20 +124,28 @@ var/turf/T = get_turf(src) if (T) crewmonitor.queueUpdate(T.z) -//called when a carbon changes health -/mob/living/carbon/proc/med_hud_set_health() +//called when a living mob changes health +/mob/living/proc/med_hud_set_health() var/image/holder = hud_list[HEALTH_HUD] - if(stat == DEAD) - holder.icon_state = "hudhealth-100" - else - holder.icon_state = "hud[RoundHealth(health)]" + holder.icon_state = "hud[RoundHealth(src)]" + +//for carbon suit sensors +/mob/living/carbon/med_hud_set_health() + ..() var/turf/T = get_turf(src) - if (T) + if(T) crewmonitor.queueUpdate(T.z) //called when a carbon changes stat, virus or XENO_HOST -/mob/living/carbon/proc/med_hud_set_status() +/mob/living/proc/med_hud_set_status() + var/image/holder = hud_list[STATUS_HUD] + if(stat == DEAD) + holder.icon_state = "huddead" + else + holder.icon_state = "hudhealthy" + +/mob/living/carbon/med_hud_set_status() var/image/holder = hud_list[STATUS_HUD] if(stat == DEAD) holder.icon_state = "huddead" diff --git a/code/game/dna.dm b/code/game/dna.dm index b1e51e9b5e5..5ea7e2f103e 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -183,7 +183,7 @@ if(icon_update) update_body() update_hair() - update_mutcolor() + update_body_parts() update_mutations_overlay()// no lizard with human hulk overlay please. @@ -220,7 +220,7 @@ if(mrace || newfeatures || ui) update_body() update_hair() - update_mutcolor() + update_body_parts() update_mutations_overlay() @@ -249,7 +249,7 @@ mob/living/carbon/human/updateappearance(icon_update=1, mutcolor_update=0, mutat update_body() update_hair() if(mutcolor_update) - update_mutcolor() + update_body_parts() if(mutations_overlay_update) update_mutations_overlay() diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 1f5a893bbde..037d0d246ea 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -29,7 +29,7 @@ overmind.blob_mobs -= src return ..() -/mob/living/simple_animal/hostile/blob/blob_act() +/mob/living/simple_animal/hostile/blob/blob_act(obj/effect/blob/B) if(stat != DEAD && health < maxHealth) for(var/i in 1 to 2) var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(src)) //hello yes you are being healed @@ -89,6 +89,8 @@ attacktext = "hits" attack_sound = 'sound/weapons/genhit1.ogg' flying = 1 + del_on_death = 1 + deathmessage = "The blob spore explodes into a cloud of gas!" var/death_cloud_size = 1 //size of cloud produced from a dying spore var/list/human_overlays = list() var/is_zombie = 0 @@ -134,7 +136,6 @@ visible_message("The corpse of [H.name] suddenly rises!") /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) - ..(1) // On death, create a small smoke of harmful gas (s-Acid) var/datum/effect_system/smoke_spread/chem/S = new var/turf/location = get_turf(src) @@ -151,9 +152,10 @@ S.attach(location) S.set_up(reagents, death_cloud_size, location, silent=1) S.start() + if(factory) + factory.spore_delay = world.time + factory.spore_cooldown //put the factory on cooldown - ghostize() - qdel(src) + ..() /mob/living/simple_animal/hostile/blob/blobspore/Destroy() if(factory) diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index 8ee6baa2c73..ccaf8e12a1a 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -11,6 +11,7 @@ var/mob/living/simple_animal/hostile/blob/blobbernaut/naut = null var/max_spores = 3 var/spore_delay = 0 + var/spore_cooldown = 80 //8 seconds between spores and after spore death /obj/effect/blob/factory/scannerreport() @@ -38,7 +39,7 @@ if(spore_delay > world.time) return flick("blob_factory_glow", src) - spore_delay = world.time + 100 // 10 seconds + spore_delay = world.time + spore_cooldown var/mob/living/simple_animal/hostile/blob/blobspore/BS = new/mob/living/simple_animal/hostile/blob/blobspore(src.loc, src) if(overmind) //if we don't have an overmind, we don't need to do anything but make a spore BS.overmind = overmind diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 0c5bdde1651..d2460d93376 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -140,7 +140,7 @@ /mob/camera/blob/emote(act,m_type=1,message = null) return -/mob/camera/blob/blob_act() +/mob/camera/blob/blob_act(obj/effect/blob/B) return /mob/camera/blob/Stat() diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 16638eef0b3..72112430613 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -117,9 +117,9 @@ /obj/effect/blob/proc/ConsumeTile() for(var/atom/A in loc) - A.blob_act() + A.blob_act(src) if(istype(loc, /turf/closed/wall)) - loc.blob_act() //don't ask how a wall got on top of the core, just eat it + loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it /obj/effect/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom var/obj/effect/overlay/temp/blob/O = PoolOrNew(/obj/effect/overlay/temp/blob, src.loc) @@ -155,11 +155,11 @@ ConsumeTile() //hit the tile we're in, making sure there are no border objects blocking us if(!T.CanPass(src, T, 5)) //is the target turf impassable make_blob = FALSE - T.blob_act() //hit the turf if it is + T.blob_act(src) //hit the turf if it is for(var/atom/A in T) if(!A.CanPass(src, T, 5)) //is anything in the turf impassable make_blob = FALSE - A.blob_act() //also hit everything in the turf + A.blob_act(src) //also hit everything in the turf if(make_blob) //well, can we? var/obj/effect/blob/B = new /obj/effect/blob/normal(src.loc) @@ -177,7 +177,7 @@ return B else blob_attack_animation(T, controller) - T.blob_act() //if we can't move in hit the turf again + T.blob_act(src) //if we can't move in hit the turf again qdel(B) //we should never get to this point, since we checked before moving in. destroy the blob so we don't have two blobs on one tile return null else @@ -225,16 +225,24 @@ user.changeNext_move(CLICK_CD_MELEE) user << "The analyzer beeps once, then reports:
" user << 'sound/machines/ping.ogg' - if(overmind) - user << "Material: [overmind.blob_reagent_datum.name]." - user << "Material Effects: [overmind.blob_reagent_datum.analyzerdescdamage]" - user << "Material Properties: [overmind.blob_reagent_datum.analyzerdesceffect]
" - user << "Blob Type: [uppertext(initial(name))]" - user << "Health: [health]/[maxhealth]" - user << "Effects: [scannerreport()]" + chemeffectreport(user) + typereport(user) else return ..() +/obj/effect/blob/proc/chemeffectreport(mob/user) + if(overmind) + user << "Material: [overmind.blob_reagent_datum.name]." + user << "Material Effects: [overmind.blob_reagent_datum.analyzerdescdamage]" + user << "Material Properties: [overmind.blob_reagent_datum.analyzerdesceffect]
" + else + user << "No Material Detected!
" + +/obj/effect/blob/proc/typereport(mob/user) + user << "Blob Type: [uppertext(initial(name))]" + user << "Health: [health]/[maxhealth]" + user << "Effects: [scannerreport()]" + /obj/effect/blob/attacked_by(obj/item/I, mob/living/user) user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) @@ -294,8 +302,13 @@ /obj/effect/blob/examine(mob/user) ..() - user << "It seems to be made of [get_chem_name()]." - return + var/datum/atom_hud/hud_to_check = huds[DATA_HUD_MEDICAL_ADVANCED] + if(user.research_scanner || (user in hud_to_check.hudusers)) + user << "Your HUD displays an extensive report...
" + chemeffectreport(user) + typereport(user) + else + user << "It seems to be made of [get_chem_name()]." /obj/effect/blob/proc/scannerreport() return "A generic blob. Looks like someone forgot to override this proc, adminhelp this." diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index af9cd88b91b..7aa3a7c0d5c 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -398,7 +398,7 @@ var/list/sting_paths p.on_refund(src) if(hud_used) hud_used.lingstingdisplay.icon_state = null - hud_used.lingstingdisplay.invisibility = 101 + hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT /datum/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index facf2bb191a..e69d48b60ce 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -12,26 +12,26 @@ /obj/effect/proc_holder/changeling/augmented_eyesight/sting_action(mob/living/carbon/human/user) if(!istype(user)) return - if(user.getorgan(/obj/item/organ/internal/cyberimp/eyes/thermals/ling)) + if(user.getorgan(/obj/item/organ/cyberimp/eyes/thermals/ling)) user << "Our eyes are protected from flashes." - var/obj/item/organ/internal/cyberimp/eyes/O = new /obj/item/organ/internal/cyberimp/eyes/shield/ling() + var/obj/item/organ/cyberimp/eyes/O = new /obj/item/organ/cyberimp/eyes/shield/ling() O.Insert(user) else - var/obj/item/organ/internal/cyberimp/eyes/O = new /obj/item/organ/internal/cyberimp/eyes/thermals/ling() + var/obj/item/organ/cyberimp/eyes/O = new /obj/item/organ/cyberimp/eyes/thermals/ling() O.Insert(user) return 1 /obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user) - var/obj/item/organ/internal/cyberimp/eyes/O = user.getorganslot("eye_ling") + var/obj/item/organ/cyberimp/eyes/O = user.getorganslot("eye_ling") if(O) O.Remove(user) qdel(O) -/obj/item/organ/internal/cyberimp/eyes/shield/ling +/obj/item/organ/cyberimp/eyes/shield/ling name = "protective membranes" desc = "These variable transparency organic membranes will protect you from welders and flashes and heal your eye damage." icon_state = "ling_eyeshield" @@ -41,18 +41,18 @@ slot = "eye_ling" status = ORGAN_ORGANIC -/obj/item/organ/internal/cyberimp/eyes/shield/ling/on_life() +/obj/item/organ/cyberimp/eyes/shield/ling/on_life() ..() if(owner.eye_blind>1 || (owner.eye_blind && owner.stat !=UNCONSCIOUS) || owner.eye_damage || owner.eye_blurry || (owner.disabilities & NEARSIGHT)) owner.reagents.add_reagent("oculine", 1) -/obj/item/organ/internal/cyberimp/eyes/shield/ling/prepare_eat() +/obj/item/organ/cyberimp/eyes/shield/ling/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("oculine", 15) return S -/obj/item/organ/internal/cyberimp/eyes/thermals/ling +/obj/item/organ/cyberimp/eyes/thermals/ling name = "heat receptors" desc = "These heat receptors dramatically increases eyes light sensing ability." icon_state = "ling_thermal" @@ -63,16 +63,16 @@ status = ORGAN_ORGANIC aug_message = "You feel a minute twitch in our eyes, and darkness creeps away." -/obj/item/organ/internal/cyberimp/eyes/thermals/ling/emp_act(severity) +/obj/item/organ/cyberimp/eyes/thermals/ling/emp_act(severity) return -/obj/item/organ/internal/cyberimp/eyes/thermals/ling/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/eyes/thermals/ling/Insert(mob/living/carbon/M, special = 0) ..() if(ishuman(owner)) var/mob/living/carbon/human/H = owner H.weakeyes = 1 -/obj/item/organ/internal/cyberimp/eyes/thermals/ling/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/eyes/thermals/ling/Remove(mob/living/carbon/M, special = 0) if(ishuman(owner)) var/mob/living/carbon/human/H = owner H.weakeyes = 0 diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index 2b07ab71265..e4c68a8537c 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -6,6 +6,9 @@ dna_cost = 2 req_stat = UNCONSCIOUS var/recent_uses = 1 //The factor of which the healing should be divided by + var/healing_ticks = 10 + // The ideal total healing amount, divided by healing_ticks to get heal/tick + var/total_healing = 100 /obj/effect/proc_holder/changeling/fleshmend/New() ..() @@ -17,7 +20,7 @@ /obj/effect/proc_holder/changeling/fleshmend/process() if(recent_uses > 1) - recent_uses-- + recent_uses = max(1, recent_uses - (1 / healing_ticks)) //Starts healing you every second for 10 seconds. Can be used whilst unconscious. /obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) @@ -30,12 +33,20 @@ var/mob/living/carbon/human/H = user H.restore_blood() H.remove_all_embedded_objects() + if(H.get_missing_limbs()) + playsound(user, 'sound/magic/Demon_consume.ogg', 50, 1) + H.visible_message("[user]'s missing limbs reform, making a loud, grotesque sound!", "Your limbs regrow, making a loud, crunchy sound and giving you great pain!", "You hear organic matter ripping and tearing!") + H.emote("scream") + H.regenerate_limbs(1) - for(var/i = 0, i < 10, i++) //The healing itself - doesn't heal toxin damage (that's anatomic panacea) and effectiveness decreases with each use in a short timespan + // The healing itself - doesn't heal toxin damage (that's anatomic panacea) and + // effectiveness decreases with each use in a short timespan + for(var/i in 1 to healing_ticks) if(user) - user.adjustBruteLoss(-10 / recent_uses, 0) - user.adjustOxyLoss(-10 / recent_uses, 0) - user.adjustFireLoss(-10 / recent_uses, 0) + var/healpertick = -(total_healing / healing_ticks) + user.adjustBruteLoss(healpertick / recent_uses, 0) + user.adjustOxyLoss(healpertick / recent_uses, 0) + user.adjustFireLoss(healpertick / recent_uses, 0) user.updatehealth() sleep(10) diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/game/gamemodes/changeling/powers/headcrab.dm index c93fcb06c26..78a0e5f9fe3 100644 --- a/code/game/gamemodes/changeling/powers/headcrab.dm +++ b/code/game/gamemodes/changeling/powers/headcrab.dm @@ -10,7 +10,7 @@ var/datum/mind/M = user.mind var/list/organs = user.getorganszone("head", 1) - for(var/obj/item/organ/internal/I in organs) + for(var/obj/item/organ/I in organs) I.Remove(user, 1) explosion(get_turf(user),0,0,2,0,silent=1) @@ -26,7 +26,7 @@ var/turf = get_turf(user) spawn(5) // So it's not killed in explosion var/mob/living/simple_animal/hostile/headcrab/crab = new(turf) - for(var/obj/item/organ/internal/I in organs) + for(var/obj/item/organ/I in organs) I.loc = crab crab.origin = M if(crab.origin) diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm index fddcbfa6d66..1dc79ffc084 100644 --- a/code/game/gamemodes/changeling/powers/mutations.dm +++ b/code/game/gamemodes/changeling/powers/mutations.dm @@ -38,10 +38,18 @@ user.update_inv_l_hand() return 1 -/obj/effect/proc_holder/changeling/weapon/sting_action(mob/user) +/obj/effect/proc_holder/changeling/weapon/sting_action(mob/living/user) if(!user.drop_item()) user << "The [user.get_active_hand()] is stuck to your hand, you cannot grow a [weapon_name_simple] over it!" return + var/limb_regen = 0 + if(user.hand) //we regen the arm before changing it into the weapon + limb_regen = user.regenerate_limb("l_arm", 1) + else + limb_regen = user.regenerate_limb("r_arm", 1) + if(limb_regen) + user.visible_message("[user]'s missing arm reforms, making a loud, grotesque sound!", "Your arm regrows, making a loud, crunchy sound and giving you great pain!", "You hear organic matter ripping and tearing!") + user.emote("scream") var/obj/item/W = new weapon_type(user) user.put_in_hands(W) playsound(user, 'sound/effects/blobattack.ogg', 30, 1) diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index e72decb7b34..d4c60625f27 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -10,7 +10,7 @@ /obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) user << "We begin cleansing impurities from our form." - var/obj/item/organ/internal/body_egg/egg = user.getorgan(/obj/item/organ/internal/body_egg) + var/obj/item/organ/body_egg/egg = user.getorgan(/obj/item/organ/body_egg) if(egg) egg.Remove(user) if(iscarbon(user)) @@ -19,11 +19,11 @@ egg.loc = get_turf(user) user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("potass_iodide", 10) - user.reagents.add_reagent("charcoal", 20) + user.reagents.add_reagent("pen_acid", 20) user.reagents.add_reagent("antihol", 10) + user.reagents.add_reagent("mannitol", 25) for(var/datum/disease/D in user.viruses) D.cure() feedback_add_details("changeling_powers","AP") - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index e32b4a2150d..3307b18cebe 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -23,7 +23,7 @@ user << "We retract our sting, we can't sting anyone for now." user.mind.changeling.chosen_sting = null user.hud_used.lingstingdisplay.icon_state = null - user.hud_used.lingstingdisplay.invisibility = 101 + user.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT /mob/living/carbon/proc/unset_sting() if(mind && mind.changeling && mind.changeling.chosen_sting) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 6b619838ded..dc706d3934f 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -15,51 +15,23 @@ return 0 /proc/is_convertable_to_cult(datum/mind/mind) - if(!istype(mind)) return 0 - if(istype(mind.current, /mob/living/carbon/human) && (mind.assigned_role in list("Captain", "Chaplain"))) return 0 + if(!istype(mind)) + return 0 + if(istype(mind.current, /mob/living/carbon/human) && (mind.assigned_role in list("Captain", "Chaplain"))) + return 0 if(isloyal(mind.current)) return 0 if (ticker.mode.name == "cult") //redundant? if(is_sacrifice_target(mind)) return 0 return 1 -/proc/cultist_commune(mob/living/user, clear = 0, say = 0, message) - if(!message) - return - if(say) - user.say("O bidai nabora se[pick("'","`")]sma!") - else - user.whisper("O bidai nabora se[pick("'","`")]sma!") - sleep(10) - if(!user) - return - if(say) - user.say(message) - else - user.whisper(message) - var/my_message = "Error, message null. You should probably report this." - for(var/mob/M in mob_list) - if(iscultist(M) || (M in dead_mob_list)) - if(clear || !ishuman(user)) - my_message = "[(ishuman(user) ? "Acolyte" : "Construct")] [user]: [message]" - else //Emergency comms - my_message = "Acolyte ???: [message]" - if(M in dead_mob_list) - M << "(F) [my_message]" - else - M << my_message - - log_say("[user.real_name]/[user.key] : [message]") - - - /datum/game_mode/cult name = "cult" config_tag = "cult" antag_flag = ROLE_CULTIST restricted_jobs = list("Chaplain","AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel") protected_jobs = list() - required_players = 30 + required_players = 24 required_enemies = 4 recommended_enemies = 4 enemy_minimum_age = 14 @@ -71,11 +43,12 @@ var/acolytes_survived = 0 var/datum/mind/sacrifice_target = null//The target to be sacrificed + var/list/cultists_to_cult = list() //the cultists we'll convert /datum/game_mode/cult/announce() world << "The current game mode is - Cult!" - world << "Some crewmembers are attempting to start a cult!
\nCultists - complete your objectives at all costs. Convert crewmembers to your cause by using the convert rune, or sacrifice them and turn them into constructs. Remember - there is no you, there is only the cult.
\nPersonnel - Do not let the cult succeed in its mission. Forced consumption of holy water will convert a cultist back to a Nanotrasen-sanctioned faith.
" + world << "Some crewmembers are attempting to start a cult!
\nCultists - sacrifice your target and summon Nar-Sie at all costs. Convert crewmembers to your cause by using the convert rune, or sacrifice them and turn them into constructs. Remember - there is no you, there is only the cult.
\nPersonnel - Do not let the cult succeed in its mission. Forced consumption of holy water will convert a cultist back to a Nanotrasen-sanctioned faith.
" /datum/game_mode/cult/pre_setup() @@ -97,12 +70,12 @@ break var/datum/mind/cultist = pick(antag_candidates) antag_candidates -= cultist - cult += cultist + cultists_to_cult += cultist cultist.special_role = "Cultist" cultist.restricted_roles = restricted_jobs log_game("[cultist.key] (ckey) has been selected as a cultist") - return (cult.len>=required_enemies) + return (cultists_to_cult.len>=required_enemies) /datum/game_mode/cult/proc/memorize_cult_objectives(datum/mind/cult_mind) @@ -113,21 +86,22 @@ explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station." if("sacrifice") if(sacrifice_target) - explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. You will need the Sacrifice rune and three acolytes to do so." + explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role] via invoking a Sacrifice rune with them on it and three acolytes around it." else explanation = "Free objective." if("eldergod") - explanation = "Summon Nar-Sie via the rune 'Call Forth The Geometer'. It will only work if nine acolytes stand on and around it." + explanation = "Summon Nar-Sie by invoking the rune 'Summon Nar-Sie' with nine acolytes around and on it. You must do this after sacrificing your target." cult_mind.current << "Objective #[obj_count]: [explanation]" cult_mind.memory += "Objective #[obj_count]: [explanation]
" + /datum/game_mode/cult/post_setup() - modePlayer += cult + modePlayer += cultists_to_cult if("sacrifice" in cult_objectives) var/list/possible_targets = get_unconvertables() if(!possible_targets.len) message_admins("Cult Sacrifice: Could not find unconvertable target, checking for convertable target.") for(var/mob/living/carbon/human/player in player_list) - if(player.mind && !(player.mind in cult)) + if(player.mind && !(player.mind in cultists_to_cult)) possible_targets += player.mind if(possible_targets.len > 0) sacrifice_target = pick(possible_targets) @@ -135,16 +109,16 @@ message_admins("Cult Sacrifice: ERROR - Null target chosen!") else message_admins("Cult Sacrifice: Could not find unconvertable or convertable target. WELP!") - for(var/datum/mind/cult_mind in cult) + for(var/datum/mind/cult_mind in cultists_to_cult) equip_cultist(cult_mind.current) update_cult_icons_added(cult_mind) cult_mind.current << "You are a member of the cult!" - memorize_cult_objectives(cult_mind) + add_cultist(cult_mind, 0) ..() + /datum/game_mode/proc/equip_cultist(mob/living/carbon/human/mob,tome = 0) if(!istype(mob)) return - mob.cult_add_comm() if (mob.mind) if (mob.mind.assigned_role == "Clown") mob << "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself." @@ -180,14 +154,17 @@ B.show_to(mob) return 1 -/datum/game_mode/proc/add_cultist(datum/mind/cult_mind) //BASE +/datum/game_mode/proc/add_cultist(datum/mind/cult_mind, stun) //BASE if (!istype(cult_mind)) return 0 if(!(cult_mind in cult) && is_convertable_to_cult(cult_mind)) - cult_mind.current.Paralyse(5) + if(stun) + cult_mind.current.Paralyse(5) cult += cult_mind cult_mind.current.faction |= "cult" - cult_mind.current.cult_add_comm() + cult_mind.current.verbs += /mob/living/proc/cult_help + var/datum/action/innate/cultcomm/C = new() + C.Grant(cult_mind.current) update_cult_icons_added(cult_mind) cult_mind.current.attack_log += "\[[time_stamp()]\] Has been converted to the cult!" if(jobban_isbanned(cult_mind.current, ROLE_CULTIST)) @@ -195,18 +172,21 @@ return 1 -/datum/game_mode/cult/add_cultist(datum/mind/cult_mind) //INHERIT +/datum/game_mode/cult/add_cultist(datum/mind/cult_mind, stun) //INHERIT if (!..(cult_mind)) return memorize_cult_objectives(cult_mind) -/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1) +/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, show_message = 1, stun) if(cult_mind in cult) cult -= cult_mind cult_mind.current.faction -= "cult" - cult_mind.current.verbs -= /mob/living/proc/cult_innate_comm - cult_mind.current.Paralyse(5) + cult_mind.current.verbs -= /mob/living/proc/cult_help + for(var/datum/action/innate/cultcomm/C in cult_mind.current.actions) + qdel(C) + if(stun) + cult_mind.current.Paralyse(5) cult_mind.current << "An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant." cult_mind.memory = "" update_cult_icons_removed(cult_mind) diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm new file mode 100644 index 00000000000..0af0525f908 --- /dev/null +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -0,0 +1,75 @@ + +/datum/action/innate/cultcomm + name = "Communion" + button_icon_state = "cult_comms" + background_icon_state = "bg_demon" + check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_CONSCIOUS + +/datum/action/innate/cultcomm/IsAvailable() + if(!iscultist(owner)) + return 0 + return ..() + +/datum/action/innate/cultcomm/Activate() + var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") + if(!input || !IsAvailable()) + return + + cultist_commune(usr, input) + return + +/proc/cultist_commune(mob/living/user, message) + if(!message) + return + if(!ishuman(user)) + user.say("O bidai nabora se[pick("'","`")]sma!") + else + user.whisper("O bidai nabora se[pick("'","`")]sma!") + sleep(10) + if(!user) + return + if(!ishuman(user)) + user.say(message) + else + user.whisper(message) + var/my_message = "[(ishuman(user) ? "Acolyte" : "Construct")] [user]: [message]" + for(var/mob/M in mob_list) + if(iscultist(M)) + M << my_message + else if(M in dead_mob_list) + M << "(F) [my_message]" + + log_say("[user.real_name]/[user.key] : [message]") + +/mob/living/proc/cult_help() + set category = "Cultist" + set name = "How to Play Cult" + var/text = "" + text += "
Tenets of the Dark One



" + + text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ + in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" + + text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ + the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" + + text += "III. RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ + trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" + + text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ + to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" + + text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ + you should use cuffs or a talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ + will knock them out before they can recover. Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a \ + conversion rune to convert someone. Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" + + text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ + their corpse on a sacrifice rune and triggering that rune with THREE cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ + just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ + you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" + + var/datum/browser/popup = new(usr, "mind", "", 800, 600) + popup.set_content(text) + popup.open() + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 8b8b70de1b9..680317bb768 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -12,7 +12,6 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") - /obj/item/weapon/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user) if(!iscultist(user)) user.Weaken(5) @@ -49,6 +48,15 @@ var/mob/living/carbon/human/H = target H.drip(50) + +/obj/item/weapon/restraints/legcuffs/bola/cult + name = "nar'sian bola" + desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." + icon_state = "bola_cult" + breakouttime = 45 + weaken = 1 + + /obj/item/clothing/head/culthood name = "ancient cultist hood" icon_state = "culthood" diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 7ba0a4c788f..ecd8c75aa6e 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -1,46 +1,9 @@ /* -This file contains the arcane tome files as well as innate cultist emergency communications. +This file contains the arcane tome files. */ -/mob/proc/cult_add_comm() //why the fuck does this have its own proc? not removing it because it might be used somewhere but... - verbs += /mob/living/proc/cult_innate_comm - -/mob/living/proc/cult_innate_comm() - set category = "Cultist" - set name = "Imperfect Communion" - - if(!iscultist(usr) || usr.incapacitated()) - return - - var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") - if(!input) - return - - if(!iscultist(usr) || usr.incapacitated()) - return //we do this again because input() sleeps - - if(ishuman(usr) || ismonkey(usr)) //Damage only applies to humans and monkeys, to allow constructs to communicate - usr.visible_message("[usr] starts clawing at \his arms with \his fingernails!", "You begin slicing open your arms with your fingernails!") - apply_damage(10,BRUTE, "l_arm") - apply_damage(10,BRUTE, "r_arm") - sleep(50) - if(usr.incapacitated()) - return //Hard to drawn intrinsic symbols when you're bleeding out in your cell. - var/turf/location = loc - if(istype(location, /turf)) // tearing your arms apart is going to spill a bit of blood, in fact thats the idea - location.add_blood(usr) // TO-DO change this to a badly drawn rune - apply_damage(10,BRUTE, "l_arm") // does a metric fuck ton of damage because this meant to be an emergency method of communication. - apply_damage(10,BRUTE, "r_arm") - if(usr.incapacitated()) - return - usr.visible_message("[usr] paints strange symbols with their own blood.", "You paint a messy rune with your own blood.") - sleep(20) - - cultist_commune(usr, 0, 1, input) - return - /obj/item/weapon/tome name = "arcane tome" @@ -52,16 +15,12 @@ This file contains the arcane tome files as well as innate cultist emergency com /obj/item/weapon/tome/examine(mob/user) ..() - if(iscultist(user)) - user << "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie." + if(iscultist(user) || user.stat == DEAD) + user << "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie." + user << "Striking another cultist with it will purge holy water from them." + user << "Striking a noncultist, however, will sear their flesh." /obj/item/weapon/tome/attack(mob/living/M, mob/living/user) - if(istype(M,/mob/dead/observer)) - M.invisibility = 0 - user.visible_message("[user] strikes the air with [src], and a ghost appears!", \ - "You drag the ghost to your plane of reality!") - add_logs(user, M, "smacked", src) - return if(!istype(M)) return if(!iscultist(user)) @@ -89,135 +48,132 @@ This file contains the arcane tome files as well as innate cultist emergency com open_tome(user) /obj/item/weapon/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Commune","Scribe Rune","Read Tome") + var/choice = alert(user,"You open the tome...",,"Scribe Rune","More Information","Cancel") switch(choice) - if("Read Tome") + if("More Information") read_tome(user) if("Scribe Rune") scribe_rune(user) - if("Commune") - var/input = stripped_input(usr, "Please enter a message to tell to the other acolytes.", "Voice of Blood", "") - if(!input) - return - cultist_commune(user, 1, 0, input) + if("Cancel") + return /obj/item/weapon/tome/proc/read_tome(mob/user) var/text = "" text += "
Archives of the Dark One



" - text += "As a member of the cult, your goals are almost or entirely impossible to complete without special aid from the Geometer's plane. The primary method of doing this are runes. These \ - scribings, drawn in blood, are concentrated nodes of the magic within Nar-Sie's realm and will allow the performance of many tasks to aid you and the rest of the cult in your objectives. Runes \ - have many different names, and almost all of them are known as Rites. The only rune that is not a Rite is the Ritual of Dimensional Rending, which can only be performed with nine cultists and calls \ - forth the avatar of the Geometer herself (so long as she consents).

A rune's name and effects can be revealed by examining the rune.


" + text += "A rune's name and effects can be revealed by examining the rune.<

" - text += "Teleport
The Rite of Translocation is a unique rite in that it requires a keyword before the scribing can begin. When invoked, the rune will \ - search for other Rites of Translocation with the same keyword. Assuming one is found, the user will be instantaneously transported to the location of the other rune. If more than two runes are scribed \ - with the same keyword, it will choose randomly between all eligible runes and send the invoker to one of them.

" + text += "Create Talisman
This rune is one of the most important runes the cult has, being the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \ + invoking it and choosing which talisman you desire, the paper will be converted, after some delay into a talisman.

" - text += "Teleport Other
The Rite of Forced Translocation, like the Rite of Translocation, works by teleporting the person on the rune to one of the \ - same keyword. However, this rune will only work on people other than the user, allowing the user to send any living creature somewhere else.

" + text += "Teleport
This rune is unique in that it requires a keyword before the scribing can begin. When invoked, it will find any other Teleport runes; \ + If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune.

" - text += "Summon Tome
The Rite of Knowledge is a simplistic rune. When invoked, it will summon a single arcane tome to the rune's location before vanishing. \ -

" + text += "Convert
This rune is critical to the success of the cult. It will allow you to convert normal crew members into cultists. \ + To do this, simply place the crew member upon the rune and invoke it. This rune requires two invokers to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ + be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.
\ + Successful conversions will produce a tome for the new cultist.

" - text += "Convert
The Rite of Enlightment is paramount to the success of the cult. It will allow you to convert normal crew members into cultists. \ - To do this, simply place the crew member upon the rune and invoke it. This rune requires two acolytes to use. If the target to be converted is loyalty-implanted or a certain assignment, they will \ - be unable to be converted. People the Geometer wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.

" + text += "Sacrifice
This rune is necessary to achieve your goals. Simply place any dead creature upon the rune and invoke it (this will not \ + target cultists!). If this creature has a mind, a soulstone will be created and the creature's soul transported to it. Sacrificing the dead can be done alone, but sacrificing living crew or your cult's target will require 3 cultists. \ + Soulstones used on construct shells will move that soul into a powerful construct of your choice.

" - text += "Sacrifice
The Rite of Tribute is used to offer sacrifice to the Geometer. Simply place any living creature upon the rune and invoke it (this will not \ - target cultists!). If this creature has a mind, a soul shard will be created and the creature's soul transported to it. This rune is required if the cult's objectives include the sacrifice of a crew \ - member.

" - - text += "Raise Dead
The Rite of Resurrection is a delicate rite that requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ + text += "Raise Dead
This rune requires two corpses. To perform the ritual, place the corpse you wish to revive onto \ the rune and the offering body adjacent to it. When the rune is invoked, the body to be sacrificed will turn to dust, the life force flowing into the revival target. Assuming the target is not moved \ within a few seconds, they will be brought back to life, healed of all ailments.

" - text += "Veil Runes
The Rite of Obscurity is a rite that will cause all nearby runes to become invisible. The runes will still be considered by other rites \ - (such as the Rite of Translocation) but will be unusuable directly.(such as the Rite of Translocation) but will be unusuable directly. Use the same rite once more to reveal these runes once more.

" + text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. This rune may allow you to gain the upper \ + hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location. The size of the EMP will grow significantly for each additional adjacent cultist when the \ + rune is activated.

" - text += "Reveal Runes
The Rite of True Sight is the foil of the Rite of Obscurity. It will turn all invisible runes visible once more, in addition to causing \ - all spirits nearby to become visible.

" - - text += "Disguise Runes
Many crewmen enjoy drawing runes in crayon that resemble spell circles in order to play pranks on their fellow crewmen. The Rite of \ - False Truths takes advantage of this very joke. When invoked, all nearby runes will appear dull, precisely resembling those drawn in crayon. They still cannot be cleaned by conventional means, so \ - anyone trying to clean up the rune may become suspicious as it does not respond.

" - - text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. The Rite of Disruption may allow you to gain the upper \ - hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location.

" - - text += "Astral Communion
The Rite of Astral Communion is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ + text += "Astral Communion
This rune is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ user's spirit will be ripped from their body. In this state, the user's physical body will be locked in place to the rune itself - any attempts to move it will result in the rune pulling it back. \ The body will also take constant damage while in this form, and may even die. The user's spirit will contain their consciousness, and will allow them to freely wander the station as a ghost. This may \ also be used to commune with the dead.

" - text += "Form Shield
While simple, the Rite of the Corporeal Shield serves an important purpose in defense and hindering passage. When invoked, the \ + text += "Form Barrier
While simple, this rune serves an important purpose in defense and hindering passage. When invoked, the \ rune will draw a small amount of life force from the user and make the space above the rune completely dense, rendering it impassable to all but the most complex means. The rune may be invoked again to \ undo this effect and allow passage again.

" - text += "Debilitate
The Rite of the Shadowed Mind is simple. When invoked, it will cause all non-cultists that can see its rune to become deaf, blind and mute for a \ - considerable amount of time.

" + text += "Summon Cultist
This rune allows the cult to free other cultists with ease. When invoked, it will allow the user to summon a single cultist to the rune from \ + any location. It requires two invokers, and will damage each invoker slightly.

" - text += "Stun
Though the Rite of Blazing Light is weak when invoked normally, using it in conjuction with the Rite of Binding makes it much more powerful. \ - This rune will cause any non-cultists that can see the rune to become disoriented, disabling them for a short time.

" + text += "Blood Boil
When invoked, this rune will do a massive amount of damage to all non-cultist viewers, but it will also emit a small explosion upon invocation. \ + It requires three invokers.

" - text += "Summon Cultist
The Rite of Joined Souls requires two acolytes to use. When invoked, it will allow the user to summon a single cultist to the rune from \ - any location. This will deal a moderate amount of damage to all invokers.

" - - text += "Imbue Talisman
The Rite of Binding is the only way to create talismans. A blank sheet of paper must be on top of the rune, with a valid rune nearby. After \ - invoking it, the paper will be converted into a talisman, and the rune inlaid upon it.

" - - text += "Fabricate Shell
The Rite of Fabrication is the main way of creating construct shells. To use it, one must place five sheets of plasteel on top of the rune \ - and invoke it. The sheets will them be twisted into a construct shell, ready to recieve a soul to occupy it.

" - - text += "Summon Armaments
The Rite of Arming will equip the user with armored robes, a backpack, an eldrich longsword, and a pair of boots. Any items that cannot \ - be equipped will not be summoned.

" - - text += "Drain Life
The Rite of Leeching will drain the life of any non-cultist above the rune and heal the invoker for the same amount.

" - - text += "Blood Boil
The Rite of Boiling Blood may be considered one of the most dangerous rites composed by the cult of Nar-Sie. When invoked, it will do a \ - massive amount of damage to all non-cultist viewers, but it will also emit an explosion upon invocation. Use with caution

" - - text += "Time Stop
The Rite of Dimensional Corruption is a versatile rite that can be very strong when protecting our cult from the enemies of the Geometer. \ - As it is invoked, it will rend and reshape reality around itself, stopping time for all those who don't follow the teachings of the Geometer. However, it requires more than one ritual soul as a \ - catalyst, and its power is bound to overflow and hurt its casters.

" - - text += "Manifest Spirit
If you wish to bring a spirit back from the dead with a wish for vengeance and desire to serve, the Rite of Spectral \ - Manifestation can do just that. When invoked, any spirits above the rune will be brought to life as a human wearing nothing that seeks only to serve you and the Geometer. However, the spirit's link \ - to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, the spirits will dissipate, dropping their items to the ground. You may manifest \ + text += "Manifest Spirit
This rune allows you to summon spirits as humanoid fighters. When invoked, a spirit above the rune will be brought to life as a human, wearing nothing, that seeks only to serve you and the Geometer. \ + However, the spirit's link to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, all summoned spirits will dissipate, dropping their items to the ground. You may manifest \ multiple spirits with one rune, but you will rapidly take damage in doing so.

" - text += "Call Forth The Geometer
There is only one way to summon the avatar of Nar-Sie, and that is the Ritual of Dimensional Rending. This ritual, in \ - comparison to other runes, is very large, requiring a 3x3 space of empty tiles to create. To invoke the rune, nine cultists must stand on the rune, so that all of them are within its circle. Then, \ - simply invoke it. A brief tearing will be heard as the barrier between dimensions is torn open, and the avatar will come forth.


" + text += "Summon Nar-Sie
This rune is necessary to achieve your goals. On attempting to scribe it, it will produce shields around you and alert everyone you are attempting to scribe it; it takes a very long time to scribe, \ + and does massive damage to the one attempting to scribe it.
Invoking it requires 9 invokers and the sacrifice of a specific crewmember, and once invoked, will summon the Geometer, Nar-Sie herself. \ + This will complete your objectives.


" - text += "While runes are excellent for many tasks, they lack portability. The advent of talismans has, to a degree, solved this inconvenience. Simply put, a talisman is a piece of paper with a \ - rune inlaid within it. The words of the rune can be whispered in order to invoke its effects, although usually to a lesser extent. To create a talisman, simply use a Rite of Binding as described above. \ - Unless stated otherwise, talismans are invoked by activating them in your hand. A list of valid rites, as well as the effects of their talisman form, can be found below.


" + text += "Talisman of Teleportation
The talisman form of the Teleport rune will transport the invoker to a selected Teleport rune once.

" - text += "Talisman of Teleportation
The talisman form of the Rite of Translocation will transport the invoker to a randomly chosen rune of the same keyword, then \ - disappear.

" + text += "Talisman of Construction
This talisman is the main way of creating construct shells. To use it, one must strike 30 sheets of metal with the talisman. The sheets will then be twisted into a construct shell, ready to recieve a soul to occupy it.

" - text += "Talisman of Tome Summoning
This talisman functions nearly identically to the rune. The talisman will attempt to place the tome in your hand \ - instead of on the ground, though this is the only advantage it has over the rune. It can be used once, then disappears.

" + text += "Talisman of Tome Summoning
This talisman will produce a single tome at your feet.

" - text += "Talismans of Veiling, Revealing, and Disguising
These talismans all function identically to their rune counterparts, but with less range. In addition, \ - the Talisman of True Sight will not reveal spirits. They will disappear after one use.

" + text += "Talisman of Veiling/Revealing
This talisman will hide runes on its first use, and on the second, will reveal runes.

" - text += "Talisman of Electromagnetic Pulse
This talisman functions like the Rite of Disruption. It disappears after one use.

" + text += "Talisman of Disguising
This talisman will permanently disguise all nearby runes as crayon runes.

" - text += "Talisman of Stunning
Without this talisman, the cult would have no way of easily acquiring targets to convert. Commonly called \"stunpapers\", this \ - talisman functions differently from others. Rather than simply reading the words, the target must be attacked directly with the talisman. The talisman will then knock down the target for a long \ - duration in addition to inhibiting their speech. Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead." + text += "Talisman of Electromagnetic Pulse
This talisman will EMP anything else nearby. It disappears after one use.

" + + text += "Talisman of Stunning
Attacking a target will knock them down for a long duration in addition to inhibiting their speech. \ + Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead.

" + + text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ + be equipped will not be summoned. Attacking a fellow cultist with it will instead equip them.

" + + text += "Talisman of Horrors
The Talisman of Horror must be applied directly to the victim, it will shatter your victim's mind with visions of the endtimes that may incapitate them.

" + + text += "Talisman of Shackling
The Talisman of Shackling must be applied directly to the victim, it has 4 uses and cuffs victims with magic shackles that disappear when removed.

" + + text += "In addition to these runes, the cult has a small selection of equipment and constructs.

" + + text += "Equipment:

" + + text += "Cult Blade
Cult blades are sharp weapons that, notably, cannot be used by noncultists. These blades are produced by the Talisman of Arming.

" + + text += "Cult Bola
Cult bolas are strong bolas, useful for snaring targets. These bolas are produced by the Talisman of Arming.

" + + text += "Cult Robes
Cult robes are heavily armored robes. These robes are produced by the Talisman of Arming.

" + + text += "Soulstone
A soulstone is a simple piece of magic, produced either via the starter talisman or by sacrificing humans. Using it on an unconscious or dead human, or on a Shade, will trap their soul in the stone, allowing its use in construct shells. \ +
The soul within can also be released as a Shade by using it in-hand.

" + + text += "Construct Shell
A construct shell is useless on its own, but placing a filled soulstone within it allows you to produce your choice of a Wraith, a Juggernaut, or an Artificer. \ +
Each construct has uses, detailed below in Constructs. Construct shells can be produced via the starter talisman or the Rite of Fabrication.

" + + text += "Constructs:

" + + text += "Shade
While technically not a construct, the Shade is produced when released from a soulstone. It is quite fragile and has weak melee attacks, but is fully healed when recaptured by a soulstone.

" + + text += "Wraith
The Wraith is a fast, lethal melee attacker which can jaunt through walls. However, it is only slightly more durable than a shade.

" + + text += "Juggernaut
The Juggernaut is a slow, but durable, melee attacker which can produce temporary forcewalls. It will also reflect most lethal energy weapons.

" + + text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, produce more soulstones and construct shells, \ + construct fortifying cult walls and flooring, and finally, it can release a few indiscriminate stunning missiles.

" + + text += "Harvester
If you see one, know that you have done all you can and your life is void.

" var/datum/browser/popup = new(user, "tome", "", 800, 600) popup.set_content(text) popup.open() return 1 -/obj/item/weapon/tome/proc/scribe_rune(mob/user) +/obj/item/weapon/tome/proc/scribe_rune(mob/living/user) + var/turf/Turf = get_turf(user) var/chosen_keyword - var/rune_to_scribe + var/obj/effect/rune/rune_to_scribe var/entered_rune_name var/list/possible_runes = list() + var/list/shields = list() + if(locate(/obj/effect/rune) in Turf) + user << "There is already a rune here." + return for(var/T in subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) var/obj/effect/rune/R = T if(initial(R.cultist_name)) @@ -239,24 +195,45 @@ This file contains the arcane tome files as well as innate cultist emergency com break if(!rune_to_scribe) return + Turf = get_turf(user) //we may have moved. adjust as needed... + if(locate(/obj/effect/rune) in Turf) + user << "There is already a rune here." + return if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return + if(ispath(rune_to_scribe, /obj/effect/rune/narsie)) + var/confirm_final = alert(usr, "This is the FINAL step to summon Nar-Sie, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No") + if(confirm_final == "No") + usr << "On second thought, we should prepare further for the final battle..." + return + var/area/A = get_area(src) + var/locname = initial(A.name) + priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensionsal Affairs", 'sound/AI/spanomalies.ogg') + for(var/B in spiral_range_turfs(1, user, 1)) + var/turf/T = B + var/obj/machinery/shield/N = new(T) + N.name = "Rune-Scriber's Shield" + N.desc = "A potent shield summoned by cultists to protect them while they prepare the final ritual" + N.icon_state = "shield-red" + N.health = 60 + shields |= N user.visible_message("[user] cuts open their arm and begins writing in their own blood!", \ "You slice open your arm and begin drawing a sigil of the Geometer.") - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(0.1, BRUTE, pick("l_arm", "r_arm")) - if("Call Forth The Geometer" == entered_rune_name) - C.apply_damage(40, BRUTE, pick("l_arm", "r_arm")) - var/area/A = get_area(src) - var/locname = initial(A.name) - priority_announce("Figments from an eldritch god are being summoned by [user] into [locname] from an unknown dimension. Disrupt the ritual before it reaches a critical point.","Central Command Higher Dimensionsal Affairs") - if(!do_after(user, 500, target = get_turf(user))) - return - if(!do_after(user, 50, target = get_turf(user))) + user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm")) + if(!do_after(user, initial(rune_to_scribe.scribe_delay), target = get_turf(user))) + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) + return + if(locate(/obj/effect/rune) in Turf) + user << "There is already a rune here." return user.visible_message("[user] creates a strange circle in their own blood.", \ "You finish drawing the arcane markings of the Geometer.") - var/obj/effect/rune/R = new rune_to_scribe(get_turf(user)) - if(chosen_keyword) - R.keyword = chosen_keyword + for(var/V in shields) + var/obj/machinery/shield/S = V + if(S && !qdeleted(S)) + qdel(S) + new rune_to_scribe(Turf, chosen_keyword) + user << "The [lowertext(initial(rune_to_scribe.cultist_name))] rune [initial(rune_to_scribe.cultist_desc)]" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 2904f067736..4b75c8ce9d1 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -17,7 +17,7 @@ To draw a rune, use an arcane tome. name = "rune" var/cultist_name = "basic rune" desc = "An odd collection of symbols drawn in what seems to be blood." - var/cultist_desc = "A basic rune with no function." //This is shown to cultists who examine the rune in order to determine its true purpose. + var/cultist_desc = "a basic rune with no function." //This is shown to cultists who examine the rune in order to determine its true purpose. anchored = 1 icon = 'icons/obj/rune.dmi' icon_state = "1" @@ -30,26 +30,31 @@ To draw a rune, use an arcane tome. var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it. var/rune_in_use = 0 // Used for some runes, this is for when you want a rune to not be usable when in use. - var/req_pylons = 0 - var/req_forges = 0 - var/req_archives = 0 - var/req_altars = 0 + var/scribe_delay = 50 //how long the rune takes to create + var/scribe_damage = 0.1 //how much damage you take doing it + + var/allow_excess_invokers = 0 //if we allow excess invokers when being invoked var/req_keyword = 0 //If the rune requires a keyword - go figure amirite var/keyword //The actual keyword for the rune +/obj/effect/rune/New(loc, set_keyword) + ..() + if(set_keyword) + keyword = set_keyword + /obj/effect/rune/examine(mob/user) ..() if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects user << "Name: [cultist_name]" - user << "Effects: [cultist_desc]" + user << "Effects: [capitalize(cultist_desc)]" user << "Required Acolytes: [req_cultists]" if(req_keyword && keyword) user << "Keyword: [keyword]" /obj/effect/rune/attackby(obj/I, mob/user, params) if(istype(I, /obj/item/weapon/tome) && iscultist(user)) - user << "You carefully erase [src]." + user << "You carefully erase the [lowertext(cultist_name)] rune." qdel(src) return else if(istype(I, /obj/item/weapon/nullrod)) @@ -63,14 +68,22 @@ To draw a rune, use an arcane tome. if(!iscultist(user)) user << "You aren't able to understand the words of [src]." return - if(can_invoke(user)) - invoke(user) - var/oldtransform = transform - animate(src, transform = matrix()*2, alpha = 0, time = 5) //fade out - animate(transform = oldtransform, alpha = 255, time = 0) + var/list/invokers = can_invoke(user) + if(invokers.len >= req_cultists) + invoke(invokers) else fail_invoke(user) +/obj/effect/rune/proc/talismanhide() //for talisman of revealing/hiding + visible_message("[src] fades away.") + invisibility = INVISIBILITY_OBSERVER + alpha = 100 //To help ghosts distinguish hidden runes + +/obj/effect/rune/proc/talismanreveal() //for talisman of revealing/hiding + invisibility = 0 + visible_message("[src] suddenly appears!") + alpha = initial(alpha) + /* There are a few different procs each rune runs through when a cultist activates it. @@ -83,64 +96,55 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/proc/can_invoke(var/mob/living/user) //This proc determines if the rune can be invoked at the time. If there are multiple required cultists, it will find all nearby cultists. - if(!structure_check(req_pylons, req_forges, req_archives, req_altars)) - return 0 - if(!keyword && req_keyword) - return 0 - if(req_cultists <= 1) - if(invocation) - user.say(invocation) - return 1 - else - var/cultists_in_range = 0 + var/list/invokers = list() //people eligible to invoke the rune + var/list/chanters = list() //people who will actually chant the rune when passed to invoke() + chanters |= user + invokers |= user + if(req_cultists > 1 || allow_excess_invokers) for(var/mob/living/L in range(1, src)) if(iscultist(L)) - var/mob/living/carbon/human/H = L - if(!istype(H)) - if(istype(L, /mob/living/simple_animal/hostile/construct)) - if(invocation) - L.say(invocation) - cultists_in_range++ + if(L == user) continue - if(L.stat || (H.disabilities & MUTE) || H.silent) + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if((H.disabilities & MUTE) || H.silent) + continue + if(L.stat) continue - if(invocation) - L.say(invocation) - cultists_in_range++ - if(cultists_in_range >= req_cultists) - return 1 - else - return 0 + invokers |= L + if(invokers.len >= req_cultists) + if(allow_excess_invokers) + chanters |= invokers + else + invokers -= user + shuffle(invokers) + for(var/i in 0 to req_cultists) + var/L = pick_n_take(invokers) + chanters |= L + return chanters -/obj/effect/rune/proc/invoke(var/mob/living/user) +/obj/effect/rune/proc/invoke(var/list/invokers) //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. + if(invocation) + for(var/M in invokers) + var/mob/living/L = M + L.say(invocation) + var/oldtransform = transform + spawn(0) //animate is a delay, we want to avoid being delayed + animate(src, transform = matrix()*2, alpha = 0, time = 5) //fade out + animate(transform = oldtransform, alpha = 255, time = 0) /obj/effect/rune/proc/fail_invoke(var/mob/living/user) //This proc contains the effects of a rune if it is not invoked correctly, through either invalid wording or not enough cultists. By default, it's just a basic fizzle. visible_message("The markings pulse with a small flash of red light, then fall dark.") - -/obj/effect/rune/proc/structure_check(var/rpylons, var/rforges, var/rarchives, var/raltars) - var/pylons = 0 - var/forges = 0 - var/archives = 0 - var/altars = 0 - for(var/obj/structure/cult/pylon in orange(3,src)) - pylons++ - for(var/obj/structure/cult/forge in orange(3,src)) - forges++ - for(var/obj/structure/cult/tome in orange(3,src)) - archives++ - for(var/obj/structure/cult/talisman in orange(3,src)) - altars++ - if(pylons >= rpylons && forges >= rforges && archives >= rarchives && altars >= raltars) - return 1 - return 0 - + spawn(0) //animate is a delay, we want to avoid being delayed + animate(src, color = rgb(255, 0, 0), time = 0) + animate(src, color = initial(color), time = 5) //Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user. /obj/effect/rune/malformed cultist_name = "malformed rune" - cultist_desc = "A senseless rune written in gibberish. No good can come from invoking this." + cultist_desc = "a senseless rune written in gibberish. No good can come from invoking this." invocation = "Ra'sha yoka!" /obj/effect/rune/malformed/New() @@ -148,9 +152,12 @@ structure_check() searches for nearby cultist structures required for the invoca icon_state = "[rand(1,6)]" color = rgb(rand(0,255), rand(0,255), rand(0,255)) -/obj/effect/rune/malformed/invoke(mob/living/user) - user << "You feel your life force draining. The Geometer is displeased." - user.apply_damage(30, BRUTE) +/obj/effect/rune/malformed/invoke(var/list/invokers) + ..() + for(var/M in invokers) + var/mob/living/L = M + L << "You feel your life force draining. The Geometer is displeased." + L.apply_damage(30, BRUTE) qdel(src) /mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes @@ -159,135 +166,142 @@ structure_check() searches for nearby cultist structures required for the invoca return N return 0 +//Rite of Binding: A paper on top of the rune to a talisman. +/obj/effect/rune/imbue + cultist_name = "Create Talisman" + cultist_desc = "transforms paper into powerful magic talismans." + invocation = "H'drak v'loso, mir'kanas verbot!" + icon_state = "3" + color = rgb(0, 0, 255) + +/obj/effect/rune/imbue/invoke(var/list/invokers) + var/mob/living/user = invokers[1] //the first invoker is always the user + var/turf/T = get_turf(src) + var/list/papers_on_rune = list() + var/entered_talisman_name + var/obj/item/weapon/paper/talisman/talisman_type + var/list/possible_talismans = list() + for(var/obj/item/weapon/paper/P in T) + if(!P.info) + papers_on_rune.Add(P) + if(!papers_on_rune.len) + user << "There must be a blank paper on top of [src]!" + fail_invoke() + log_game("Talisman Creation rune failed - no blank papers on rune") + return + if(rune_in_use) + user << "[src] can only support one ritual at a time!" + fail_invoke() + log_game("Talisman Creation rune failed - already in use") + return + var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + var/obj/item/weapon/paper/talisman/J = I + var/talisman_cult_name = initial(J.cultist_name) + if(talisman_cult_name) + possible_talismans[talisman_cult_name] = J //This is to allow the menu to let cultists select talismans by name + entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans + talisman_type = possible_talismans[entered_talisman_name] + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || rune_in_use || !talisman_type) + return + ..() + visible_message("Dark power begins to channel into the paper!.") + rune_in_use = 1 + if(!do_after(user, 100, target = get_turf(user))) + rune_in_use = 0 + return + new talisman_type(get_turf(src)) + visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") + qdel(paper_to_imbue) + rune_in_use = 0 + var/list/teleport_runes = list() -//Rite of Translocation: Warps the user to a random teleport rune with the same keyword. /obj/effect/rune/teleport cultist_name = "Teleport" - cultist_desc = "Warps the user to a random rune of the same keyword." + cultist_desc = "warps everything above it to another chosen teleport rune." invocation = "Sas'so c'arta forbici!" icon_state = "2" - color = rgb(0, 0, 255) + color = "#551A8B" req_keyword = 1 + var/listkey -/obj/effect/rune/teleport/New() +/obj/effect/rune/teleport/New(loc, set_keyword) ..() - teleport_runes.Add(src) + var/area/A = get_area(src) + var/locname = initial(A.name) + listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" + teleport_runes += src /obj/effect/rune/teleport/Destroy() - teleport_runes.Remove(src) - ..() + teleport_runes -= src + return ..() -/obj/effect/rune/teleport/invoke(mob/living/user) +/obj/effect/rune/teleport/invoke(var/list/invokers) + var/mob/living/user = invokers[1] //the first invoker is always the user var/list/potential_runes = list() - for(var/obj/effect/rune/teleport/T in teleport_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) + var/list/teleportnames = list() + var/list/duplicaterunecount = list() + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 + if(T != src && (T.z <= ZLEVEL_SPACEMAX)) + potential_runes[resultkey] = T if(!potential_runes.len) - user << "There are no runes with the same keyword!" + user << "There are no valid runes to teleport to!" + log_game("Teleport rune failed - no other teleport runes") fail_invoke() - log_game("Teleport rune failed - no candidates with matching keyword") return if(user.z > ZLEVEL_SPACEMAX) user << "You are not in the right dimension!" - fail_invoke() log_game("Teleport rune failed - user in away mission") - return - - var/obj/effect/rune/selected_rune = pick(potential_runes) - user.visible_message("[user] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - user.forceMove(get_turf(selected_rune)) - - -var/list/teleport_other_runes = list() -//Rite of Forced Translocation: Warps the target to a random teleport rune with the same keyword. -/obj/effect/rune/teleport_other - cultist_name = "Teleport Other" - cultist_desc = "Warps the target to a random rune of the same keyword." - invocation = "Sas'so c'arta forbica!" - icon_state = "1" - color = rgb(200, 0, 0) - req_keyword = 1 - -/obj/effect/rune/teleport_other/New() - ..() - teleport_other_runes.Add(src) - -/obj/effect/rune/teleport_other/Destroy() - teleport_other_runes.Remove(src) - ..() - -/obj/effect/rune/teleport_other/invoke(mob/living/user) - var/list/potential_runes = list() - for(var/obj/effect/rune/teleport_other/T in teleport_other_runes) - if(T.keyword == src.keyword && T != src && (T.z <= ZLEVEL_SPACEMAX)) - potential_runes.Add(T) - - if(!potential_runes.len) - user << "There are no runes with the same keyword!" fail_invoke() - log_game("Teleport Other rune failed - no candidates with matching keyword") return - if(user.z > ZLEVEL_SPACEMAX) - user << "You are not in the right dimension!" + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !actual_selected_rune) fail_invoke() - log_game("Teleport rune failed - user in away mission") return - var/obj/effect/rune/selected_rune = pick(potential_runes) - var/mob/living/target - - var/list/targets = list() - for(var/mob/living/L in get_turf(src)) - if(L != user) - targets.Add(L) - if(!targets.len) - user << "There are no targets standing on the rune!" - fail_invoke() - log_game("Teleport Other rune failed - no targets on rune") - return - if(targets.len > 1) - target = input(user, "Choose a person to teleport.", "Rite of Forced Translocation") as null|anything in targets - user - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - if(!target) - fail_invoke() - return + var/turf/T = get_turf(src) + var/movedsomething = 0 + var/moveuserlater = 0 + for(var/atom/movable/A in T) + if(A == user) + moveuserlater = 1 + movedsomething = 1 + continue + if(!A.anchored) + movedsomething = 1 + A.forceMove(get_turf(actual_selected_rune)) + if(movedsomething) + ..() + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!") + user << "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"]." + if(moveuserlater) + user.forceMove(get_turf(actual_selected_rune)) else - target = targets[targets.len] - - target.visible_message("[target] vanishes in a flash of red light!", \ - "Your vision blurs, and you suddenly appear somewhere else.") - target.forceMove(get_turf(selected_rune)) - -//Rite of Knowledge: Creates an arcane tome at the rune's location and destroys the rune. -/obj/effect/rune/summon_tome - cultist_name = "Summon Tome" - cultist_desc = "Pulls an arcane tome from the archives of the Geometer." - invocation = "N'ath reth sh'yro eth d'raggathnor!" - icon_state = "5" - color = rgb(0, 0, 255) - - -/obj/effect/rune/summon_tome/invoke(mob/living/user) - visible_message("A frayed tome materializes on the surface of [src], which dissolves into nothing.") - new /obj/item/weapon/tome(get_turf(src)) - qdel(src) + fail_invoke() //Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. /obj/effect/rune/convert cultist_name = "Convert" - cultist_desc = "Converts a normal crewmember on top of it to the cult. Does not work on loyalty-implanted crew." + cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on loyalty-implanted crew." invocation = "Mah'weyh pleggh at e'ntrath!" icon_state = "3" - color = rgb(255, 0, 0) + color = rgb(200, 0, 0) req_cultists = 2 -/obj/effect/rune/convert/invoke(mob/living/user) +/obj/effect/rune/convert/invoke(var/list/invokers) var/list/convertees = list() var/turf/T = get_turf(src) for(var/mob/living/M in T.contents) @@ -299,17 +313,18 @@ var/list/teleport_other_runes = list() return var/mob/living/new_cultist = pick(convertees) if(!is_convertable_to_cult(new_cultist.mind) || new_cultist.null_rod_check()) - user << "Something is shielding [new_cultist]'s mind!" + for(var/M in invokers) + M << "Something is shielding [new_cultist]'s mind!" + if(is_sacrifice_target(new_cultist.mind)) + M << "\"I desire this one for myself. SACRIFICE THEM!\"" fail_invoke() log_game("Convert rune failed - convertee could not be converted") - if(is_sacrifice_target(new_cultist.mind)) - for(var/mob/living/M in orange(1,src)) - if(iscultist(M)) - M << "\"I desire this one for myself. SACRIFICE THEM!\"" return + ..() new_cultist.visible_message("[new_cultist] writhes in pain as the markings below them glow a bloody red!", \ "AAAAAAAAAAAAAA-") - ticker.mode.add_cultist(new_cultist.mind) + ticker.mode.add_cultist(new_cultist.mind, 1) + new /obj/item/weapon/tome(get_turf(src)) new_cultist.mind.special_role = "Cultist" new_cultist << "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root." @@ -319,8 +334,9 @@ var/list/teleport_other_runes = list() //Rite of Tribute: Sacrifices a crew member to Nar-Sie. Places them into a soul shard if they're in their body. /obj/effect/rune/sacrifice cultist_name = "Sacrifice" - cultist_desc = "Sacrifices a crew member to the Geometer. May place them into a soul shard if their spirit remains in their body." + cultist_desc = "sacrifices a crew member to the Geometer. May place them into a soul shard if their spirit remains in their body." icon_state = "3" + allow_excess_invokers = 1 invocation = "Barhah hra zar'garis!" color = rgb(255, 255, 255) rune_in_use = 0 @@ -329,13 +345,17 @@ var/list/teleport_other_runes = list() ..() icon_state = "[rand(1,6)]" -/obj/effect/rune/sacrifice/invoke(mob/living/user) +/obj/effect/rune/sacrifice/invoke(var/list/invokers) if(rune_in_use) return rune_in_use = 1 + var/mob/living/user = invokers[1] //the first invoker is always the user var/turf/T = get_turf(src) var/list/possible_targets = list() for(var/mob/living/M in T.contents) + if(M.mind) + if(M.mind in sacrificed) + continue if(!iscultist(M)) possible_targets.Add(M) var/mob/offering @@ -356,46 +376,41 @@ var/list/teleport_other_runes = list() rune_in_use = 0 return*/ if(((ishuman(offering) || isrobot(offering)) && offering.stat != DEAD) || is_sacrifice_target(offering.mind)) //Requires three people to sacrifice living targets - var/cultists_nearby = 1 - for(var/mob/living/M in range(1,src)) - if(iscultist(M) && M != user) - cultists_nearby++ - M.say(invocation) - if(cultists_nearby < 3) - user << "[offering] is too greatly linked to the world! You need three acolytes!" + if(invokers.len < 3) + for(var/M in invokers) + M << "[offering] is too greatly linked to the world! You need three acolytes!" fail_invoke() log_game("Sacrifice rune failed - not enough acolytes and target is living") rune_in_use = 0 return visible_message("[src] pulses blood red!") color = rgb(126, 23, 23) - spawn(5) - color = initial(color) - sac(offering) + ..() + sac(invokers, offering) + color = initial(color) -/obj/effect/rune/sacrifice/proc/sac(mob/living/T) +/obj/effect/rune/sacrifice/proc/sac(var/list/invokers, mob/living/T) var/sacrifice_fulfilled if(T) if(istype(T, /mob/living/simple_animal/pet/dog)) - for(var/mob/living/carbon/C in range(3,src)) - if(iscultist(C)) - C << "\"Even I have standards, such as they are!\"" - if(C.reagents) - C.reagents.add_reagent("hell_water", 2) + for(var/M in invokers) + var/mob/living/L = M + L << "\"Even I have standards, such as they are!\"" + if(L.reagents) + L.reagents.add_reagent("hell_water", 2) if(T.mind) sacrificed.Add(T.mind) if(is_sacrifice_target(T.mind)) sacrifice_fulfilled = 1 PoolOrNew(/obj/effect/overlay/temp/cult/sac, src.loc) - for(var/mob/living/M in range(3,src)) - if(iscultist(M)) - if(sacrifice_fulfilled) - M << "\"Yes! This is the one I desire! You have done well.\"" + for(var/M in invokers) + if(sacrifice_fulfilled) + M << "\"Yes! This is the one I desire! You have done well.\"" + else + if(ishuman(T) || isrobot(T)) + M << "\"I accept this sacrifice.\"" else - if(ishuman(T) || isrobot(T)) - M << "\"I accept this sacrifice.\"" - else - M << "\"I accept this meager sacrifice.\"" + M << "\"I accept this meager sacrifice.\"" if(T.mind) var/obj/item/device/soulstone/stone = new /obj/item/device/soulstone(get_turf(src)) stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul() @@ -416,60 +431,68 @@ var/list/teleport_other_runes = list() //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station. /obj/effect/rune/narsie - cultist_name = "Call Forth The Geometer" - cultist_desc = "Tears apart dimensional barriers, calling forth the avatar of the Geometer." - invocation = null + cultist_name = "Summon Nar-Sie" + cultist_desc = "tears apart dimensional barriers, calling forth the Geometer. Requires 9 invokers." + invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" req_cultists = 9 icon = 'icons/effects/96x96.dmi' + color = rgb(125,23,23) icon_state = "rune_large" pixel_x = -32 //So the big ol' 96x96 sprite shows up right pixel_y = -32 + mouse_opacity = 1 //we're huge and easy to click + scribe_delay = 450 //how long the rune takes to create + scribe_damage = 40.1 //how much damage you take doing it var/used -/obj/effect/rune/narsie/invoke(mob/living/user) +/obj/effect/rune/narsie/talismanhide() //can't hide this, and you wouldn't want to + return + +/obj/effect/rune/narsie/invoke(var/list/invokers) if(used) return + var/mob/living/user = invokers[1] if(ticker.mode.name == "cult") var/datum/game_mode/cult/cult_mode = ticker.mode if(!("eldergod" in cult_mode.cult_objectives)) - message_admins("[usr.real_name]([user.ckey]) tried to summon Nar-Sie when the objective was wrong") - for(var/mob/living/M in range(1,src)) - if(iscultist(M)) - M << "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"" - if(M.reagents) - M.reagents.add_reagent("hell_water", 10) - M.Weaken(5) + message_admins("[user.real_name]([user.ckey]) tried to summon Nar-Sie when the objective was wrong") + for(var/M in invokers) + var/mob/living/L = M + L << "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"" + if(L.reagents) + L.reagents.add_reagent("hell_water", 10) + L.Weaken(7) + L.Stun(7) fail_invoke() log_game("Summon Nar-Sie rune failed - improper objective") return else if(cult_mode.sacrifice_target && !(cult_mode.sacrifice_target in sacrificed)) - for(var/mob/living/M in orange(1,src)) - if(iscultist(M)) - M << "The sacrifice is not complete. The portal lacks the power to open!" + for(var/M in invokers) + M << "The sacrifice is not complete. The portal lacks the power to open!" fail_invoke() log_game("Summon Nar-Sie rune failed - sacrifice not complete") return if(!cult_mode.eldergod) - for(var/mob/living/M in orange(1,src)) - if(iscultist(M)) - M << "The avatar of Nar-Sie is already on this plane!" - log_game("Summon Nar-Sie rune failed - already summoned") - return + for(var/M in invokers) + M << "Nar-Sie is already on this plane!" + log_game("Summon Nar-Sie rune failed - already summoned") + return //BEGIN THE SUMMONING used = 1 - for(var/mob/living/M in range(1,src)) - if(iscultist(M)) - M.say("TOK-LYR RQA-NAP G'OLT-ULOFT!!") + color = rgb(255, 0, 0) + ..() world << 'sound/effects/dimensional_rend.ogg' world << "The veil... is... TORN!!!--" + var/turf/T = get_turf(src) sleep(40) - new /obj/singularity/narsie/large(get_turf(user)) //Causes Nar-Sie to spawn even if the rune has been removed + new /obj/singularity/narsie/large(T) //Causes Nar-Sie to spawn even if the rune has been removed cult_mode.eldergod = 0 else + for(var/M in invokers) + M << "Nar-Sie does not respond!" fail_invoke() log_game("Summon Nar-Sie rune failed - gametype is not cult") - return /obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. if((istype(I, /obj/item/weapon/tome) && iscultist(user))) @@ -489,46 +512,39 @@ var/list/teleport_other_runes = list() //Rite of Resurrection: Requires two corpses. Revives one and gibs the other. /obj/effect/rune/raise_dead cultist_name = "Raise Dead" - cultist_desc = "Requires two corpses. The one placed upon the rune is brought to life, the other is turned to ash." + cultist_desc = "requires two corpses, one on the rune and one adjacent to the rune. The one on the rune is brought to life, the other is turned to ash." invocation = null //Depends on the name of the user - see below icon_state = "1" - color = rgb(255, 0, 0) + color = rgb(200, 0, 0) -/obj/effect/rune/raise_dead/invoke(mob/living/user) +/obj/effect/rune/raise_dead/invoke(var/list/invokers) var/turf/T = get_turf(src) var/mob/living/mob_to_sacrifice var/mob/living/mob_to_revive var/list/potential_sacrifice_mobs = list() var/list/potential_revive_mobs = list() + var/mob/living/user = invokers[1] if(rune_in_use) return for(var/mob/living/M in orange(1,src)) - if(!(M in T.contents) && M.stat == DEAD) + if(M.stat == DEAD) potential_sacrifice_mobs.Add(M) if(!potential_sacrifice_mobs.len) user << "There are no eligible sacrifices nearby!" log_game("Raise Dead rune failed - no catalyst corpse") return mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !mob_to_revive || !mob_to_sacrifice || rune_in_use) return for(var/mob/living/M in T.contents) if(M.stat == DEAD) potential_revive_mobs.Add(M) - if(rune_in_use) - return if(!potential_revive_mobs.len) user << "There is no eligible revival target on the rune!" log_game("Raise Dead rune failed - no corpse to revived") return mob_to_revive = input(user, "Choose a corpse to revive.", "Corpse to Revive") as null|anything in potential_revive_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) - return - revive(mob_to_revive, mob_to_sacrifice, user, T) - - //Begin revival -/obj/effect/rune/raise_dead/proc/revive(mob/living/mob_to_revive, mob/living/mob_to_sacrifice, mob/living/user, turf/T) - if(rune_in_use) + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || rune_in_use) return if(!in_range(mob_to_sacrifice,src)) user << "The sacrificial target has been moved!" @@ -550,6 +566,7 @@ var/list/teleport_other_runes = list() user.say("To life, to life, I bring them!") else user.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!") + ..() mob_to_sacrifice.visible_message("[mob_to_sacrifice]'s body rises into the air, connected to [mob_to_revive] by a glowing tendril!") mob_to_revive.Beam(mob_to_sacrifice,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=20) sleep(20) @@ -569,83 +586,47 @@ var/list/teleport_other_runes = list() /obj/effect/rune/raise_dead/fail_invoke() - for(var/mob/living/M in orange(1,src)) + ..() + for(var/mob/living/M in range(1,src)) if(M.stat == DEAD) M.visible_message("[M] twitches.") -//Rite of Obscurity: Turns all runes within a 3-tile radius invisible or reveals them again. -/obj/effect/rune/hide_runes - cultist_name = "Veil Runes" - cultist_desc = "Turns nearby runes invisible. They can be revealed by using the Reveal Rune." - invocation = "Kla'atu barada nikt'o!" - icon_state = "1" - color = rgb(0,0,255) - -/obj/effect/rune/hide_runes/invoke(mob/living/user) - visible_message("[src] darkens to black and vanishes.") - for(var/obj/effect/rune/R in orange(3,src)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - R.alpha = 100 //To help ghosts distinguish hidden runes - for(var/mob/dead/observer/O in orange(3,src)) - if(!O.invisibility) - O << "You suddenly feel as if you've vanished..." - O.invisibility = INVISIBILITY_OBSERVER - qdel(src) - -//Rite of True Sight: Turns ghosts and obscured runes visible -/obj/effect/rune/true_sight - cultist_name = "Reveal Runes" - cultist_desc = "Reveals all invisible objects nearby, from spirits to runes." - invocation = "Nikt'o barada kla'atu!" - icon_state = "4" - color = rgb(255, 255, 255) - -/obj/effect/rune/true_sight/invoke() - visible_message("[src] explodes in a flash of blinding light!") - for(var/mob/dead/observer/O in orange(3,src)) - O << "You suddenly feel very obvious..." - O.invisibility = 0 - for(var/obj/effect/rune/R in orange(3,src)) - R.invisibility = 0 - R.alpha = initial(R.alpha) - qdel(src) - - //Rite of False Truths: Makes runes appear like crayon ones -/obj/effect/rune/make_runes_fake - cultist_name = "Disguise Runes" - cultist_desc = "Causes all nearby runes (including itself) to resemble those drawn in crayon." - invocation = "By'o isit!" - icon_state = "4" - color = rgb(0, 150, 0) - -/obj/effect/rune/make_runes_fake/invoke(mob/living/user) - visible_message("[src] flares brightly, then slowly dulls and appears mundane.") - for(var/obj/effect/rune/R in range(3,src)) - R.desc = "A rune drawn in crayon." - //Rite of Disruption: Emits an EMP blast. /obj/effect/rune/emp cultist_name = "Electromagnetic Disruption" - cultist_desc = "Emits a large electromagnetic pulse, hindering electronics and disabling silicons." + cultist_desc = "emits a large electromagnetic pulse, increasing in size for each cultist invoking it, hindering electronics and disabling silicons." invocation = "Ta'gh fara'qha fel d'amar det!" icon_state = "5" - color = rgb(255, 0, 0) + allow_excess_invokers = 1 + color = rgb(77, 148, 255) -/obj/effect/rune/emp/invoke(mob/living/user) +/obj/effect/rune/emp/invoke(var/list/invokers) + var/turf/E = get_turf(src) + ..() visible_message("[src] glows blue for a moment before vanishing.") - for(var/mob/living/carbon/C in orange(1,src)) - C << "You feel a minute vibration pass through you!" - playsound(get_turf(src), 'sound/items/Welder2.ogg', 25, 1) - empulse(src, 4, 8) //A bit less than an EMP grenade - qdel(src) - + switch(invokers.len) + if(1 to 2) + playsound(E, 'sound/items/Welder2.ogg', 25, 1) + for(var/M in invokers) + M << "You feel a minute vibration pass through you..." + if(3 to 6) + playsound(E, 'sound/magic/Disable_Tech.ogg', 50, 1) + for(var/M in invokers) + M << "Your hair stands on end as a shockwave eminates from the rune!" + if(7 to INFINITY) + playsound(E, 'sound/magic/Disable_Tech.ogg', 100, 1) + for(var/M in invokers) + var/mob/living/L = M + L << "You chant in unison and a colossal burst of energy knocks you backward!" + L.Weaken(2) + qdel(src) //delete before pulsing because it's a delay reee + empulse(E, 9*invokers.len, 12*invokers.len) // Scales now, from a single room to most of the station depending on # of chanters //Rite of Astral Communion: Separates one's spirit from their body. They will take damage while it is active. /obj/effect/rune/astral cultist_name = "Astral Communion" - cultist_desc = "Severs the link between one's spirit and body. This effect is taxing and one's physical body will take damage while this is active." + cultist_desc = "severs the link between one's spirit and body. This effect is taxing and one's physical body will take damage while this is active." invocation = "Fwe'sh mah erl nyag r'ya!" icon_state = "6" color = rgb(126, 23, 23) @@ -657,18 +638,22 @@ var/list/teleport_other_runes = list() if(affecting) user << "A translucent field encases [user] above the rune!" -/obj/effect/rune/astral/invoke(mob/living/user) +/obj/effect/rune/astral/can_invoke(mob/living/user) if(rune_in_use) user << "[src] cannot support more than one body!" - fail_invoke() log_game("Astral Communion rune failed - more than one user") - return + return list() var/turf/T = get_turf(src) if(!user in T.contents) user << "You must be standing on top of [src]!" - fail_invoke() log_game("Astral Communion rune failed - user not standing on rune") - return + return list() + return ..() + +/obj/effect/rune/astral/invoke(var/list/invokers) + var/mob/living/user = invokers[1] + ..() + var/turf/T = get_turf(src) rune_in_use = 1 affecting = user user.color = "#7e1717" @@ -713,8 +698,8 @@ var/list/teleport_other_runes = list() //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall - cultist_name = "Form Shield" - cultist_desc = "When invoked, makes the rune block passage. Can be invoked again to reverse this." + cultist_name = "Form Barrier" + cultist_desc = "when invoked, makes an invisible wall to block passage. Can be invoked again to reverse this." invocation = "Khari'd! Eske'te tannin!" icon_state = "1" color = rgb(255, 0, 0) @@ -724,7 +709,9 @@ var/list/teleport_other_runes = list() if(density) user << "There is a barely perceptible shimmering of the air above [src]." -/obj/effect/rune/wall/invoke(mob/living/user) +/obj/effect/rune/wall/invoke(var/list/invokers) + var/mob/living/user = invokers[1] + ..() density = !density user.visible_message("[user] places their hands on [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ "You channel your life energy into [src], [density ? "preventing" : "allowing"] passage above it.") @@ -733,57 +720,23 @@ var/list/teleport_other_runes = list() C.apply_damage(2, BRUTE, pick("l_arm", "r_arm")) -//Rite of the Shadowed Mind: Deafens, blinds and mutes all non-cultists nearby. -/obj/effect/rune/deafen - cultist_name = "Debilitate" - cultist_desc = "Causes all non-followers nearby to lose their hearing, sight and voice." - invocation = "Sti kaliedir!" - color = rgb(0, 255, 0) - icon_state = "4" - -/obj/effect/rune/deafen/invoke(mob/living/user) - visible_message("[src] emits a blinding red flash!") - for(var/mob/living/carbon/C in viewers(src)) - if(!iscultist(C) && !C.null_rod_check()) - C << "A dark fog blankets your senses!" - C.adjustEarDamage(0,50) - C.flash_eyes(1, 1) - C.adjust_blurriness(50) - C.adjust_blindness(20) - C.silent += 10 - qdel(src) - -//Rite of Disorientation: Stuns and mutes all non-cultists nearby for a brief time -/obj/effect/rune/stun - cultist_name = "Stun" - cultist_desc = "Stuns all nearby non-followers for a brief time." - invocation = "Fuu ma'jin!" - icon_state = "2" - color = rgb(100, 0, 100) - -/obj/effect/rune/stun/invoke(mob/living/user) - visible_message("[src] explodes in a bright flash!") - for(var/mob/living/M in viewers(src)) - if(!iscultist(M) && !M.null_rod_check()) - M << "You are disoriented by [src]!" - M.Weaken(3) - M.Stun(3) - M.flash_eyes(1,1) - qdel(src) //Rite of Joined Souls: Summons a single cultist. /obj/effect/rune/summon cultist_name = "Summon Cultist" - cultist_desc = "Summons a single cultist to the rune." + cultist_desc = "summons a single cultist to the rune. Requires 2 invokers." invocation = "N'ath reth sh'yro eth d'rekkathnor!" req_cultists = 2 + allow_excess_invokers = 1 icon_state = "5" color = rgb(0, 255, 0) -/obj/effect/rune/summon/invoke(mob/living/user) +/obj/effect/rune/summon/invoke(var/list/invokers) + var/mob/living/user = invokers[1] var/list/cultists = list() for(var/datum/mind/M in ticker.mode.cult) - cultists.Add(M.current) - var/mob/living/cultist_to_summon = input("Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user) + if(!(M.current in invokers)) + cultists |= M.current + var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) return if(!cultist_to_summon) @@ -801,151 +754,25 @@ var/list/teleport_other_runes = list() fail_invoke() log_game("Summon Cultist rune failed - target in away mission") return - if(cultist_to_summon.buckled) - cultist_to_summon.buckled.unbuckle_mob(cultist_to_summon,force=1) cultist_to_summon.visible_message("[cultist_to_summon] suddenly disappears in a flash of red light!", \ "Overwhelming vertigo consumes you as you are hurled through the air!") + ..() visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") user.apply_damage(10, BRUTE, "head") - cultist_to_summon.loc = get_turf(src) + cultist_to_summon.forceMove(get_turf(src)) qdel(src) - -//Rite of Binding: Turns a nearby rune and a paper on top of the rune to a talisman, if both are valid. -/obj/effect/rune/imbue - cultist_name = "Bind Talisman" - cultist_desc = "Transforms papers and valid runes into talismans." - invocation = null //no talisman made, no invocation. - icon_state = "3" - color = rgb(0, 0, 255) - -/obj/effect/rune/imbue/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/papers_on_rune = list() - for(var/obj/item/weapon/paper/P in T) - if(!P.info) - papers_on_rune.Add(P) - if(!papers_on_rune.len) - user << "There must be a blank paper on top of [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no blank papers on rune") - return - var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - var/list/nearby_runes = list() - for(var/obj/effect/rune/R in orange(1,src)) - nearby_runes.Add(R) - if(!nearby_runes.len) - user << "There are no runes near [src]!" - fail_invoke() - log_game("Talisman Imbue rune failed - no nearby runes") - return - var/obj/effect/rune/picked_rune = pick(nearby_runes) - var/list/split_rune_type = splittext("[picked_rune.type]", "/") - var/imbue_type = split_rune_type[split_rune_type.len] - var/talisman_type = text2path("/obj/item/weapon/paper/talisman/[imbue_type]") - if(ispath(talisman_type)) - user.say("H'drak v'loso, mir'kanas verbot!") - var/obj/item/weapon/paper/talisman/TA = new talisman_type(get_turf(src)) - if(istype(picked_rune, /obj/effect/rune/teleport)) - var/obj/effect/rune/teleport/TR = picked_rune - var/obj/item/weapon/paper/talisman/teleport/TT = TA - TT.keyword = TR.keyword - else - user << "The chosen rune was not a valid target!" - fail_invoke() - log_game("Talisman Imbue rune failed - chosen rune invalid") - return - visible_message("[picked_rune] crumbles to dust, and bloody images form themselves on [paper_to_imbue].") - qdel(paper_to_imbue) - qdel(picked_rune) - qdel(src) -//Rite of Fabrication: Creates a construct shell out of 5 metal sheets. -/obj/effect/rune/construct_shell - cultist_name = "Fabricate Shell" - cultist_desc = "Turns five plasteel sheets into an empty construct shell, suitable for containing a soul shard." - invocation = null //see below; doesn't say the invocation unless there's enough sheets. - icon_state = "5" - color = rgb(150, 150, 150) - -/obj/effect/rune/construct_shell/invoke(mob/living/user) - var/turf/T = get_turf(src) - for(var/obj/item/stack/sheet/S in T) - if(istype(S, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/M = S - if(M.amount >= 5) - user.say("Ethra p'ni dedol!") - new /obj/structure/constructshell(T) - M.visible_message("[M] bends and twists into a humanoid shell!") - M.amount -= 5 - if(M.amount <= 0) - qdel(M) - qdel(src) - return - else - user << "There must be at least five sheets of plasteel on [src]!" - fail_invoke() - log_game("Construct Shell rune failed - not enough plasteel sheets") - return - - -//Rite of Arming: Creates cult robes, a trophy rack, and a cult sword on the rune. -/obj/effect/rune/armor - cultist_name = "Summon Armaments" - cultist_desc = "Equips the user with robes, shoes, a backpack, and a longsword. Items that cannot be equipped will not be summoned." - invocation = "N'ath reth sh'yro eth draggathnor!" - icon_state = "4" - color = rgb(255, 0, 0) - -/obj/effect/rune/armor/invoke(mob/living/user) - visible_message("With the sound of clanging metal, [src] crumbles to dust!") - user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) - user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) - user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) - user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) - user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) - qdel(src) - - -//Rite of Leeching: Deals brute damage to the target and heals the same amount to the invoker. -/obj/effect/rune/leeching - cultist_name = "Drain Life" - cultist_desc = "Drains the life of the target on the rune, restoring it to the user." - invocation = null //see below; doesn't say the invocation if it has no targets. - icon_state = "2" - color = rgb(255, 0, 0) - -/obj/effect/rune/leeching/invoke(mob/living/user) - var/turf/T = get_turf(src) - var/list/potential_targets = list() - for(var/mob/living/carbon/M in T) - if(M.stat != DEAD && M != user) - potential_targets.Add(M) - if(!potential_targets.len) - user << "There must be a valid target on the rune!" - fail_invoke() - log_game("Leeching rune failed - no valid targets") - return - var/mob/living/carbon/target = pick(potential_targets) - var/drained_amount = rand(5,25) - user.say("Yu'gular faras desdae. Umathar uf'kal thenar!") - target.apply_damage(drained_amount, BRUTE, "chest") - user.adjustBruteLoss(-drained_amount) - user.Beam(target,icon_state="drainbeam",icon='icons/effects/effects.dmi',time=3) - target << "You feel extremely weak." - user.visible_message("Blood flows from the rune into [user]!", \ - "[target]'s blood flows into you, healing your wounds and revitalizing your spirit.") - - //Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby /obj/effect/rune/blood_boil cultist_name = "Boil Blood" - cultist_desc = "Boils the blood of non-believers who can see the rune, dealing extreme amounts of damage. Requires 3 chanters." + cultist_desc = "boils the blood of non-believers who can see the rune, dealing extreme amounts of damage. Requires 3 invokers." invocation = "Dedo ol'btoh!" icon_state = "4" - color = rgb(255, 0, 0) + color = rgb(200, 0, 0) req_cultists = 3 -/obj/effect/rune/blood_boil/invoke(mob/living/user) +/obj/effect/rune/blood_boil/invoke(var/list/invokers) + ..() visible_message("[src] briefly bubbles before exploding!") for(var/mob/living/carbon/C in viewers(src)) if(!iscultist(C)) @@ -954,11 +781,12 @@ var/list/teleport_other_runes = list() C << "\The [N] suddenly burns hotly before returning to normal!" continue C << "Your blood boils in your veins!" - C.take_overall_damage(51,51) - for(var/mob/living/carbon/M in range(1,src)) - if(iscultist(M)) - M.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) - M << "[src] saps your strength!" + C.take_overall_damage(45,45) + C.Stun(7) + for(var/M in invokers) + var/mob/living/L = M + L.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) + L << "[src] saps your strength!" explosion(get_turf(src), -1, 0, 1, 5) qdel(src) @@ -966,82 +794,65 @@ var/list/teleport_other_runes = list() //Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. /obj/effect/rune/manifest cultist_name = "Manifest Spirit" - cultist_desc = "Manifests a spirit as a servant of the Geometer. The invoker must not move from atop the rune, and will take damage for each summoned spirit." + cultist_desc = "manifests a spirit as a servant of the Geometer. The invoker must not move from atop the rune, and will take damage for each summoned spirit." invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this icon_state = "6" - color = rgb(255, 0, 0) + color = rgb(200, 0, 0) -/obj/effect/rune/manifest/invoke(mob/living/user) +/obj/effect/rune/manifest/New(loc) + ..() + notify_ghosts("Manifest rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) + +/obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) user << "You must be standing on [src]!" fail_invoke() log_game("Manifest rune failed - user not standing on rune") - return + return list() var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in get_turf(src)) if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) - ghosts_on_rune.Add(O) + ghosts_on_rune |= O if(!ghosts_on_rune.len) user << "There are no spirits near [src]!" fail_invoke() log_game("Manifest rune failed - no nearby ghosts") - return + return list() + return ..() + +/obj/effect/rune/manifest/invoke(var/list/invokers) + var/mob/living/user = invokers[1] + var/list/ghosts_on_rune = list() + for(var/mob/dead/observer/O in get_turf(src)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + ghosts_on_rune |= O var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) var/mob/living/carbon/human/new_human = new(get_turf(src)) new_human.real_name = ghost_to_spawn.real_name new_human.alpha = 150 //Makes them translucent + ..() visible_message("A cloud of red mist forms above [src], and from within steps... a man.") user << "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely..." + var/obj/machinery/shield/N = new(get_turf(src)) + N.name = "Invoker's Shield" + N.desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals" + N.color = "red" + N.health = 20 + N.mouse_opacity = 0 new_human.key = ghost_to_spawn.key - ticker.mode.add_cultist(new_human.mind) + ticker.mode.add_cultist(new_human.mind, 0) new_human << "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs." while(user in get_turf(src)) if(user.stat) break - user.apply_damage(1, BRUTE) - sleep(30) + user.apply_damage(0.1, BRUTE) + sleep(3) + qdel(N) if(new_human) new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ "Your link to the world fades. Your form breaks apart.") for(var/obj/I in new_human) new_human.unEquip(I) new_human.dust() - -//Rite of Dimensional Corruption: Stops time around the rune for all non-cultists. -/obj/effect/rune/timestop - cultist_name = "Time Stop" - cultist_desc = "Stops time around the rune for all non-cultists. Requires 3 chanters." - invocation = "T'ak ot'marzah oahr'du!" - icon_state = "2" - color = rgb(0, 0, 255) - req_cultists = 3 - -/obj/effect/rune/timestop/invoke(mob/living/user) - visible_message("[src] flares up for a moment, and then disappears into itself!") - new /obj/effect/timestop/cult(get_turf(src)) - for(var/mob/living/carbon/M in range(1,src)) - if(iscultist(M)) - M.apply_damage(20, BRUTE, "chest") - M << "[src] temporarily stops your heart from beating!" - qdel(src) - -/obj/effect/timestop/cult - name = "Dimensional Corruption" - desc = "Something not from this world has corrupted the spacetime continuum in this exact spot." - icon = 'icons/effects/96x96.dmi' - icon_state = "rune_large" - pixel_x = -32 - pixel_y = -32 - duration = 50 - alpha = 0 - color = rgb(255, 0, 0) - -/obj/effect/timestop/cult/timestop() - animate(src, alpha = 255, time = 5, loop = -1) - SpinAnimation(speed = 5) - for(var/mob/living/M in player_list) - if(iscultist(M) || M.null_rod_check()) - immune |= M - ..() diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 022a4869d40..0125bec86da 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -1,19 +1,3 @@ -/* - -Talismans are portable versions of runes that resemble blank sheets of paper. They may have different effects than their parent runes and are created by using a Rite of Binding with a paper on top and -a compatible rune somewhere nearby. A list of compatible runes can found below. - -Basic Runes: -Rite of Translocation -Rite of Knowledge -Rite of Obscurity -Rite of True Sight -Rite of False Truths -Rite of Disruption -Rite of Disorientation - -*/ - /obj/item/weapon/paper/talisman var/cultist_name = "talisman" var/cultist_desc = "A basic talisman. It serves no purpose." @@ -33,18 +17,20 @@ Rite of Disorientation if(!iscultist(user)) user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return - if(invocation) - user.whisper(invocation) - src.invoke(user) - uses-- + if(invoke(user)) + uses-- if(uses <= 0) user.drop_item() qdel(src) -/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user) - if(health_cost && iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) +/obj/item/weapon/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) + . = successfuluse + if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff + if(invocation) + user.whisper(invocation) + if(health_cost && iscarbon(user)) + var/mob/living/carbon/C = user + C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) //Malformed Talisman: If something goes wrong. /obj/item/weapon/paper/talisman/malformed @@ -52,13 +38,12 @@ Rite of Disorientation cultist_desc = "A talisman with gibberish scrawlings. No good can come from invoking this." invocation = "Ra'sha yoka!" -/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1) user << "You feel a pain in your head. The Geometer is displeased." if(iscarbon(user)) var/mob/living/carbon/C = user C.apply_damage(10, BRUTE, "head") - //Supply Talisman: Has a few unique effects. Granted only to starter cultists. /obj/item/weapon/paper/talisman/supply cultist_name = "Supply Talisman" @@ -66,23 +51,21 @@ Rite of Disorientation invocation = null uses = 3 -/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/supply/invoke(mob/living/user, successfuluse = 1) var/dat = "There are [uses] bloody runes on the parchment.
" dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" - dat += "N'ath reth sh'yro eth d'raggathnor! - Allows you to summon an arcane tome.
" - dat += "Sas'so c'arta forbici! - Allows you to move to a Rite of Dislocation with the keyword of \"veri\".
" + dat += "N'ath reth sh'yro eth d'raggathnor! - Summons an arcane tome, used to scribe runes and communicate with other cultists.
" + dat += "Sas'so c'arta forbici! - Allows you to move to a selected teleportation rune.
" dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" - dat += "Kla'atu barada nikt'o! - Allows you to conceal nearby runes.
" - dat += "Nikt'o barada kla'atu! - Allows you to reveal nearby runes.
" dat += "Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
" + dat += "Kla'atu barada nikt'o! - Two use talisman, first use makes all nearby runes invisible, second use reveals nearby hidden runes.
" dat += "Kal'om neth! - Summons a soul stone, used to capure the spirits of dead or dying humans.
" - dat += "Daa'ig osk! - Summons a construct shell for use with captured souls. It is too large to carry on your person.
" + dat += "Daa'ig osk! - Summons a construct shell for use with soulstone-captured souls. It is too large to carry on your person.
" var/datum/browser/popup = new(user, "talisman", "", 400, 400) popup.set_content(dat) popup.open() - uses++ //To prevent uses being consumed just by opening it - return 1 + return 0 /obj/item/weapon/paper/talisman/supply/Topic(href, href_list) if(src) @@ -91,21 +74,14 @@ Rite of Disorientation if(href_list["rune"]) switch(href_list["rune"]) if("newtome") - var/obj/item/weapon/paper/talisman/summon_tome/T = new(usr) + var/obj/item/weapon/tome/T = new(usr) usr.put_in_hands(T) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) - T.keyword = "veri" usr.put_in_hands(T) if("emp") var/obj/item/weapon/paper/talisman/emp/T = new(usr) usr.put_in_hands(T) - if("conceal") - var/obj/item/weapon/paper/talisman/hide_runes/T = new(usr) - usr.put_in_hands(T) - if("reveal") - var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) - usr.put_in_hands(T) if("runestun") var/obj/item/weapon/paper/talisman/stun/T = new(usr) usr.put_in_hands(T) @@ -114,6 +90,9 @@ Rite of Disorientation usr.put_in_hands(T) if("construct") new /obj/structure/constructshell(get_turf(usr)) + if("veiling") + var/obj/item/weapon/paper/talisman/true_sight/T = new(usr) + usr.put_in_hands(T) src.uses-- if(src.uses <= 0) if(iscarbon(usr)) @@ -121,139 +100,139 @@ Rite of Disorientation C.drop_item() visible_message("[src] crumbles to dust.") qdel(src) - return - else - return //Rite of Translocation: Same as rune /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." + color = "#551A8B" // purple invocation = "Sas'so c'arta forbici!" health_cost = 5 - var/keyword = "ire" -/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user) - var/list/possible_runes = list() - for(var/obj/effect/rune/teleport/R in teleport_runes) - if(R.keyword == src.keyword) - possible_runes.Add(R) - if(!possible_runes.len) - user << "There are no Teleport runes with the same keyword!" - log_game("Teleportation talisman failed - no teleport runes of the same keyword") - uses++ //To prevent deletion - return - var/chosen_rune = pick(possible_runes) +/obj/item/weapon/paper/talisman/teleport/invoke(mob/living/user, successfuluse = 1) + var/list/potential_runes = list() + var/list/teleportnames = list() + var/list/duplicaterunecount = list() + for(var/R in teleport_runes) + var/obj/effect/rune/teleport/T = R + var/resultkey = T.listkey + if(resultkey in teleportnames) + duplicaterunecount[resultkey]++ + resultkey = "[resultkey] ([duplicaterunecount[resultkey]])" + else + teleportnames.Add(resultkey) + duplicaterunecount[resultkey] = 1 + potential_runes[resultkey] = T + + if(!potential_runes.len) + user << "There are no valid runes to teleport to!" + log_game("Teleport talisman failed - no other teleport runes") + return ..(user, 0) + + if(user.z > ZLEVEL_SPACEMAX) + user << "You are not in the right dimension!" + log_game("Teleport talisman failed - user in away mission") + return ..(user, 0) + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!actual_selected_rune) + return ..(user, 0) user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \ "You speak the words of the talisman and find yourself somewhere else!") - if(user.buckled) - user.buckled.unbuckle_mob(user,force=1) - user.loc = get_turf(chosen_rune) + user.forceMove(get_turf(actual_selected_rune)) + return ..() -/obj/item/weapon/paper/talisman/teleport/New() - ..() - spawn(1) //To give the keyword time to change from the imbue rune - info += keyword -/obj/item/weapon/paper/talisman/teleport/examine(mob/user) - ..() - if(iscultist(user) && keyword) - user << "Keyword: [keyword]" - -//Rite of Knowledge: Same as rune, but has two uses /obj/item/weapon/paper/talisman/summon_tome cultist_name = "Talisman of Tome Summoning" cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." + color = "#512727" // red-black invocation = "N'ath reth sh'yro eth d'raggathnor!" health_cost = 1 -/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand glows red for a moment.", \ "You speak the words of the talisman!") - var/obj/item/weapon/tome/T = new(get_turf(user)) - if(user.put_in_hands(T)) - user.visible_message("A tome appears in [user]'s hand!", \ - "An arcane tome materializes in your free hand.") - else - user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materialzies at your feet.") + new /obj/item/weapon/tome(get_turf(user)) + user.visible_message("A tome appears at [user]'s feet!", \ + "An arcane tome materializes at your feet.") -//Talisman of Obscurity: Same as rune -/obj/item/weapon/paper/talisman/hide_runes +/obj/item/weapon/paper/talisman/true_sight cultist_name = "Talisman of Veiling" - cultist_desc = "A talisman that will make all runes within a small radius invisible." + cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." + color = "#9c9c9c" // grey invocation = "Kla'atu barada nikt'o!" health_cost = 1 + uses = 2 + var/revealing = FALSE //if it reveals or not -/obj/item/weapon/paper/talisman/hide_runes/invoke(mob/living/user) - user.visible_message("Dust flows from [user]'s hand.", \ - "You speak the words of the talisman, veiling nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.visible_message("[R] fades away.") - R.invisibility = INVISIBILITY_OBSERVER - -//Rite of True Sight: Same as rune, but doesn't work on ghosts -/obj/item/weapon/paper/talisman/true_sight - cultist_name = "Talisman of Revealing" - cultist_desc = "A talisman that reveals nearby invisible runes." - invocation = "Nikt'o barada kla'atu!" - health_cost = 1 - -/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user) - user.visible_message("A flash of light shines from [user]'s hand!", \ - "You speak the words of the talisman, revealing nearby runes.") - for(var/obj/effect/rune/R in orange(3,user)) - R.invisibility = 0 - +/obj/item/weapon/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) + . = ..() + if(!revealing) + user.visible_message("Thin grey dust falls from [user]'s hand!", \ + "You speak the words of the talisman, hiding nearby runes.") + invocation = "Nikt'o barada kla'atu!" + revealing = TRUE + for(var/obj/effect/rune/R in range(3,user)) + R.talismanhide() + else + user.visible_message("A flash of light shines from [user]'s hand!", \ + "You speak the words of the talisman, revealing nearby runes.") + for(var/obj/effect/rune/R in range(3,user)) + R.talismanreveal() //Rite of False Truths: Same as rune /obj/item/weapon/paper/talisman/make_runes_fake cultist_name = "Talisman of Disguising" cultist_desc = "A talisman that will make nearby runes appear fake." + color = "#ff80d5" // honk invocation = "By'o nar'nar!" - health_cost = 3 -/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/make_runes_fake/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("Dust flows from [user]s hand.", \ "You speak the words of the talisman, making nearby runes appear fake.") - for(var/obj/effect/rune/R in orange(3,user)) + for(var/obj/effect/rune/R in orange(6,user)) R.desc = "A rune drawn in crayon." -//Rite of Disruption: Same as rune + +//Rite of Disruption: Weaker than rune /obj/item/weapon/paper/talisman/emp cultist_name = "Talisman of Electromagnetic Pulse" cultist_desc = "A talisman that will cause a moderately-sized electromagnetic pulse." + color = "#4d94ff" // light blue invocation = "Ta'gh fara'qha fel d'amar det!" health_cost = 5 -/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user) +/obj/item/weapon/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("[user]'s hand flashes a bright blue!", \ "You speak the words of the talisman, emitting an EMP blast.") empulse(src, 4, 8) + //Rite of Disorientation: Stuns and inhibit speech on a single target for quite some time /obj/item/weapon/paper/talisman/stun cultist_name = "Talisman of Stunning" cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." + color = "#ff0000" // red invocation = "Fuu ma'jin!" - health_cost = 15 + health_cost = 10 -//Rite of Arming: Equips cultist armor on the user, where available -/obj/item/weapon/paper/talisman/armor - cultist_name = "Talisman of Arming" - cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." - invocation = "N'ath reth sh'yro eth draggathnor!" - health_cost = 3 - -/obj/item/weapon/paper/talisman/stun/attack_self(mob/living/user) +/obj/item/weapon/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() if(iscultist(user)) user << "To use this talisman, attack the target directly." else user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + return 0 -/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user) +/obj/item/weapon/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) if(iscultist(user)) - user.whisper(invocation) + invoke(user, 1) user.visible_message("[user] holds up [src], which explodes in a flash of red light!", \ "You stun [target] with the talisman!") var/obj/item/weapon/nullrod/N = locate() in target @@ -261,15 +240,15 @@ Rite of Disorientation target.visible_message("[target]'s holy weapon absorbs the talisman's light!", \ "Your holy weapon absorbs the blinding light!") else - target.Weaken(9) - target.Stun(9) + target.Weaken(10) + target.Stun(10) target.flash_eyes(1,1) if(issilicon(target)) var/mob/living/silicon/S = target S.emp_act(1) if(iscarbon(target)) var/mob/living/carbon/C = target - C.silent += 4 + C.silent += 5 C.stuttering += 15 C.cultslurring += 15 C.Jitter(15) @@ -278,11 +257,139 @@ Rite of Disorientation return ..() -/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user) + +//Rite of Arming: Equips cultist armor on the user, where available +/obj/item/weapon/paper/talisman/armor + cultist_name = "Talisman of Arming" + cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green + invocation = "N'ath reth sh'yro eth draggathnor!" + +/obj/item/weapon/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) + . = ..() user.visible_message("Otherworldly armor suddenly appears on [user]!", \ "You speak the words of the talisman, arming yourself!") user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) user.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/cultpack(user), slot_back) + user.drop_item() user.put_in_hands(new /obj/item/weapon/melee/cultblade(user)) + user.put_in_hands(new /obj/item/weapon/restraints/legcuffs/bola/cult(user)) + +/obj/item/weapon/paper/talisman/armor/attack(mob/living/target, mob/living/user) + if(iscultist(user) && iscultist(target)) + user.drop_item() + invoke(target) + qdel(src) + return + ..() + + +//Talisman of Horrors: Breaks the mind of the victim with nightmarish hallucinations +/obj/item/weapon/paper/talisman/horror + cultist_name = "Talisman of Horrors" + cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." + color = "#ffb366" // light orange + invocation = "Lo'Nab Na'Dm!" + +/obj/item/weapon/paper/talisman/horror/attack(mob/living/target, mob/living/user) + if(iscultist(user)) + user << "You disturb [target] with visons of the end!" + if(iscarbon(target)) + var/mob/living/carbon/H = target + H.reagents.add_reagent("mindbreaker", 25) + qdel(src) + + +//Talisman of Fabrication: Creates a construct shell out of 25 metal sheets. +/obj/item/weapon/paper/talisman/construction + cultist_name = "Talisman of Construction" + cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell" + invocation = "Ethra p'ni dedol!" + color = "#000000" // black + +/obj/item/weapon/paper/talisman/construction/attack_self(mob/living/user) + if(iscultist(user)) + user << "To use this talisman, place it upon a stack of metal sheets." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + + +/obj/item/weapon/paper/talisman/construction/attack(obj/M,mob/living/user) + if(iscultist(user)) + user << "This talisman will only work on a stack of metal sheets!" + log_game("Construct talisman failed - not a valid target") + +/obj/item/weapon/paper/talisman/construction/afterattack(obj/item/stack/sheet/metal/target, mob/user, proximity_flag, click_parameters) + ..() + if(proximity_flag && istype(target) && iscultist(user)) + var/turf/T = get_turf(target) + if(target.use(25)) + new /obj/structure/constructshell(T) + user << "The talisman clings to the metal and twists it into a construct shell!" + qdel(src) + else + user << "The talisman requires at least 25 sheets of metal!" + + +//Talisman of Shackling: Applies special cuffs directly from the talisman +/obj/item/weapon/paper/talisman/shackle + cultist_name = "Talisman of Shackling" + cultist_desc = "Use this talisman on a victim to handcuff them with dark bindings." + invocation = "In'totum Lig'abis!" + color = "#B27300" // burnt-orange + uses = 4 + +/obj/item/weapon/paper/talisman/shackle/invoke(mob/living/user, successfuluse = 0) + if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff + return ..() + if(iscultist(user)) + user << "To use this talisman, attack the target directly." + else + user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" + return 0 + +/obj/item/weapon/paper/talisman/shackle/attack(mob/living/carbon/target, mob/living/user) + if(iscultist(user) && istype(target)) + if(target.stat == DEAD) + user.visible_message("This talisman's magic does not affect the dead!") + return + CuffAttack(target, user) + return + ..() + +/obj/item/weapon/paper/talisman/shackle/proc/CuffAttack(mob/living/carbon/C, mob/living/user) + if(!C.handcuffed) + invoke(user, 1) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + C.visible_message("[user] begins restraining [C] with dark magic!", \ + "[user] begins shaping a dark magic around your wrists!") + if(do_mob(user, C, 30)) + if(!C.handcuffed) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/cult/used(C) + C.update_handcuffed() + user << "You shackle [C]." + add_logs(user, C, "handcuffed") + uses-- + else + user << "[C] is already bound." + else + user << "You fail to shackle [C]." + else + user << "[C] is already bound." + if(uses <= 0) + user.drop_item() + qdel(src) + return + +/obj/item/weapon/restraints/handcuffs/energy/cult //For the talisman of shackling + name = "cult shackles" + desc = "Shackles that bind the wrists with sinister magic." + trashtype = /obj/item/weapon/restraints/handcuffs/energy/used + origin_tech = "materials=2;magnets=5" + +/obj/item/weapon/restraints/handcuffs/energy/cult/used/dropped(mob/user) + user.visible_message("[user]'s [src] shatter in a discharge of dark magic!", \ + "Your [src] shatters in a discharge of dark magic!") + qdel(src) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index d7c63098f28..b4cd86efb66 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -530,7 +530,7 @@ M.key = theghost.key /datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) - ticker.mode.remove_cultist(newborgie, 0) + ticker.mode.remove_cultist(newborgie, 0, 0) ticker.mode.remove_revolutionary(newborgie, 0) ticker.mode.remove_gangster(newborgie, 0, remove_bosses=1) ticker.mode.remove_hog_follower(newborgie, 0) diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 83f6da190fe..bc1236d7d0e 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -101,7 +101,7 @@ SSshuttle.emergency.timer = world.time priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority") else - priority_announce("All hostile activity within station systems have ceased.","Network Alert") + priority_announce("All hostile activity within station systems has ceased.","Network Alert") if(get_security_level() == "delta") set_security_level("red") @@ -119,6 +119,7 @@ if(!(stat & BROKEN)) set_broken() poi_list.Remove(src) + gang = null qdel(spark_system) return ..() @@ -149,7 +150,7 @@ take_damage(damage_amount, P.damage_type, 0) -/obj/machinery/dominator/blob_act() +/obj/machinery/dominator/blob_act(obj/effect/blob/B) take_damage(110, BRUTE, 0) /obj/machinery/dominator/attack_hand(mob/user) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 31c3205f476..b43ee71186c 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -183,6 +183,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" gangster_mind.current << "You can identify your bosses by their red \[G\] icon." gangster_mind.current.attack_log += "\[[time_stamp()]\] Has been converted to the [G.name] Gang!" gangster_mind.special_role = "[G.name] Gangster" + gangster_mind.store_memory("You are a member of the [G.name] Gang!") G.add_gang_hud(gangster_mind) if(jobban_isbanned(gangster_mind.current, ROLE_GANG)) replace_jobbaned_player(gangster_mind.current, ROLE_GANG, ROLE_GANG) @@ -224,6 +225,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" gangster_mind.current.Paralyse(5) gangster_mind.current.visible_message("[gangster_mind.current] looks like they've given up the life of crime!") gangster_mind.current << "You have been reformed! You are no longer a gangster!
You try as hard as you can, but you can't seem to recall any of the identities of your former gangsters...
" + gangster_mind.memory = "" gang.remove_gang_hud(gangster_mind) return 1 diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index d5d431073b9..df8d646f440 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -117,8 +117,7 @@ if(mob && mob.mind && mob.stat == CONSCIOUS) if(mob.mind.gang_datum == src) mob << "\icon[tool] [message]" - if(beep) - playsound(mob.loc, 'sound/machines/twobeep.ogg', 50, 1) + return //////////////////////////////////////////// INCOME diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index eec67985c08..de6176c3c7c 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -228,7 +228,7 @@ pointcost = 10 if("C4") if(gang.points >= 10) - item_type = /obj/item/weapon/c4 + item_type = /obj/item/weapon/grenade/plastic/c4 pointcost = 10 if("pen") if((gang.points >= 50) || free_pen) diff --git a/code/game/gamemodes/handofgod/_handofgod.dm b/code/game/gamemodes/handofgod/_handofgod.dm index d5375834943..afba1ce73cf 100644 --- a/code/game/gamemodes/handofgod/_handofgod.dm +++ b/code/game/gamemodes/handofgod/_handofgod.dm @@ -358,7 +358,7 @@ var/global/list/global_handofgod_structuretypes = list() text += "
Red follower count: [red_deity_followers.len]" text += "
Red followers: " for(var/datum/mind/player in red_deity_followers) - text += "[player.name] ([player.key])" + text += "[player.name] ([player.key]), " var/objectives = "" if(red_god.objectives.len) diff --git a/code/game/gamemodes/handofgod/actions.dm b/code/game/gamemodes/handofgod/actions.dm index 762a8b4d683..9f6b01f8dff 100644 --- a/code/game/gamemodes/handofgod/actions.dm +++ b/code/game/gamemodes/handofgod/actions.dm @@ -1,6 +1,4 @@ - - - +/* Prophet's innate godspeak */ /datum/action/innate/godspeak name = "Godspeak" button_icon_state = "godspeak" @@ -17,8 +15,12 @@ var/msg = input(owner,"Speak to your god","Godspeak","") as null|text if(!msg) return - god << "[owner]: [msg]" - owner << "You say: [msg]" + var/rendered = "Prophet [owner]: [msg]" + god << rendered + owner << rendered + for(var/mob/M in mob_list) + if(isobserver(M)) + M << "(F) [rendered]" /datum/action/innate/godspeak/Destroy() god = null diff --git a/code/game/gamemodes/handofgod/god.dm b/code/game/gamemodes/handofgod/god.dm index 7dcd5b5f933..39deb470840 100644 --- a/code/game/gamemodes/handofgod/god.dm +++ b/code/game/gamemodes/handofgod/god.dm @@ -31,9 +31,9 @@ update_icons() build_hog_construction_lists() - //Force nexuses after 2 minutes in hand of god mode + //Force nexuses after 15 minutes in hand of god mode if(ticker && ticker.mode && ticker.mode.name == "hand of god") - addtimer(src, "forceplacenexus", 1200, FALSE) + addtimer(src, "forceplacenexus", 9000, FALSE) //Rebuilds the list based on the gamemode's lists @@ -197,12 +197,13 @@ return msg = say_quote(msg, get_spans()) - var/rendered = "Divine Telepathy, [name] [msg]" + var/rendered = "Divine Telepathy, [name] [msg]" for(var/mob/M in mob_list) - if(is_handofgod_myfollowers(M) || isobserver(M)) - M.show_message(rendered, 2) - src << rendered + if(is_handofgod_god(M) || is_handofgod_myfollowers(M)) + M << rendered + if(isobserver(M)) + M << "(F) [rendered]" /mob/camera/god/emote(act,m_type = 1 ,msg = null) diff --git a/code/game/gamemodes/handofgod/items.dm b/code/game/gamemodes/handofgod/items.dm index 9d63f86c773..f512c5c11cb 100644 --- a/code/game/gamemodes/handofgod/items.dm +++ b/code/game/gamemodes/handofgod/items.dm @@ -1,5 +1,3 @@ - - /obj/item/weapon/banner name = "banner" icon = 'icons/obj/items.dmi' diff --git a/code/game/gamemodes/handofgod/powers.dm b/code/game/gamemodes/handofgod/powers.dm index a783595352d..30b3365cfcd 100644 --- a/code/game/gamemodes/handofgod/powers.dm +++ b/code/game/gamemodes/handofgod/powers.dm @@ -1,4 +1,3 @@ - /mob/camera/god/proc/ability_cost(cost = 0,structures = 0, requires_conduit = 0, can_place_near_enemy_nexus = 0) if(faith < cost) src << "You lack the faith!" @@ -127,7 +126,7 @@ var/mob/living/carbon/human/H = choice.current var/popehat = null var/popestick = null - + var/success = "" switch(side) if("red") popehat = /obj/item/clothing/head/helmet/plate/crusader/prophet/red @@ -139,22 +138,28 @@ if(popehat) var/obj/item/clothing/head/helmet/plate/crusader/prophet/P = new popehat() - H.unEquip(H.head) - H << "A powerful hat has been bestowed upon your head, you will need to wear this to utilize your staff fully.." - H.equip_to_slot_or_del(P,slot_head) + if(H.equip_to_slot_if_possible(P,slot_in_backpack,0,1,1)) + success = "It is in your backpack." + else + H.unEquip(H.head) + H.equip_to_slot_or_del(P,slot_head) + success = "It is on your head." + + if(success) + H << "A powerful hat has been bestowed upon you, you will need to wear it to utilize your staff fully." + H << "[success]" if(popestick) var/obj/item/weapon/godstaff/G = new popestick() G.god = src - var/success = "" - if(!H.put_in_hands(G)) - if(!H.equip_to_slot_if_possible(G,slot_in_backpack,0,1,1)) + if(!H.equip_to_slot_if_possible(G,slot_in_backpack,0,1,1)) + if(!H.put_in_hands(G)) G.loc = get_turf(H) success = "It is on the floor..." else - success = "It is in your backpack..." + success = "It is in your hands..." else - success = "It is in your hands..." + success = "It is in your backpack..." if(success) H << "A powerful staff has been bestowed upon you, you can use this to convert the false god's structures!" diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 8aeac6e880e..914dfa1c9d0 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -349,6 +349,9 @@ Congratulations! You are now trained for xenobiology research!"} /obj/item/weapon/paper/abductor/update_icon() return +/obj/item/weapon/paper/abductor/AltClick() + return + #define BATON_STUN 0 #define BATON_SLEEP 1 #define BATON_CUFF 2 @@ -479,18 +482,20 @@ Congratulations! You are now trained for xenobiology research!"} return var/mob/living/carbon/C = L if(!C.handcuffed) - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with [src]!", \ - "[user] begins shaping an energy field around your hands!") - if(do_mob(user, C, 30)) - if(!C.handcuffed) - C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) - C.update_handcuffed() - user << "You handcuff [C]." - add_logs(user, C, "handcuffed") + if(C.get_num_arms() >= 2) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + C.visible_message("[user] begins restraining [C] with [src]!", \ + "[user] begins shaping an energy field around your hands!") + if(do_mob(user, C, 30) && C.get_num_arms() >= 2) + if(!C.handcuffed) + C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) + C.update_handcuffed() + user << "You handcuff [C]." + add_logs(user, C, "handcuffed") + else + user << "You fail to handcuff [C]." else - user << "You fail to handcuff [C]." - return + user << "[C] doesn't have two hands..." /obj/item/weapon/abductor_baton/proc/ProbeAttack(mob/living/L,mob/living/user) L.visible_message("[user] probes [L] with [src]!", \ @@ -504,7 +509,7 @@ Congratulations! You are now trained for xenobiology research!"} species = "[H.dna.species.name]" if(L.mind && L.mind.changeling) species = "Changeling lifeform" - var/obj/item/organ/internal/gland/temp = locate() in H.internal_organs + var/obj/item/organ/gland/temp = locate() in H.internal_organs if(temp) helptext = "Experimental gland detected!" else diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index a97011d53db..30f7d7c10e7 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -19,8 +19,8 @@ name = "remove heart" accept_hand = 1 time = 32 - var/obj/item/organ/internal/IC = null - var/list/organ_types = list(/obj/item/organ/internal/heart) + var/obj/item/organ/IC = null + var/list/organ_types = list(/obj/item/organ/heart) /datum/surgery_step/extract_organ/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) for(var/obj/item/I in target.internal_organs) @@ -41,7 +41,7 @@ /datum/surgery_step/gland_insert name = "insert gland" - implements = list(/obj/item/organ/internal/gland = 100) + implements = list(/obj/item/organ/gland = 100) time = 32 /datum/surgery_step/gland_insert/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -50,6 +50,6 @@ /datum/surgery_step/gland_insert/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] inserts [tool] into [target].", "You insert [tool] into [target].") user.drop_item() - var/obj/item/organ/internal/gland/gland = tool + var/obj/item/organ/gland/gland = tool gland.Insert(target, 2) return 1 \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index eab9171f6b7..537f29f3551 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/gland +/obj/item/organ/gland name = "fleshy mass" desc = "A nausea-inducing hunk of twisting flesh and metal." icon = 'icons/obj/abductor.dmi' @@ -14,30 +14,30 @@ var/human_only = 0 var/active = 0 -/obj/item/organ/internal/gland/proc/ownerCheck() +/obj/item/organ/gland/proc/ownerCheck() if(ishuman(owner)) return 1 if(!human_only && iscarbon(owner)) return 1 return 0 -/obj/item/organ/internal/gland/proc/Start() +/obj/item/organ/gland/proc/Start() active = 1 next_activation = world.time + rand(cooldown_low,cooldown_high) -/obj/item/organ/internal/gland/Remove(var/mob/living/carbon/M, special = 0) +/obj/item/organ/gland/Remove(var/mob/living/carbon/M, special = 0) active = 0 if(initial(uses) == 1) uses = initial(uses) ..() -/obj/item/organ/internal/gland/Insert(var/mob/living/carbon/M, special = 0) +/obj/item/organ/gland/Insert(var/mob/living/carbon/M, special = 0) ..() if(special != 2 && uses) // Special 2 means abductor surgery Start() -/obj/item/organ/internal/gland/on_life() +/obj/item/organ/gland/on_life() if(!active) return if(!ownerCheck()) @@ -50,30 +50,30 @@ if(!uses) active = 0 -/obj/item/organ/internal/gland/proc/activate() +/obj/item/organ/gland/proc/activate() return -/obj/item/organ/internal/gland/heals +/obj/item/organ/gland/heals origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 200 cooldown_high = 400 uses = -1 icon_state = "health" -/obj/item/organ/internal/gland/heals/activate() +/obj/item/organ/gland/heals/activate() owner << "You feel curiously revitalized." owner.adjustBruteLoss(-20) owner.adjustOxyLoss(-20) owner.adjustFireLoss(-20) -/obj/item/organ/internal/gland/slime +/obj/item/organ/gland/slime origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 600 cooldown_high = 1200 uses = -1 icon_state = "slime" -/obj/item/organ/internal/gland/slime/activate() +/obj/item/organ/gland/slime/activate() owner << "You feel nauseous!" owner.vomit(20) @@ -81,14 +81,14 @@ Slime.Friends = list(owner) Slime.Leader = owner -/obj/item/organ/internal/gland/mindshock +/obj/item/organ/gland/mindshock origin_tech = "materials=4;biotech=5;magnets=3;abductor=3" cooldown_low = 300 cooldown_high = 300 uses = -1 icon_state = "mindshock" -/obj/item/organ/internal/gland/mindshock/activate() +/obj/item/organ/gland/mindshock/activate() owner << "You get a headache." var/turf/T = get_turf(owner) @@ -98,7 +98,7 @@ H << "You hear a buzz in your head." H.confused += 20 -/obj/item/organ/internal/gland/pop +/obj/item/organ/gland/pop origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 900 cooldown_high = 1800 @@ -106,32 +106,32 @@ human_only = 1 icon_state = "species" -/obj/item/organ/internal/gland/pop/activate() +/obj/item/organ/gland/pop/activate() owner << "You feel unlike yourself." var/species = pick(list(/datum/species/lizard,/datum/species/jelly/slime,/datum/species/pod,/datum/species/fly)) owner.set_species(species) -/obj/item/organ/internal/gland/ventcrawling +/obj/item/organ/gland/ventcrawling origin_tech = "materials=4;biotech=5;bluespace=3;abductor=3" cooldown_low = 1800 cooldown_high = 2400 uses = 1 icon_state = "vent" -/obj/item/organ/internal/gland/ventcrawling/activate() +/obj/item/organ/gland/ventcrawling/activate() owner << "You feel very stretchy." owner.ventcrawler = 2 return -/obj/item/organ/internal/gland/viral +/obj/item/organ/gland/viral origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 1800 cooldown_high = 2400 uses = 1 icon_state = "viral" -/obj/item/organ/internal/gland/viral/activate() +/obj/item/organ/gland/viral/activate() owner << "You feel sick." var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis) var/datum/disease/D = new virus_type() @@ -142,49 +142,49 @@ owner.med_hud_set_status() -/obj/item/organ/internal/gland/emp //TODO : Replace with something more interesting +/obj/item/organ/gland/emp //TODO : Replace with something more interesting origin_tech = "materials=4;biotech=5;magnets=3;abductor=3" cooldown_low = 900 cooldown_high = 1600 uses = 10 icon_state = "emp" -/obj/item/organ/internal/gland/emp/activate() +/obj/item/organ/gland/emp/activate() owner << "You feel a spike of pain in your head." empulse(get_turf(owner), 2, 5, 1) -/obj/item/organ/internal/gland/spiderman +/obj/item/organ/gland/spiderman origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 450 cooldown_high = 900 uses = 10 icon_state = "spider" -/obj/item/organ/internal/gland/spiderman/activate() +/obj/item/organ/gland/spiderman/activate() owner << "You feel something crawling in your skin." owner.faction |= "spiders" new /obj/effect/spider/spiderling(owner.loc) -/obj/item/organ/internal/gland/egg +/obj/item/organ/gland/egg origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 300 cooldown_high = 400 uses = -1 icon_state = "egg" -/obj/item/organ/internal/gland/egg/activate() +/obj/item/organ/gland/egg/activate() owner << "You lay an egg!" var/obj/item/weapon/reagent_containers/food/snacks/egg/egg = new(owner.loc) egg.reagents.add_reagent("sacid",20) egg.desc += " It smells bad." -/obj/item/organ/internal/gland/bloody +/obj/item/organ/gland/bloody origin_tech = "materials=4;biotech=6;abductor=3" cooldown_low = 200 cooldown_high = 400 uses = -1 -/obj/item/organ/internal/gland/bloody/activate() +/obj/item/organ/gland/bloody/activate() owner.adjustBruteLoss(15) owner.visible_message("[owner]'s skin erupts with blood!",\ @@ -200,14 +200,14 @@ H.w_uniform.add_blood(owner) H.update_inv_w_uniform(0) -/obj/item/organ/internal/gland/bodysnatch +/obj/item/organ/gland/bodysnatch origin_tech = "materials=4;biotech=7;abductor=3" cooldown_low = 600 cooldown_high = 600 human_only = 1 uses = 1 -/obj/item/organ/internal/gland/bodysnatch/activate() +/obj/item/organ/gland/bodysnatch/activate() owner << "You feel something moving around inside you..." //spawn cocoon with clone greytide snpc inside if(ishuman(owner)) @@ -252,13 +252,13 @@ M.loc = src.loc qdel(src) -/obj/item/organ/internal/gland/plasma +/obj/item/organ/gland/plasma cooldown_low = 2400 cooldown_high = 3000 origin_tech = "materials=4;biotech=5;plasmatech=3;abductor=3" uses = 1 -/obj/item/organ/internal/gland/plasma/activate() +/obj/item/organ/gland/plasma/activate() owner << "You feel bloated." sleep(150) if(!owner) return diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index 5a8eb481921..dc1a5ec85f7 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -14,7 +14,7 @@ return rgb(rand(0,255),rand(0,255),rand(0,255)) /obj/machinery/abductor/gland_dispenser/New() - gland_types = subtypesof(/obj/item/organ/internal/gland) + gland_types = subtypesof(/obj/item/organ/gland) gland_types = shuffle(gland_types) gland_colors = new/list(gland_types.len) amounts = new/list(gland_types.len) @@ -59,7 +59,7 @@ return /obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/organ/internal/gland)) + if(istype(W, /obj/item/organ/gland)) if(!user.drop_item()) return W.loc = src diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index d1909eed3c0..19fbe24f92d 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -137,7 +137,7 @@ if(H.stat == DEAD) say("Specimen deceased - please provide fresh sample.") return "Specimen deceased." - var/obj/item/organ/internal/gland/GlandTest = locate() in H.internal_organs + var/obj/item/organ/gland/GlandTest = locate() in H.internal_organs if(!GlandTest) say("Experimental dissection not detected!") return "No glands detected!" @@ -166,7 +166,7 @@ obj_count++ ticker.mode.update_abductor_icons_added(H.mind) - for(var/obj/item/organ/internal/gland/G in H.internal_organs) + for(var/obj/item/organ/gland/G in H.internal_organs) G.Start() point_reward++ if(point_reward > 0) diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index 4bebddd1564..03d896d0e1d 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -52,6 +52,7 @@ melee_damage_upper = 15 melee_damage_type = STAMINA damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) + hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD) languages = SWARMER environment_smash = 0 attacktext = "shocks" @@ -84,6 +85,17 @@ /mob/living/simple_animal/hostile/swarmer/New() ..() verbs -= /mob/living/verb/pulled + var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] + diag_hud.add_to_hud(src) + + +/mob/living/simple_animal/hostile/swarmer/med_hud_set_health() + var/image/holder = hud_list[DIAG_HUD] + holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" + +/mob/living/simple_animal/hostile/swarmer/med_hud_set_status() + var/image/holder = hud_list[DIAG_STAT_HUD] + holder.icon_state = "hudstat" /mob/living/simple_animal/hostile/swarmer/Stat() ..() @@ -396,7 +408,7 @@ /obj/effect/swarmer/destructible/ex_act() qdel(src) -/obj/effect/swarmer/destructible/blob_act() +/obj/effect/swarmer/destructible/blob_act(obj/effect/blob/B) qdel(src) /obj/effect/swarmer/destructible/emp_act() diff --git a/code/game/gamemodes/miniantags/monkey/monkey.dm b/code/game/gamemodes/miniantags/monkey/monkey.dm index 12f24f40b6e..717bf0a8346 100644 --- a/code/game/gamemodes/miniantags/monkey/monkey.dm +++ b/code/game/gamemodes/miniantags/monkey/monkey.dm @@ -15,7 +15,7 @@ var/carriers_to_make = 1 var/list/carriers = list() - var/monkeys_to_win = 0 + var/monkeys_to_win = 1 var/escaped_monkeys = 0 var/players_per_carrier = 30 diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 3a67b886c90..5e3dc15f8d9 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -126,12 +126,14 @@ visible_message("[src] twists and dissolves into a pile of green flesh!", \ "Your skin ruptures! Your flesh breaks apart! No disguise can ward off de--") restore() - if(gibbed) - for(var/atom/movable/AM in src) - AM.loc = loc - if(prob(90)) - step(AM, pick(alldirs)) - ..(gibbed) + ..() + +/mob/living/simple_animal/hostile/morph/Destroy() + for(var/atom/movable/AM in src) + AM.loc = loc + if(prob(90)) + step(AM, pick(alldirs)) + return ..() /mob/living/simple_animal/hostile/morph/Aggro() // automated only ..() diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index ac3816d8a0d..5725354a7ea 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -41,7 +41,7 @@ anchored = 1 mob_size = MOB_SIZE_TINY pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - speed = 0 + speed = 1 unique_name = 1 var/essence = 75 //The resource, and health, of revenants. @@ -153,7 +153,7 @@ /mob/living/simple_animal/revenant/ex_act(severity, target) return 1 //Immune to the effects of explosions. -/mob/living/simple_animal/revenant/blob_act() +/mob/living/simple_animal/revenant/blob_act(obj/effect/blob/B) return //blah blah blobs aren't in tune with the spirit world, or something. /mob/living/simple_animal/revenant/singularity_act() @@ -268,9 +268,13 @@ if(!src) return var/turf/T = get_turf(src) - if(istype(T, /turf/closed/wall)) + if(istype(T, /turf/closed)) src << "You cannot use abilities from inside of a wall." return 0 + for(var/obj/O in T) + if(O.density && !O.CanPass(src, T, 5)) + src << "You cannot use abilities inside of a dense object." + return 0 if(src.inhibited) src << "Your powers have been suppressed by nulling energy!" return 0 diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm index b311c1e7669..d03f94b1164 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm @@ -118,6 +118,16 @@ log_say("RevenantTransmit: [key_name(user)]->[key_name(M)] : [msg]") user << "You transmit to [M]: [msg]" M << "An alien voice resonates from all around... [msg]" + for(var/ded in dead_mob_list) + if(!isobserver(ded)) + continue + ded << "(F) \ + [user] \ + Revenant Transmit --> \ + (F) \ + [M] \ + [msg]" + /obj/effect/proc_holder/spell/aoe_turf/revenant @@ -214,7 +224,7 @@ if(M == user) continue L.Beam(M,icon_state="purple_lightning",icon='icons/effects/effects.dmi',time=5) - M.electrocute_act(shock_damage, "[L.name]", safety=1) + M.electrocute_act(shock_damage, L, safety=1) var/datum/effect_system/spark_spread/z = new /datum/effect_system/spark_spread z.set_up(4, 0, M) z.start() diff --git a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm index 11ca11e7d3b..75efe72c4d9 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_blight.dm @@ -25,7 +25,7 @@ ..() /datum/disease/revblight/stage_act() - if(!finalstage && affected_mob.lying && prob(stage*2)) + if(!finalstage && affected_mob.lying && prob(stage*5)) cure() return if(!finalstage && prob(stage*3)) diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm index 287dff359e1..ebd2f67eafd 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm @@ -1,11 +1,11 @@ -#define REVENANT_SPAWN_THRESHOLD 10 +#define REVENANT_SPAWN_THRESHOLD 20 /datum/round_event_control/revenant name = "Spawn Revenant" typepath = /datum/round_event/revenant weight = 7 max_occurrences = 1 - earliest_start = 6000 //Meant to mix things up early-game. + earliest_start = 12000 //Meant to mix things up early-game. min_players = 5 diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/game/gamemodes/miniantags/slaughter/slaughter.dm index 10d99b7dc57..88c386b94a6 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughter.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughter.dm @@ -18,7 +18,7 @@ status_flags = CANPUSH attack_sound = 'sound/magic/demon_attack1.ogg' var/feast_sound = 'sound/magic/Demon_consume.ogg' - var/death_sound = 'sound/magic/demon_dies.ogg' + death_sound = 'sound/magic/demon_dies.ogg' 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 maxbodytemp = INFINITY @@ -41,7 +41,7 @@ loot = list(/obj/effect/decal/cleanable/blood, \ /obj/effect/decal/cleanable/blood/innards, \ - /obj/item/organ/internal/heart/demon) + /obj/item/organ/heart/demon) del_on_death = 1 deathmessage = "The generic slaughter demon screams in anger because this is the default death message!" @@ -60,10 +60,6 @@ else speed = 0 -/mob/living/simple_animal/slaughter/death() - playsound(get_turf(src),death_sound, 200, 1) - ..() - /obj/effect/decal/cleanable/blood/innards icon = 'icons/obj/surgery.dmi' name = "pile of viscera" @@ -77,17 +73,17 @@ //The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl -/obj/item/organ/internal/heart/demon +/obj/item/organ/heart/demon name = "demon heart" desc = "Still it beats furiously, emanating an aura of utter hate." icon = 'icons/obj/surgery.dmi' icon_state = "demon_heart" origin_tech = "combat=5;biotech=8" -/obj/item/organ/internal/heart/demon/update_icon() +/obj/item/organ/heart/demon/update_icon() return //always beating visually -/obj/item/organ/internal/heart/demon/attack(mob/M, mob/living/carbon/user, obj/target) +/obj/item/organ/heart/demon/attack(mob/M, mob/living/carbon/user, obj/target) if(M != user) return ..() user.visible_message("[user] raises [src] to their mouth and tears into it with their teeth!", \ @@ -103,17 +99,17 @@ user.drop_item() src.Insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E -/obj/item/organ/internal/heart/demon/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/heart/demon/Insert(mob/living/carbon/M, special = 0) ..() if(M.mind) M.mind.AddSpell(new /obj/effect/proc_holder/spell/bloodcrawl(null)) -/obj/item/organ/internal/heart/demon/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/heart/demon/Remove(mob/living/carbon/M, special = 0) ..() if(M.mind) M.mind.RemoveSpell(/obj/effect/proc_holder/spell/bloodcrawl) -/obj/item/organ/internal/heart/demon/Stop() +/obj/item/organ/heart/demon/Stop() return 0 // Always beating. /mob/living/simple_animal/slaughter/laughter diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index ee02361d451..fbd6fe472a8 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -303,7 +303,7 @@ l_pocket = /obj/item/weapon/pinpointer/nukeop id = /obj/item/weapon/card/id/syndicate belt = /obj/item/weapon/gun/projectile/automatic/pistol - backpack_contents = list(/obj/item/weapon/storage/box/engineer=1) + backpack_contents = list(/obj/item/weapon/storage/box/syndie=1) var/tc = 25 @@ -338,7 +338,7 @@ r_pocket = /obj/item/weapon/tank/internals/emergency_oxygen/engi belt = /obj/item/weapon/storage/belt/military r_hand = /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog - backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + backpack_contents = list(/obj/item/weapon/storage/box/syndie=1,\ /obj/item/weapon/tank/jetpack/oxygen/harness=1,\ /obj/item/weapon/gun/projectile/automatic/pistol=1) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index fe266c02cbf..8a14dfe1a10 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -326,7 +326,7 @@ var/bomb_set /obj/machinery/nuclearbomb/ex_act(severity, target) return -/obj/machinery/nuclearbomb/blob_act() +/obj/machinery/nuclearbomb/blob_act(obj/effect/blob/B) if (timing == -1) return else diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 64bd43c8bea..9ea427013e0 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -257,6 +257,7 @@ Made by Xhuis specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,NOGUNS) //Can't use guns due to muzzle flash burnmod = 1.5 //1.5x burn damage, 2x is excessive heatmod = 1.5 + has_dismemberment = 0 /datum/species/shadow/ling/spec_life(mob/living/carbon/human/H) if(!H.weakeyes) H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index cefa07ddb4a..4a4860b3dcd 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -413,7 +413,7 @@ user << "You regurgitate a vast cloud of blinding smoke." var/obj/item/weapon/reagent_containers/glass/beaker/large/B = new /obj/item/weapon/reagent_containers/glass/beaker/large(user.loc) //hacky B.reagents.clear_reagents() //Just in case! - B.invisibility = INFINITY //This ought to do the trick + B.invisibility = INVISIBILITY_ABSTRACT //This ought to do the trick B.reagents.add_reagent("blindness_smoke", 10) var/datum/effect_system/smoke_spread/chem/S = new S.attach(B) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 986f9357519..a8248121b9b 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -298,7 +298,7 @@ var/global/list/multiverse = list() M.set_species(pick(all_species), icon_update=0) M.update_body() M.update_hair() - M.update_mutcolor() + M.update_body_parts() M.dna.update_dna_identity() equip_copy(M) @@ -355,21 +355,9 @@ var/global/list/multiverse = list() M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head) M.equip_to_slot_or_del(sword, slot_r_hand) if("cyborg") - var/obj/item/organ/limb/chest/C = locate(/obj/item/organ/limb/chest) in M.organs - qdel(C) - M.organs += new /obj/item/organ/limb/robot/chest - var/obj/item/organ/limb/r_arm/R = locate(/obj/item/organ/limb/r_arm) in M.organs - qdel(R) - M.organs += new /obj/item/organ/limb/robot/r_arm - var/obj/item/organ/limb/l_arm/L = locate(/obj/item/organ/limb/l_arm) in M.organs - qdel(L) - M.organs += new /obj/item/organ/limb/robot/l_arm - var/obj/item/organ/limb/l_leg/LL = locate(/obj/item/organ/limb/l_leg) in M.organs - qdel(LL) - M.organs += new /obj/item/organ/limb/robot/l_leg - var/obj/item/organ/limb/r_leg/RL = locate(/obj/item/organ/limb/r_leg) in M.organs - qdel(RL) - M.organs += new /obj/item/organ/limb/robot/r_leg + for(var/X in M.bodyparts) + var/obj/item/bodypart/affecting = X + affecting.change_bodypart_status(ORGAN_ROBOTIC) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) M.equip_to_slot_or_del(sword, slot_r_hand) @@ -473,7 +461,7 @@ var/global/list/multiverse = list() return M.update_icons() - M.update_augments() + M.update_body_parts() var/obj/item/weapon/card/id/W = new /obj/item/weapon/card/id W.icon_state = "centcom" @@ -602,7 +590,7 @@ var/global/list/multiverse = list() //Provides a decent heal, need to pump every 6 seconds -/obj/item/organ/internal/heart/cursed/wizard +/obj/item/organ/heart/cursed/wizard pump_delay = 60 heal_brute = 25 heal_burn = 25 diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 09e306ed31a..92c19d7600b 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -7,7 +7,6 @@ w_class = 1 slot_flags = SLOT_BELT origin_tech = "bluespace=4;materials=4" - var/imprinted = "empty" var/usability = 0 /obj/item/device/soulstone/anybody @@ -19,6 +18,12 @@ user << "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly." user.Dizzy(120) +/obj/item/device/soulstone/examine(mob/user) + ..() + if(usability || iscultist(user) || iswizard(user) || user.stat == DEAD) + user << "A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades." + user << "The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade." + //////////////////////////////Capturing//////////////////////////////////////////////////////// /obj/item/device/soulstone/attack(mob/living/carbon/human/M, mob/user) @@ -28,10 +33,8 @@ return if(!istype(M, /mob/living/carbon/human))//If target is not a human. return ..() - if(istype(M, /mob/living/carbon/human/dummy)) - return ..() if(iscultist(M)) - user << "You shouldn't do that." + user << "\"Come now, do not capture your fellow's soul.\"" return add_logs(user, M, "captured [M.name]'s soul", src) @@ -41,53 +44,23 @@ ///////////////////Options for using captured souls/////////////////////////////////////// /obj/item/device/soulstone/attack_self(mob/user) - if (!in_range(src, user)) + if(!in_range(src, user)) return if(!iscultist(user) && !iswizard(user) && !usability) user.Paralyse(5) user << "Your body is wracked with debilitating pain!" return - user.set_machine(src) - var/dat = "Soul Stone
" for(var/mob/living/simple_animal/shade/A in src) - dat += "Captured Soul: [A.name]
" - dat += {"Summon Shade"} - dat += "
" - dat += {"Close"} - user << browse(dat, "window=aicard") - onclose(user, "aicard") - return - - -/obj/item/device/soulstone/Topic(href, href_list) - var/mob/U = usr - if (!in_range(src, U)||U.machine!=src) - U << browse(null, "window=aicard") - U.unset_machine() - return - - add_fingerprint(U) - U.set_machine(src) - - switch(href_list["choice"])//Now we switch based on choice. - if ("Close") - U << browse(null, "window=aicard") - U.unset_machine() - return - - if ("Summon") - for(var/mob/living/simple_animal/shade/A in src) - A.status_flags &= ~GODMODE - A.canmove = 1 - A.loc = U.loc - A.cancel_camera() - src.icon_state = "soulstone" - if(iswizard(U) || usability) - A << "You have been released from your prison, but you are still bound to [U.real_name]'s will. Help them succeed in their goals at all costs." - else if(iscultist(U)) - A << "You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs." - - attack_self(U) + A.status_flags &= ~GODMODE + A.canmove = 1 + A.forceMove(get_turf(user)) + A.cancel_camera() + icon_state = "soulstone" + name = initial(name) + if(iswizard(user) || usability) + A << "You have been released from your prison, but you are still bound to [user.real_name]'s will. Help them succeed in their goals at all costs." + else if(iscultist(user)) + A << "You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs." ///////////////////////////Transferring to constructs///////////////////////////////////////////////////// /obj/structure/constructshell @@ -96,14 +69,26 @@ icon_state = "construct" desc = "A wicked machine used by those skilled in magical arts. It is inactive." +/obj/structure/constructshell/examine(mob/user) + ..() + if(iscultist(user) || iswizard(user) || user.stat == DEAD) + user << "A construct shell, used to house bound souls from a soulstone." + user << "Placing a soulstone with a soul into this shell allows you to produce your choice of the following:" + user << "An Artificer, which can produce more shells and soulstones, as well as fortifications." + user << "A Wraith, which does high damage and can jaunt through walls, though it is quite fragile." + user << "A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow." + /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/device/soulstone)) var/obj/item/device/soulstone/SS = O + if(!iscultist(user) && !iswizard(user) && !SS.usability) + user << "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly." + user.Dizzy(120) + return SS.transfer_soul("CONSTRUCT",src,user) else return ..() - ////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// @@ -118,56 +103,50 @@ if(T.client != null) for(var/obj/item/W in T) T.unEquip(W) - init_shade(src, T, user) + init_shade(T, user) return 1 else user << "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back..." - return getCultGhost(src,T,user) + return getCultGhost(T,user) if("VICTIM") var/mob/living/carbon/human/T = target if(ticker.mode.name == "cult" && T.mind == ticker.mode:sacrifice_target) if(iscultist(user)) - user << "The Geometer of blood wants this mortal sacrificed with the rune." + user << "\"This soul is mine. SACRIFICE THEM!\"" else - user << "The soul stone doesn't work for no apparent reason." + user << "The soulstone doesn't work for no apparent reason." return 0 - if(imprinted != "empty") - user << "Capture failed!: The soul stone has already been imprinted with [imprinted]'s mind!" + if(contents.len) + user << "Capture failed!: The soulstone is full! Free an existing soul to make room." else - if (T.stat == 0) - user << "Capture failed!: Kill or maim the victim first!" - else + if(T.stat != CONSCIOUS) if(T.client == null) user << "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back..." - getCultGhost(src,T,user) + getCultGhost(T,user) else - if(contents.len) - user << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." - else - for(var/obj/item/W in T) - T.unEquip(W) - init_shade(src, T, user, vic = 1) - qdel(T) + for(var/obj/item/W in T) + T.unEquip(W) + init_shade(T, user, vic = 1) + qdel(T) + else + user << "Capture failed!: Kill or maim the victim first!" + if("SHADE") var/mob/living/simple_animal/shade/T = target - if (T.stat == DEAD) - user << "Capture failed!: The shade has already been banished!" + if(contents.len) + user << "Capture failed!: The soulstone is full! Free an existing soul to make room." else - if(contents.len) - user << "Capture failed!: The soul stone is full! Use or free an existing soul to make room." - else - if(T.name != imprinted) - user << "Capture failed!: The soul stone has already been imprinted with [imprinted]'s mind!" - else - T.loc = src //put shade in stone - T.status_flags |= GODMODE - T.canmove = 0 - T.health = T.maxHealth - icon_state = "soulstone2" - T << "Your soul has been recaptured by the soul stone, its arcane energies are reknitting your ethereal form" - if(user != T) - user << "Capture successful!: [T.real_name]'s has been recaptured and stored within the soul stone." + T.loc = src //put shade in stone + T.status_flags |= GODMODE + T.canmove = 0 + T.health = T.maxHealth + icon_state = "soulstone2" + name = "soulstone: Shade of [T.real_name]" + T << "Your soul has been captured by the soulstone. Its arcane energies are reknitting your ethereal form." + if(user != T) + user << "Capture successful!: [T.real_name]'s soul has been captured and stored within the soulstone." + if("CONSTRUCT") var/obj/structure/constructshell/T = target var/mob/living/simple_animal/shade/A = locate() in src @@ -190,6 +169,7 @@ makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder/noncult, A, user, 0, T.loc) qdel(T) + user.drop_item() qdel(src) else user << "Creation failed!: The soul stone is empty! Go kill someone!" @@ -200,32 +180,31 @@ var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) newstruct.faction |= "\ref[stoner]" newstruct.key = target.key - if(stoner && iscultist(stoner) || cultoverride) - if(ticker.mode.name == "cult") - ticker.mode:add_cultist(newstruct.mind) - else - ticker.mode.cult+=newstruct.mind - ticker.mode.update_cult_icons_added(newstruct.mind) + if(newstruct.mind) + if(stoner && iscultist(stoner) || cultoverride) + if(ticker.mode.name == "cult") + ticker.mode:add_cultist(newstruct.mind, 0) + else + ticker.mode.cult += newstruct.mind + ticker.mode.update_cult_icons_added(newstruct.mind) newstruct << newstruct.playstyle_string - if(stoner && iswizard(stoner)) - newstruct << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." - else if(stoner && iscultist(stoner)) - newstruct << "You are still bound to serve the cult, follow their orders and help them complete their goals at all costs." - else newstruct << "You are still bound to serve your creator, follow their orders and help them complete their goals at all costs." + if(iscultist(stoner)) + newstruct << "You are still bound to serve the cult and [stoner], follow their orders and help them complete their goals at all costs." + else + newstruct << "You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs." newstruct.cancel_camera() -/obj/item/device/soulstone/proc/init_shade(obj/item/device/soulstone/C, mob/living/carbon/human/T, mob/U, vic = 0) +/obj/item/device/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/U, vic = 0) new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton - T.invisibility = 101 + T.invisibility = INVISIBILITY_ABSTRACT var/atom/movable/overlay/animation = new /atom/movable/overlay( T.loc ) animation.icon_state = "blank" animation.icon = 'icons/mob/mob.dmi' animation.master = T flick("dust-h", animation) qdel(animation) - var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade( T.loc ) - S.loc = C //put shade in stone + var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) S.status_flags |= GODMODE //So they won't die inside the stone somehow S.canmove = 0//Can't move out of the soul stone S.name = "Shade of [T.real_name]" @@ -234,21 +213,19 @@ if(U) S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation if(U && iscultist(U)) - ticker.mode.add_cultist(S.mind,2) + ticker.mode.add_cultist(S.mind, 0) S.cancel_camera() - C.icon_state = "soulstone2" - C.name = "Soul Stone: [S.real_name]" + name = "soulstone: Shade of [T.real_name]" + icon_state = "soulstone2" if(U && (iswizard(U) || usability)) S << "Your soul has been captured! You are now bound to [U.real_name]'s will. Help them succeed in their goals at all costs." else if(U && iscultist(U)) S << "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs." - C.imprinted = "[S.name]" if(vic && U) U << "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone." - U << "The soulstone has been imprinted with [S.real_name]'s mind, it will no longer react to other souls." -/obj/item/device/soulstone/proc/getCultGhost(obj/item/device/soulstone/C, mob/living/carbon/human/T, mob/U) +/obj/item/device/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) var/mob/dead/observer/chosen_ghost for(var/mob/dead/observer/ghost in player_list) //We put them back in their body @@ -263,13 +240,13 @@ if(!T) return 0 if(!chosen_ghost) - U << "The ghost has fled beyond your grasp." + U << "There were no spirits willing to become a shade." return 0 - if(C.contents.len) //If they used the soulstone on someone else in the meantime + if(contents.len) //If they used the soulstone on someone else in the meantime return 0 T.ckey = chosen_ghost.ckey for(var/obj/item/W in T) T.unEquip(W) - init_shade(C, T, U) + init_shade(T, U) qdel(T) - return 1 \ No newline at end of file + return 1 diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index d685bd0ea9b..360311ad9c1 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -371,7 +371,7 @@ /datum/spellbook_entry/item/cursed_heart name = "Cursed Heart" desc = "A heart that has been revived by dark magicks, the user must concentrate to ensure the heart beats, but every beat heals them. It must beat every 6 seconds." - item_path = /obj/item/organ/internal/heart/cursed/wizard + item_path = /obj/item/organ/heart/cursed/wizard log_name = "CH" cost = 1 category = "Defensive" diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 77d87856371..4121a1baefd 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -28,7 +28,7 @@ // update the invisibility and icon /obj/machinery/bluespace_beacon/hide(intact) - invisibility = intact ? 101 : 0 + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 updateicon() // update the icon_state diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index b2d9233a0ec..68cc017cfd3 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -8,13 +8,14 @@ /obj/machinery/sleeper name = "sleeper" icon = 'icons/obj/Cryogenic2.dmi' - icon_state = "sleeper-open" + icon_state = "sleeper" density = FALSE anchored = TRUE state_open = TRUE var/efficiency = 1 var/min_health = -25 var/list/available_chems + var/controls_inside = FALSE var/list/possible_chems = list( list("epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane"), list("oculine"), @@ -32,6 +33,7 @@ component_parts += new /obj/item/stack/cable_coil(null, 1) component_parts += new /obj/item/weapon/circuitboard/sleeper(null) RefreshParts() + update_icon() /obj/machinery/sleeper/RefreshParts() var/E @@ -48,10 +50,9 @@ available_chems |= possible_chems[i] /obj/machinery/sleeper/update_icon() + icon_state = initial(icon_state) if(state_open) - icon_state = "sleeper-open" - else - icon_state = "sleeper" + icon_state += "-open" /obj/machinery/sleeper/container_resist() visible_message("[occupant] emerges from [src]!", @@ -80,12 +81,12 @@ open_machine() ..(severity) -/obj/machinery/sleeper/blob_act() +/obj/machinery/sleeper/blob_act(obj/effect/blob/B) if(prob(75)) var/turf/T = get_turf(src) for(var/atom/movable/A in src) A.forceMove(T) - A.blob_act() + A.blob_act(B) qdel(src) /obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user) @@ -95,7 +96,7 @@ /obj/machinery/sleeper/attackby(obj/item/I, mob/user, params) if(!state_open && !occupant) - if(default_deconstruction_screwdriver(user, "sleeper-o", "sleeper", I)) + if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I)) return if(default_change_direction_wrench(user, I)) return @@ -109,6 +110,10 @@ /obj/machinery/sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \ datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state) + + if(controls_inside && state == notcontained_state) + state = default_state // If it has a set of controls on the inside, make it actually controllable by the mob in it. + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "sleeper", name, 375, 550, master_ui, state) @@ -172,4 +177,13 @@ return var/amount = occupant.reagents.get_reagent_amount(chem) + 10 <= 20 * efficiency var/health = occupant.health > min_health || chem == "epinephrine" - return amount && health \ No newline at end of file + return amount && health + + +/obj/machinery/sleeper/syndie + icon_state = "sleeper_s" + controls_inside = TRUE + + +/obj/machinery/sleeper/old + icon_state = "oldpod" diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 3efd30fa8b8..604fb26bed0 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -82,7 +82,7 @@ if ((M.stat != 2) || (!M.client)) continue //They need a brain! - if (ishuman(M) && !M.getorgan(/obj/item/organ/internal/brain)) + if (ishuman(M) && !M.getorgan(/obj/item/organ/brain)) continue if (M.ckey == find_key) diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 7bd87b7a574..fc252a50ab4 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -353,7 +353,7 @@ if (!istype(subject)) scantemp = "Unable to locate valid genetic data." return - if (!subject.getorgan(/obj/item/organ/internal/brain)) + if (!subject.getorgan(/obj/item/organ/brain)) scantemp = "No signs of intelligence detected." return if (subject.suiciding == 1) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 67d4aebd8db..19b2364b032 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -145,7 +145,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F ..() var/danger danger = joined_player_list.len - ticker.mode.syndicates.len - while(!IsMultiple(++danger,10))//Just round up to the nearest multiple of ten. + danger = Ceiling(danger, 10) scaleTC(danger) /obj/machinery/computer/telecrystals/boss/proc/scaleTC(amt)//Its own proc, since it'll probably need a lot of tweaks for balance, use a fancier algorhithm, etc. diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 3550a497b38..1732f1ea7fb 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -377,12 +377,16 @@ to destroy them and players will be able to make replacements. var/obj/item/weapon/circuitboard/newtype if(istype(I, /obj/item/weapon/screwdriver)) + var/new_setting = "Heater" + playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) if(build_path == initial(heater.build_path)) newtype = freezer + new_setting = "Freezer" else newtype = heater name = initial(newtype.name) build_path = initial(newtype.build_path) + user << "You change the circuitboard setting to \"[new_setting]\"." /obj/item/weapon/circuitboard/thermomachine/freezer name = "circuit board (Freezer)" @@ -803,6 +807,6 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=2;biotech=3" req_components = list( /obj/item/weapon/stock_parts/manipulator = 1, - /obj/item/weapon/stock_parts/micro_laser = 2, + /obj/item/weapon/stock_parts/micro_laser = 1, /obj/item/weapon/stock_parts/console_screen = 1, /obj/item/weapon/stock_parts/scanning_module = 1,) \ No newline at end of file diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 10ecad63863..ce484c4b05e 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -79,7 +79,7 @@ if(2) take_damage(25, BRUTE, 0) -/obj/structure/barricade/blob_act() +/obj/structure/barricade/blob_act(obj/effect/blob/B) take_damage(25, BRUTE, 0) /obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 95c633ddecf..5a4292e3e42 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -566,10 +566,10 @@ var/list/airlock_overlays = list() if(!istype(H.head, /obj/item/clothing/head/helmet)) H.visible_message("[user] headbutts the airlock.", \ "You headbutt the airlock!") - var/obj/item/organ/limb/affecting = H.get_organ("head") + var/obj/item/bodypart/affecting = H.get_bodypart("head") H.Stun(5) H.Weaken(5) - if(affecting.take_damage(10, 0)) + if(affecting && affecting.take_damage(10, 0)) H.update_damage_overlays(0) else visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.") diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 3f666e197f5..81f3a3af60d 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -180,7 +180,7 @@ obj/machinery/door/proc/try_to_crowbar(obj/item/I, mob/user) -/obj/machinery/door/blob_act() +/obj/machinery/door/blob_act(obj/effect/blob/B) if(prob(40)) qdel(src) return diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 95276267b3b..dbfe8201bc5 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -216,7 +216,7 @@ playsound(src.loc, 'sound/items/Welder.ogg', 100, 1) else return - if(!(stat & BROKEN)) + if(!(stat & BROKEN) && buildstage != 0) //can't break the electronics if there isn't any inside. health -= damage if(health <= 0) stat |= BROKEN diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index aea97147249..7751dcb8bb6 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -187,7 +187,7 @@ Class Procs: updateUsrDialog() update_icon() -/obj/machinery/blob_act() +/obj/machinery/blob_act(obj/effect/blob/B) if(!density) qdel(src) if(prob(75)) @@ -241,6 +241,7 @@ Class Procs: //////////////////////////////////////////////////////////////////////////////////////////// /obj/machinery/mech_melee_attack(obj/mecha/M) + M.do_attack_animation(src) if(M.damtype == BRUTE || M.damtype == BURN) visible_message("[M.name] has hit [src].") take_damage(M.force*2, M.damtype) // multiplied by 2 so we can hit machines hard but not be overpowered against mobs. diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index 54bd13d35dc..0eb8c805d4c 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -50,7 +50,7 @@ // update the invisibility and icon /obj/machinery/magnetic_module/hide(intact) - invisibility = intact ? 101 : 0 + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 updateicon() // update the icon_state diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 147c97324b7..0bf936413c2 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -62,7 +62,7 @@ // called when turf state changes // hide the object if turf is intact /obj/machinery/navbeacon/hide(intact) - invisibility = intact ? 101 : 0 + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 updateicon() // update the icon_state diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 1868e966e5a..88af11c1875 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -53,7 +53,7 @@ if(2) take_damage(50, BRUTE, 0) -/obj/machinery/shield/blob_act() +/obj/machinery/shield/blob_act(obj/effect/blob/B) qdel(src) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 27dc7cba695..38c914ecaf5 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -237,7 +237,7 @@ /obj/machinery/teleport name = "teleport" - icon = 'icons/obj/stationobjs.dmi' + icon = 'icons/obj/machines/teleporter.dmi' density = 1 anchored = 1 @@ -297,6 +297,9 @@ /obj/machinery/teleport/hub/attackby(obj/item/W, mob/user, params) if(default_deconstruction_screwdriver(user, "tele-o", "tele0", W)) + if(power_station && power_station.engaged) + power_station.engaged = 0 //hub with panel open is off, so the station must be informed. + update_icon() return if(exchange_parts(user, W)) return @@ -450,9 +453,12 @@ if(stat & (BROKEN|NOPOWER) || !teleporter_hub || !teleporter_console ) return if (teleporter_console.target) - src.engaged = !src.engaged - use_power(5000) - visible_message("Teleporter [engaged ? "" : "dis"]engaged!") + if(teleporter_hub.panel_open || teleporter_hub.stat & (BROKEN|NOPOWER)) + visible_message("The teleporter hub isn't responding.") + else + src.engaged = !src.engaged + use_power(5000) + visible_message("Teleporter [engaged ? "" : "dis"]engaged!") else visible_message("No target detected.") src.engaged = 0 @@ -469,7 +475,7 @@ /obj/machinery/teleport/station/update_icon() if(panel_open) icon_state = "controller-o" - else if(stat & NOPOWER) + else if(stat & (BROKEN|NOPOWER)) icon_state = "controller-p" else icon_state = "controller" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index cbc30cb5ede..30cce02c00d 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -111,7 +111,7 @@ if(prob(25)) malfunction() -/obj/machinery/vending/blob_act() +/obj/machinery/vending/blob_act(obj/effect/blob/B) malfunction() ..() diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5b30ada2d0e..d4d6b8ea72b 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -16,6 +16,7 @@ //8 = blood, running var/gibs_ready = 0 var/obj/crayon + var/obj/paper /obj/machinery/washing_machine/AltClick(mob/user) if(!user.canUseTopic(src)) @@ -44,15 +45,27 @@ for(var/obj/item/clothing/suit/hooded/ian_costume/IC in contents) new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(src) qdel(IC) - + + for(var/obj/item/weapon/paper/P in contents) + if(crayon) + var/dye_color + if(istype(crayon,/obj/item/toy/crayon)) + var/obj/item/toy/crayon/CR = crayon + dye_color = CR.paint_color + if(dye_color) + P.color = dye_color + qdel(crayon) + crayon = null + if(crayon) var/wash_color if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon - wash_color = CR.colourName + wash_color = CR.paint_color else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon wash_color = ST.item_color + if(wash_color) var/new_jumpsuit_icon_state = "" @@ -196,6 +209,7 @@ state = 3 else ..() + else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \ istype(W,/obj/item/clothing/under) || \ istype(W,/obj/item/clothing/mask) || \ @@ -203,7 +217,8 @@ istype(W,/obj/item/clothing/gloves) || \ istype(W,/obj/item/clothing/shoes) || \ istype(W,/obj/item/clothing/suit) || \ - istype(W,/obj/item/weapon/bedsheet)) + istype(W,/obj/item/weapon/bedsheet) || \ + istype(W,/obj/item/weapon/paper)) //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item. if ( istype(W,/obj/item/clothing/suit/space ) ) diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index a16726513cb..43849b204c5 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -12,12 +12,11 @@ force = 40 wreckage = /obj/structure/mecha_wreckage/durand -/obj/mecha/combat/durand/GrantActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0) ..() - defense_action.chassis = src - defense_action.Grant(user) + defense_action.Grant(user, src) -/obj/mecha/combat/durand/RemoveActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0) ..() defense_action.Remove(user) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index c53c9ff9f2c..ba288e3c61d 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -49,22 +49,20 @@ cell.maxcharge = 30000 -/obj/mecha/combat/gygax/GrantActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0) ..() - overload_action.chassis = src - overload_action.Grant(user) + overload_action.Grant(user, src) -/obj/mecha/combat/gygax/dark/GrantActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/gygax/dark/GrantActions(mob/living/user, human_occupant = 0) ..() - thrusters_action.chassis = src - thrusters_action.Grant(user) + thrusters_action.Grant(user, src) -/obj/mecha/combat/gygax/RemoveActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/gygax/RemoveActions(mob/living/user, human_occupant = 0) ..() overload_action.Remove(user) -/obj/mecha/combat/gygax/dark/RemoveActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/gygax/dark/RemoveActions(mob/living/user, human_occupant = 0) ..() thrusters_action.Remove(user) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index bd9de6124f3..ec9fcf0bd6e 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -17,18 +17,13 @@ max_equip = 4 bumpsmash = 1 -/obj/mecha/combat/marauder/GrantActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/marauder/GrantActions(mob/living/user, human_occupant = 0) ..() - smoke_action.chassis = src - smoke_action.Grant(user) + smoke_action.Grant(user, src) + thrusters_action.Grant(user, src) + zoom_action.Grant(user, src) - thrusters_action.chassis = src - thrusters_action.Grant(user) - - zoom_action.chassis = src - zoom_action.Grant(user) - -/obj/mecha/combat/marauder/RemoveActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/marauder/RemoveActions(mob/living/user, human_occupant = 0) ..() smoke_action.Remove(user) thrusters_action.Remove(user) diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm index 77c672649fb..9c5a6f1c1c2 100644 --- a/code/game/mecha/combat/phazon.dm +++ b/code/game/mecha/combat/phazon.dm @@ -17,16 +17,13 @@ max_equip = 3 phase_state = "phazon-phase" -/obj/mecha/combat/phazon/GrantActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0) ..() - switch_damtype_action.chassis = src - switch_damtype_action.Grant(user) - - phasing_action.chassis = src - phasing_action.Grant(user) + switch_damtype_action.Grant(user, src) + phasing_action.Grant(user, src) -/obj/mecha/combat/phazon/RemoveActions(var/mob/living/user, var/human_occupant = 0) +/obj/mecha/combat/phazon/RemoveActions(mob/living/user, human_occupant = 0) ..() switch_damtype_action.Remove(user) phasing_action.Remove(user) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 7971b6966ea..d2ff930d4eb 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -13,8 +13,8 @@ var/energy_drain = 0 var/obj/mecha/chassis = null var/range = MELEE //bitflags - reliability = 1000 var/salvageable = 1 + var/selectable = 1 // Set to 0 for passive equipment such as mining scanner or armor plates /obj/item/mecha_parts/mecha_equipment/proc/update_chassis_page() if(chassis) @@ -50,7 +50,15 @@ /obj/item/mecha_parts/mecha_equipment/proc/get_equip_info() if(!chassis) return - return "* [chassis.selected==src?"":""][src.name][chassis.selected==src?"":""]" + var/txt = "* " + if(chassis.selected == src) + txt += "[src.name]" + else if(selectable) + txt += "[src.name]" + else + txt += "[src.name]" + + return txt /obj/item/mecha_parts/mecha_equipment/proc/is_ranged()//add a distance restricted equipment. Why not? return range&RANGED @@ -102,7 +110,7 @@ chassis = M src.loc = M M.log_message("[src] initialized.") - if(!M.selected) + if(!M.selected && selectable) M.selected = src src.update_chassis_page() return diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 9231a0654b6..a43d273ac65 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -83,7 +83,7 @@ add_logs(user, target, "attacked", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") if(ishuman(target)) var/mob/living/carbon/human/H = target - var/obj/item/organ/limb/affecting = H.get_organ("chest") + var/obj/item/bodypart/affecting = H.get_bodypart("chest") affecting.take_damage(drill_damage) H.update_damage_overlays(0) else if(target.stat == DEAD && target.butcher_results) @@ -112,7 +112,7 @@ desc = "Equipment for engineering and combat exosuits. It will automatically check surrounding rock for useful minerals." icon_state = "mecha_analyzer" origin_tech = "materials=3;engineering=2" - equip_cooldown = 30 + selectable = 0 var/scanning = 0 /obj/item/mecha_parts/mecha_equipment/mining_scanner/New() diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index cc40a6629a0..ead3ad8781d 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -152,10 +152,7 @@ range = 0 var/deflect_coeff = 1.15 var/damage_coeff = 0.8 - -/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/get_equip_info() - if(!chassis) return - return "* [src.name]" + selectable = 0 /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/proc/attack_react(mob/user as mob) if(action_checks(user)) @@ -174,10 +171,7 @@ range = 0 var/deflect_coeff = 1.15 var/damage_coeff = 0.8 - -/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/get_equip_info() - if(!chassis) return - return "* [src.name]" + selectable = 0 /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster/proc/projectile_react() if(action_checks(src)) @@ -198,6 +192,7 @@ var/health_boost = 1 var/icon/droid_overlay var/list/repairable_damage = list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH) + selectable = 0 /obj/item/mecha_parts/mecha_equipment/repair_droid/Destroy() SSobj.processing.Remove(src) @@ -217,7 +212,7 @@ /obj/item/mecha_parts/mecha_equipment/repair_droid/get_equip_info() if(!chassis) return - return "* [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/repair_droid/Topic(href, href_list) @@ -281,6 +276,7 @@ range = 0 var/coeff = 100 var/list/use_channels = list(EQUIP,ENVIRON,LIGHT) + selectable = 0 /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/Destroy() SSobj.processing.Remove(src) @@ -323,7 +319,7 @@ /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/get_equip_info() if(!chassis) return - return "* [src.name] - [equip_ready?"A":"Dea"]ctivate" + return "*  [src.name] - [equip_ready?"A":"Dea"]ctivate" /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/process() @@ -488,7 +484,6 @@ fuel_per_cycle_active = 30 power_per_cycle = 50 var/rad_per_cycle = 0.3 - reliability = 1000 /obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init() fuel = new /obj/item/stack/sheet/mineral/uranium(src) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index c793887e424..b3c67c72ce4 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -205,7 +205,7 @@ return 1 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() - return "[..()]\[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" + return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm() diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e5877062716..6c62de01260 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -92,7 +92,7 @@ var/datum/action/innate/mecha/mech_zoom/zoom_action = new var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new - var/datum/action/innate/mecha/strafe/strafing = new + var/datum/action/innate/mecha/strafe/strafing_action = new //Action vars var/thrusters_active = FALSE @@ -109,10 +109,12 @@ var/phase_state = "" //icon_state when phasing var/strafe = FALSE //If we are strafing - var/static/list/armour_facings = list("[NORTH]" = list("[SOUTH]" = FRONT_ARMOUR, "[EAST]" = SIDE_ARMOUR, "[WEST]" = SIDE_ARMOUR, "[NORTH]" = BACK_ARMOUR), -"[EAST]" = list("[SOUTH]" = SIDE_ARMOUR, "[WEST]" = FRONT_ARMOUR, "[EAST]" = BACK_ARMOUR, "[NORTH]" = SIDE_ARMOUR), -"[SOUTH]" = list("[NORTH]" = FRONT_ARMOUR, "[WEST]" = SIDE_ARMOUR, "[EAST]" = SIDE_ARMOUR, "[SOUTH]" = BACK_ARMOUR ), -"[WEST]" = list("[NORTH]" = SIDE_ARMOUR, "[EAST]" = FRONT_ARMOUR, "[SOUTH]" = SIDE_ARMOUR, "[WEST]" = BACK_ARMOUR) ) + var/static/list/armour_facings = list( + "[NORTH]" = list("[SOUTH]" = FRONT_ARMOUR, "[EAST]" = SIDE_ARMOUR, "[WEST]" = SIDE_ARMOUR, "[NORTH]" = BACK_ARMOUR, "[SOUTHEAST]" = SIDE_ARMOUR, "[NORTHEAST]" = SIDE_ARMOUR, "[SOUTHWEST]" = SIDE_ARMOUR, "[NORTHWEST]" = SIDE_ARMOUR), + "[EAST]" = list("[SOUTH]" = SIDE_ARMOUR, "[WEST]" = FRONT_ARMOUR, "[EAST]" = BACK_ARMOUR, "[NORTH]" = SIDE_ARMOUR, "[SOUTHEAST]" = SIDE_ARMOUR, "[NORTHEAST]" = SIDE_ARMOUR, "[SOUTHWEST]" = SIDE_ARMOUR, "[NORTHWEST]" = SIDE_ARMOUR), + "[SOUTH]" = list("[NORTH]" = FRONT_ARMOUR, "[WEST]" = SIDE_ARMOUR, "[EAST]" = SIDE_ARMOUR, "[SOUTH]" = BACK_ARMOUR, "[SOUTHEAST]" = SIDE_ARMOUR, "[NORTHEAST]" = SIDE_ARMOUR, "[SOUTHWEST]" = SIDE_ARMOUR, "[NORTHWEST]" = SIDE_ARMOUR ), + "[WEST]" = list("[NORTH]" = SIDE_ARMOUR, "[EAST]" = FRONT_ARMOUR, "[SOUTH]" = SIDE_ARMOUR, "[WEST]" = BACK_ARMOUR, "[SOUTHEAST]" = SIDE_ARMOUR, "[NORTHEAST]" = SIDE_ARMOUR, "[SOUTHWEST]" = SIDE_ARMOUR, "[NORTHWEST]" = SIDE_ARMOUR) + ) var/occupant_sight_flags = 0 //sight flags to give to the occupant (e.g. mech mining scanner gives meson-like vision) @@ -553,9 +555,8 @@ if(yes) if(..()) //mech was thrown return - if(bumpsmash) - var/mecha = src - obstacle.mech_melee_attack(mecha) + if(bumpsmash && occupant) //Need a pilot to push the PUNCH button. + obstacle.mech_melee_attack(src) if(!obstacle || (obstacle && !obstacle.density)) step(src,dir) if(istype(obstacle, /obj)) @@ -1017,291 +1018,4 @@ var/year_integer = text2num(year) // = 2013??? /obj/mecha/update_remote_sight(mob/living/user) if(occupant_sight_flags) if(user == occupant) - user.sight |= occupant_sight_flags - -//////////////////////////////////////// Action Buttons /////////////////////////////////////////////// - -/obj/mecha/proc/GrantActions(var/mob/living/user, var/human_occupant = 0) - if(human_occupant) - eject_action.chassis = src - eject_action.Grant(user) - - internals_action.chassis = src - internals_action.Grant(user) - - cycle_action.chassis = src - cycle_action.Grant(user) - - lights_action.chassis = src - lights_action.Grant(user) - - stats_action.chassis = src - stats_action.Grant(user) - - strafing.chassis = src - strafing.Grant(user) - - -/obj/mecha/proc/RemoveActions(var/mob/living/user, var/human_occupant = 0) - if(human_occupant) - eject_action.Remove(user) - internals_action.Remove(user) - cycle_action.Remove(user) - lights_action.Remove(user) - stats_action.Remove(user) - strafing.Remove(user) - - -/datum/action/innate/mecha - check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUNNED | AB_CHECK_CONSCIOUS - var/obj/mecha/chassis - -/datum/action/innate/mecha/Destroy() - chassis = null - return ..() - -/datum/action/innate/mecha/mech_eject - name = "Eject From Mech" - button_icon_state = "mech_eject" - -/datum/action/innate/mecha/mech_eject/Activate() - if(!owner || !iscarbon(owner)) - return - if(!chassis || chassis.occupant != owner) - return - chassis.go_out() - - -/datum/action/innate/mecha/mech_toggle_internals - name = "Toggle Internal Airtank Usage" - button_icon_state = "mech_internals_off" - -/datum/action/innate/mecha/mech_toggle_internals/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - chassis.use_internal_tank = !chassis.use_internal_tank - button_icon_state = "mech_internals_[chassis.use_internal_tank ? "on" : "off"]" - chassis.occupant_message("Now taking air from [chassis.use_internal_tank?"internal airtank":"environment"].") - chassis.log_message("Now taking air from [chassis.use_internal_tank?"internal airtank":"environment"].") - - -/datum/action/innate/mecha/mech_cycle_equip - name = "Cycle Equipment" - button_icon_state = "mech_cycle_equip_off" - -/datum/action/innate/mecha/mech_cycle_equip/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - if(chassis.equipment.len == 0) - chassis.occupant_message("No equipment available.") - return - if(!chassis.selected) - chassis.selected = chassis.equipment[1] - chassis.occupant_message("You select [chassis.selected]") - send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) - button_icon_state = "mech_cycle_equip_on" - return - var/number = 0 - for(var/A in chassis.equipment) - number++ - if(A == chassis.selected) - if(chassis.equipment.len == number) - chassis.selected = null - chassis.occupant_message("You switch to no equipment") - button_icon_state = "mech_cycle_equip_off" - else - chassis.selected = chassis.equipment[number+1] - chassis.occupant_message("You switch to [chassis.selected]") - button_icon_state = "mech_cycle_equip_on" - send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) - return - - -/datum/action/innate/mecha/mech_toggle_lights - name = "Toggle Lights" - button_icon_state = "mech_lights_off" - -/datum/action/innate/mecha/mech_toggle_lights/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - chassis.lights = !chassis.lights - if(chassis.lights) - chassis.AddLuminosity(chassis.lights_power) - button_icon_state = "mech_lights_on" - else - chassis.AddLuminosity(-chassis.lights_power) - button_icon_state = "mech_lights_off" - chassis.occupant_message("Toggled lights [chassis.lights?"on":"off"].") - chassis.log_message("Toggled lights [chassis.lights?"on":"off"].") - - -/datum/action/innate/mecha/mech_view_stats - name = "View Stats" - button_icon_state = "mech_view_stats" - -/datum/action/innate/mecha/mech_view_stats/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - chassis.occupant << browse(chassis.get_stats_html(), "window=exosuit") - - -/datum/action/innate/mecha/strafe - name = "Toggle Strafing" - button_icon_state = "strafe" - -/datum/action/innate/mecha/strafe/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - - chassis.toggle_strafe() - -/obj/mecha/AltClick(mob/living/user) - if(user == occupant) - toggle_strafe() - -/obj/mecha/proc/toggle_strafe() - strafe = !strafe - - occupant_message("Toggled strafing mode [strafe?"on":"off"].") - log_message("Toggled strafing mode [strafe?"on":"off"].") - -//////////////////////////////////////// Specific Ability Actions /////////////////////////////////////////////// -//Need to be granted by the mech type, Not default abilities. - -/datum/action/innate/mecha/mech_toggle_thrusters - name = "Toggle Thrusters" - button_icon_state = "mech_thrusters_off" - -/datum/action/innate/mecha/mech_toggle_thrusters/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - if(M.get_charge() > 0) - M.thrusters_active = !M.thrusters_active - button_icon_state = "mech_thrusters_[M.thrusters_active ? "on" : "off"]" - M.log_message("Toggled thrusters.") - M.occupant_message("Thrusters [M.thrusters_active ?"en":"dis"]abled.") - - -/datum/action/innate/mecha/mech_defence_mode - name = "Toggle Defence Mode" - button_icon_state = "mech_defense_mode_off" - -/datum/action/innate/mecha/mech_defence_mode/Activate(forced_state = null) - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - if(!isnull(forced_state)) - M.defence_mode = forced_state - else - M.defence_mode = !M.defence_mode - button_icon_state = "mech_defense_mode_[M.defence_mode ? "on" : "off"]" - if(M.defence_mode) - M.deflect_chance = M.defence_mode_deflect_chance - M.occupant_message("You enable [M] defence mode.") - else - M.deflect_chance = initial(M.deflect_chance) - M.occupant_message("You disable [M] defence mode.") - M.log_message("Toggled defence mode.") - - -/datum/action/innate/mecha/mech_overload_mode - name = "Toggle leg actuators overload" - button_icon_state = "mech_overload_off" - -/datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null) - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - if(!isnull(forced_state)) - M.leg_overload_mode = forced_state - else - M.leg_overload_mode = !M.leg_overload_mode - button_icon_state = "mech_overload_[M.leg_overload_mode ? "on" : "off"]" - M.log_message("Toggled leg actuators overload.") - if(M.leg_overload_mode) - M.leg_overload_mode = 1 - M.bumpsmash = 1 - M.step_in = min(1, round(M.step_in/2)) - M.step_energy_drain = M.step_energy_drain*M.leg_overload_coeff - M.occupant_message("You enable leg actuators overload.") - else - M.leg_overload_mode = 0 - M.bumpsmash = 0 - M.step_in = initial(M.step_in) - M.step_energy_drain = initial(M.step_energy_drain) - M.occupant_message("You disable leg actuators overload.") - - -/datum/action/innate/mecha/mech_smoke - name = "Smoke" - button_icon_state = "mech_smoke" - -/datum/action/innate/mecha/mech_smoke/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - if(M.smoke_ready && M.smoke>0) - M.smoke_system.start() - M.smoke-- - M.smoke_ready = 0 - spawn(M.smoke_cooldown) - M.smoke_ready = 1 - - -/datum/action/innate/mecha/mech_zoom - name = "Zoom" - button_icon_state = "mech_zoom_off" - -/datum/action/innate/mecha/mech_zoom/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - if(owner.client) - M.zoom_mode = !M.zoom_mode - button_icon_state = "mech_zoom_[M.zoom_mode ? "on" : "off"]" - M.log_message("Toggled zoom mode.") - M.occupant_message("Zoom mode [M.zoom_mode?"en":"dis"]abled.") - if(M.zoom_mode) - owner.client.view = 12 - owner << sound('sound/mecha/imag_enh.ogg',volume=50) - else - owner.client.view = world.view//world.view - default mob view size - - -/datum/action/innate/mecha/mech_switch_damtype - name = "Reconfigure arm microtool arrays" - button_icon_state = "mech_damtype_brute" - -/datum/action/innate/mecha/mech_switch_damtype/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - var/new_damtype - switch(M.damtype) - if("tox") - new_damtype = "brute" - M.occupant_message("Your exosuit's hands form into fists.") - if("brute") - new_damtype = "fire" - M.occupant_message("A torch tip extends from your exosuit's hand, glowing red.") - if("fire") - new_damtype = "tox" - M.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.") - M.damtype = new_damtype. - button_icon_state = "mech_damtype_[new_damtype]" - playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1) - - -/datum/action/innate/mecha/mech_toggle_phasing - name = "Toggle Phasing" - button_icon_state = "mech_phasing_off" - -/datum/action/innate/mecha/mech_toggle_phasing/Activate() - if(!owner || !chassis || chassis.occupant != owner) - return - var/obj/mecha/M = chassis - M.phasing = !M.phasing - button_icon_state = "mech_phasing_[M.phasing ? "on" : "off"]" - M.occupant_message("En":"#f00\">Dis"]abled phasing.") - + user.sight |= occupant_sight_flags \ No newline at end of file diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm new file mode 100644 index 00000000000..869801152e4 --- /dev/null +++ b/code/game/mecha/mecha_actions.dm @@ -0,0 +1,281 @@ +//////////////////////////////////////// Action Buttons /////////////////////////////////////////////// + +/obj/mecha/proc/GrantActions(mob/living/user, human_occupant = 0) + if(human_occupant) + eject_action.Grant(user, src) + internals_action.Grant(user, src) + cycle_action.Grant(user, src) + lights_action.Grant(user, src) + stats_action.Grant(user, src) + strafing_action.Grant(user, src) + + +/obj/mecha/proc/RemoveActions(mob/living/user, human_occupant = 0) + if(human_occupant) + eject_action.Remove(user) + internals_action.Remove(user) + cycle_action.Remove(user) + lights_action.Remove(user) + stats_action.Remove(user) + strafing_action.Remove(user) + + +/datum/action/innate/mecha + check_flags = AB_CHECK_RESTRAINED | AB_CHECK_STUNNED | AB_CHECK_CONSCIOUS + var/obj/mecha/chassis + +/datum/action/innate/mecha/Grant(mob/living/L, obj/mecha/M) + chassis = M + ..() + +/datum/action/innate/mecha/Destroy() + chassis = null + return ..() + +/datum/action/innate/mecha/mech_eject + name = "Eject From Mech" + button_icon_state = "mech_eject" + +/datum/action/innate/mecha/mech_eject/Activate() + if(!owner || !iscarbon(owner)) + return + if(!chassis || chassis.occupant != owner) + return + chassis.go_out() + + +/datum/action/innate/mecha/mech_toggle_internals + name = "Toggle Internal Airtank Usage" + button_icon_state = "mech_internals_off" + +/datum/action/innate/mecha/mech_toggle_internals/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + chassis.use_internal_tank = !chassis.use_internal_tank + button_icon_state = "mech_internals_[chassis.use_internal_tank ? "on" : "off"]" + chassis.occupant_message("Now taking air from [chassis.use_internal_tank?"internal airtank":"environment"].") + chassis.log_message("Now taking air from [chassis.use_internal_tank?"internal airtank":"environment"].") + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_cycle_equip + name = "Cycle Equipment" + button_icon_state = "mech_cycle_equip_off" + +/datum/action/innate/mecha/mech_cycle_equip/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + + var/list/available_equipment = list() + for(var/obj/item/mecha_parts/mecha_equipment/M in chassis.equipment) + if(M.selectable) + available_equipment += M + + if(available_equipment.len == 0) + chassis.occupant_message("No equipment available.") + return + if(!chassis.selected) + chassis.selected = available_equipment[1] + chassis.occupant_message("You select [chassis.selected]") + send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) + button_icon_state = "mech_cycle_equip_on" + UpdateButtonIcon() + return + var/number = 0 + for(var/A in available_equipment) + number++ + if(A == chassis.selected) + if(available_equipment.len == number) + chassis.selected = null + chassis.occupant_message("You switch to no equipment") + button_icon_state = "mech_cycle_equip_off" + else + chassis.selected = available_equipment[number+1] + chassis.occupant_message("You switch to [chassis.selected]") + button_icon_state = "mech_cycle_equip_on" + send_byjax(chassis.occupant,"exosuit.browser","eq_list",chassis.get_equipment_list()) + UpdateButtonIcon() + return + + +/datum/action/innate/mecha/mech_toggle_lights + name = "Toggle Lights" + button_icon_state = "mech_lights_off" + +/datum/action/innate/mecha/mech_toggle_lights/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + chassis.lights = !chassis.lights + if(chassis.lights) + chassis.AddLuminosity(chassis.lights_power) + button_icon_state = "mech_lights_on" + else + chassis.AddLuminosity(-chassis.lights_power) + button_icon_state = "mech_lights_off" + chassis.occupant_message("Toggled lights [chassis.lights?"on":"off"].") + chassis.log_message("Toggled lights [chassis.lights?"on":"off"].") + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_view_stats + name = "View Stats" + button_icon_state = "mech_view_stats" + +/datum/action/innate/mecha/mech_view_stats/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + chassis.occupant << browse(chassis.get_stats_html(), "window=exosuit") + + +/datum/action/innate/mecha/strafe + name = "Toggle Strafing" + button_icon_state = "strafe" + +/datum/action/innate/mecha/strafe/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + + chassis.toggle_strafe() + +/obj/mecha/AltClick(mob/living/user) + if(user == occupant) + toggle_strafe() + +/obj/mecha/proc/toggle_strafe() + strafe = !strafe + + occupant_message("Toggled strafing mode [strafe?"on":"off"].") + log_message("Toggled strafing mode [strafe?"on":"off"].") + strafing_action.UpdateButtonIcon() + +//////////////////////////////////////// Specific Ability Actions /////////////////////////////////////////////// +//Need to be granted by the mech type, Not default abilities. + +/datum/action/innate/mecha/mech_toggle_thrusters + name = "Toggle Thrusters" + button_icon_state = "mech_thrusters_off" + +/datum/action/innate/mecha/mech_toggle_thrusters/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + if(chassis.get_charge() > 0) + chassis.thrusters_active = !chassis.thrusters_active + button_icon_state = "mech_thrusters_[chassis.thrusters_active ? "on" : "off"]" + chassis.log_message("Toggled thrusters.") + chassis.occupant_message("Thrusters [chassis.thrusters_active ?"en":"dis"]abled.") + + +/datum/action/innate/mecha/mech_defence_mode + name = "Toggle Defence Mode" + button_icon_state = "mech_defense_mode_off" + +/datum/action/innate/mecha/mech_defence_mode/Activate(forced_state = null) + if(!owner || !chassis || chassis.occupant != owner) + return + if(!isnull(forced_state)) + chassis.defence_mode = forced_state + else + chassis.defence_mode = !chassis.defence_mode + button_icon_state = "mech_defense_mode_[chassis.defence_mode ? "on" : "off"]" + if(chassis.defence_mode) + chassis.deflect_chance = chassis.defence_mode_deflect_chance + chassis.occupant_message("You enable [chassis] defence mode.") + else + chassis.deflect_chance = initial(chassis.deflect_chance) + chassis.occupant_message("You disable [chassis] defence mode.") + chassis.log_message("Toggled defence mode.") + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_overload_mode + name = "Toggle leg actuators overload" + button_icon_state = "mech_overload_off" + +/datum/action/innate/mecha/mech_overload_mode/Activate(forced_state = null) + if(!owner || !chassis || chassis.occupant != owner) + return + if(!isnull(forced_state)) + chassis.leg_overload_mode = forced_state + else + chassis.leg_overload_mode = !chassis.leg_overload_mode + button_icon_state = "mech_overload_[chassis.leg_overload_mode ? "on" : "off"]" + chassis.log_message("Toggled leg actuators overload.") + if(chassis.leg_overload_mode) + chassis.leg_overload_mode = 1 + chassis.bumpsmash = 1 + chassis.step_in = min(1, round(chassis.step_in/2)) + chassis.step_energy_drain = chassis.step_energy_drain*chassis.leg_overload_coeff + chassis.occupant_message("You enable leg actuators overload.") + else + chassis.leg_overload_mode = 0 + chassis.bumpsmash = 0 + chassis.step_in = initial(chassis.step_in) + chassis.step_energy_drain = initial(chassis.step_energy_drain) + chassis.occupant_message("You disable leg actuators overload.") + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_smoke + name = "Smoke" + button_icon_state = "mech_smoke" + +/datum/action/innate/mecha/mech_smoke/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + if(chassis.smoke_ready && chassis.smoke>0) + chassis.smoke_system.start() + chassis.smoke-- + chassis.smoke_ready = 0 + spawn(chassis.smoke_cooldown) + chassis.smoke_ready = 1 + + +/datum/action/innate/mecha/mech_zoom + name = "Zoom" + button_icon_state = "mech_zoom_off" + +/datum/action/innate/mecha/mech_zoom/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + if(owner.client) + chassis.zoom_mode = !chassis.zoom_mode + button_icon_state = "mech_zoom_[chassis.zoom_mode ? "on" : "off"]" + chassis.log_message("Toggled zoom mode.") + chassis.occupant_message("Zoom mode [chassis.zoom_mode?"en":"dis"]abled.") + if(chassis.zoom_mode) + owner.client.view = 12 + owner << sound('sound/mecha/imag_enh.ogg',volume=50) + else + owner.client.view = world.view//world.view - default mob view size + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_switch_damtype + name = "Reconfigure arm microtool arrays" + button_icon_state = "mech_damtype_brute" + +/datum/action/innate/mecha/mech_switch_damtype/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + var/new_damtype + switch(chassis.damtype) + if("tox") + new_damtype = "brute" + chassis.occupant_message("Your exosuit's hands form into fists.") + if("brute") + new_damtype = "fire" + chassis.occupant_message("A torch tip extends from your exosuit's hand, glowing red.") + if("fire") + new_damtype = "tox" + chassis.occupant_message("A bone-chillingly thick plasteel needle protracts from the exosuit's palm.") + chassis.damtype = new_damtype. + button_icon_state = "mech_damtype_[new_damtype]" + playsound(src, 'sound/mecha/mechmove01.ogg', 50, 1) + UpdateButtonIcon() + +/datum/action/innate/mecha/mech_toggle_phasing + name = "Toggle Phasing" + button_icon_state = "mech_phasing_off" + +/datum/action/innate/mecha/mech_toggle_phasing/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + chassis.phasing = !chassis.phasing + button_icon_state = "mech_phasing_[chassis.phasing ? "on" : "off"]" + chassis.occupant_message("En":"#f00\">Dis"]abled phasing.") + UpdateButtonIcon() diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index badf0ee4804..4cef3720702 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -1,7 +1,7 @@ /obj/mecha/proc/get_armour_facing(srcdir,adir) var/facing_hit = armour_facings["[srcdir]"]["[adir]"] var/damage_modifier = facing_modifiers[facing_hit] - return damage_modifier + return damage_modifier || 1 //always return non-0 /obj/mecha/proc/take_damage(amount, type="brute", adir = 0, booster_deflection_modifier = 1, booster_damage_modifier = 1) var/facing_modifier = 1 @@ -143,7 +143,7 @@ check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) return -/obj/mecha/blob_act() +/obj/mecha/blob_act(obj/effect/blob/B) take_damage(30, "brute") return diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index a04693ce20f..8084c64a43d 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -52,12 +52,12 @@ /obj/mecha/proc/report_internal_damage() . = "" var/list/dam_reports = list( - "[MECHA_INT_FIRE]" = "INTERNAL FIRE", - "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", - "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", - "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", - "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" - ) + "[MECHA_INT_FIRE]" = "INTERNAL FIRE", + "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", + "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", + "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", + "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" + ) for(var/tflag in dam_reports) var/intdamflag = text2num(tflag) if(internal_damage & intdamflag) @@ -176,7 +176,8 @@ var/a_name = get_access_desc(a) if(!a_name) continue //there's some strange access without a name . += "[a_name] - Add
" - . += "
Finish (Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" + . += "
Finish " + . += "(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" . += "" user << browse(., "window=exosuit_add_access") onclose(user, "exosuit_add_access") @@ -262,7 +263,7 @@ if(href_list["select_equip"]) var/obj/item/mecha_parts/mecha_equipment/equip = filter.getObj("select_equip") - if(equip) + if(equip && equip.selectable) src.selected = equip src.occupant_message("You switch to [equip]") src.visible_message("[src] raises [equip]") diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm new file mode 100644 index 00000000000..7247baac95e --- /dev/null +++ b/code/game/objects/effects/alien_acid.dm @@ -0,0 +1,87 @@ +/* Alien shit! + * Contains: + * effect/acid + */ + + +/* + * Acid + */ +/obj/effect/acid + gender = PLURAL + name = "acid" + desc = "Burbling corrossive stuff." + icon_state = "acid" + density = 0 + opacity = 0 + anchored = 1 + unacidable = 1 + var/atom/target + var/ticks = 0 + var/target_strength = 0 + + +/obj/effect/acid/New(loc, targ) + ..(loc) + target = targ + + //handle APCs and newscasters and stuff nicely + pixel_x = target.pixel_x + pixel_y = target.pixel_y + + if(isturf(target)) //Turfs take twice as long to take down. + target_strength = 640 + else + target_strength = 320 + tick() + + +/obj/effect/acid/proc/tick() + if(!target) + qdel(src) + + ticks++ + + if(ticks >= target_strength) + target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!") + + if(istype(target, /obj/structure/closet)) + var/obj/structure/closet/T = target + T.dump_contents() + qdel(target) + + if(istype(target, /turf/closed/mineral)) + var/turf/closed/mineral/M = target + M.ChangeTurf(M.baseturf) + + if(istype(target, /turf/open/floor)) + var/turf/open/floor/F = target + F.ChangeTurf(F.baseturf) + + if(istype(target, /turf/closed/wall)) + var/turf/closed/wall/W = target + W.dismantle_wall(1) + + else + qdel(target) + + qdel(src) + return + + x = target.x + y = target.y + z = target.z + + switch(target_strength - ticks) + if(480) + visible_message("[target] is holding up against the acid!") + if(320) + visible_message("[target] is being melted by the acid!") + if(160) + visible_message("[target] is struggling to withstand the acid!") + if(80) + visible_message("[target] begins to crumble under the acid!") + + spawn(1) + if(src) + tick() diff --git a/code/game/objects/effects/bump_teleporter.dm b/code/game/objects/effects/bump_teleporter.dm index bb9a34010c9..722f29e9132 100644 --- a/code/game/objects/effects/bump_teleporter.dm +++ b/code/game/objects/effects/bump_teleporter.dm @@ -6,7 +6,7 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list() icon_state = "x2" var/id = null //id of this bump_teleporter. var/id_target = null //id of bump_teleporter which this moves you to. - invisibility = 101 //nope, can't see this + invisibility = INVISIBILITY_ABSTRACT //nope, can't see this anchored = 1 density = 1 opacity = 0 diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 0a627518e15..99f894aa392 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -5,8 +5,11 @@ layer = 16 duration = 25 -/obj/effect/overlay/temp/point/New(loc, set_invis = 0) +/obj/effect/overlay/temp/point/New(atom/target, set_invis = 0) ..() + loc = get_turf(target) + pixel_x = target.pixel_x + pixel_y = target.pixel_y invisibility = set_invis // Used for spray that you spray at walls, tables, hydrovats etc diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 4441b6fe219..54e57af855e 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -208,7 +208,7 @@ qdel(src) -/obj/structure/foamedmetal/blob_act() +/obj/structure/foamedmetal/blob_act(obj/effect/blob/B) qdel(src) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index db576ada67a..f7b79c7b8d0 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -8,7 +8,7 @@ /obj/effect/landmark/New() ..() tag = text("landmark*[]", name) - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT landmarks_list += src switch(name) //some of these are probably obsolete @@ -77,7 +77,7 @@ /obj/effect/landmark/start/New() ..() tag = "start*[name]" - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT start_landmarks_list += src return 1 diff --git a/code/game/objects/effects/manifest.dm b/code/game/objects/effects/manifest.dm index 4b5a2eebb7b..b898b2d9dc3 100644 --- a/code/game/objects/effects/manifest.dm +++ b/code/game/objects/effects/manifest.dm @@ -6,7 +6,7 @@ /obj/effect/manifest/New() - src.invisibility = 101 + src.invisibility = INVISIBILITY_ABSTRACT return /obj/effect/manifest/proc/manifest() diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index c9ce3dcb94d..d39257edbcf 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -106,7 +106,7 @@ if(triggered) return triggered = 1 - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT mineEffect(victim) qdel(src) diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 4550693fa35..0c0b566390a 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -132,6 +132,27 @@ duration = 8 randomdir = 0 +/obj/effect/overlay/temp/gib_animation + icon = 'icons/mob/mob.dmi' + duration = 15 + +/obj/effect/overlay/temp/gib_animation/New(loc, gib_icon) + icon_state = gib_icon + ..() + +/obj/effect/overlay/temp/gib_animation/ex_act(severity) + return //so the overlay isn't deleted by the explosion that gibbed the mob. + +/obj/effect/overlay/temp/gib_animation/animal + icon = 'icons/mob/animal.dmi' + +/obj/effect/overlay/temp/dust_animation + icon = 'icons/mob/mob.dmi' + duration = 15 + +/obj/effect/overlay/temp/dust_animation/New(loc, dust_icon) + icon_state = dust_icon + ..() /obj/effect/overlay/palmtree_r name = "Palm tree" diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index ea28eef5d5c..3dd18ba5420 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -4,7 +4,7 @@ var/affect_ghosts = 0 var/stopper = 1 // stops throwers var/mobs_only = 0 - invisibility = 101 // nope cant see this shit + invisibility = INVISIBILITY_ABSTRACT // nope cant see this shit anchored = 1 /obj/effect/step_trigger/proc/Trigger(atom/movable/A) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1cf35a602b4..1c66b00f13e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -134,7 +134,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s qdel(X) return ..() -/obj/item/blob_act() +/obj/item/blob_act(obj/effect/blob/B) qdel(src) /obj/item/ex_act(severity, target) @@ -247,8 +247,8 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s user << "You put out the fire on [src]." else user << "You burn your hand on [src]!" - var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") - if(affecting.take_damage( 0, 5 )) // 5 burn damage + var/obj/item/bodypart/affecting = H.get_bodypart("[user.hand ? "l" : "r" ]_arm") + if(affecting && affecting.take_damage( 0, 5 )) // 5 burn damage H.update_damage_overlays(0) H.updatehealth() return @@ -427,7 +427,10 @@ obj/item/proc/item_action_slot_check(slot, mob/user) /obj/item/proc/eyestab(mob/living/carbon/M, mob/living/carbon/user) var/is_human_victim = 0 + var/obj/item/bodypart/affecting = M.get_bodypart("head") if(ishuman(M)) + if(!affecting) //no head! + return is_human_victim = 1 var/mob/living/carbon/human/H = M if((H.head && H.head.flags_cover & HEADCOVERSEYES) || \ @@ -467,7 +470,6 @@ obj/item/proc/item_action_slot_check(slot, mob/user) ) if(is_human_victim) var/mob/living/carbon/human/U = M - var/obj/item/organ/limb/affecting = U.get_organ("head") if(affecting.take_damage(7)) U.update_damage_overlays(0) @@ -572,3 +574,6 @@ obj/item/proc/item_action_slot_check(slot, mob/user) /obj/item/proc/is_sharp() return sharpness + +/obj/item/proc/can_dismember() + return sharpness && w_class >= 3 \ No newline at end of file diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index efb3b8c1635..56e99c069fd 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -337,3 +337,14 @@ found += U found |= F return found + + + +//Blueprint Subtypes + +/obj/item/areaeditor/blueprints/cyborg + name = "station schematics" + desc = "A digital copy of the station blueprints stored in your memory." + icon = 'icons/obj/items.dmi' + icon_state = "blueprints" + fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from the station." \ No newline at end of file diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index 1e84a7556d8..fb786dcf52a 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/body_egg +/obj/item/organ/body_egg name = "body egg" desc = "All slimy and yuck." icon_state = "innards" @@ -6,16 +6,16 @@ zone = "chest" slot = "parasite_egg" -/obj/item/organ/internal/body_egg/on_find(mob/living/finder) +/obj/item/organ/body_egg/on_find(mob/living/finder) ..() finder << "You found an unknown alien organism in [owner]'s [zone]!" -/obj/item/organ/internal/body_egg/New(loc) +/obj/item/organ/body_egg/New(loc) if(iscarbon(loc)) src.Insert(loc) return ..() -/obj/item/organ/internal/body_egg/Insert(var/mob/living/carbon/M, special = 0) +/obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0) ..() owner.status_flags |= XENO_HOST SSobj.processing |= src @@ -23,7 +23,7 @@ spawn(0) AddInfectionImages(owner) -/obj/item/organ/internal/body_egg/Remove(var/mob/living/carbon/M, special = 0) +/obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0) SSobj.processing.Remove(src) if(owner) owner.status_flags &= ~(XENO_HOST) @@ -32,7 +32,7 @@ RemoveInfectionImages(owner) ..() -/obj/item/organ/internal/body_egg/process() +/obj/item/organ/body_egg/process() if(!owner) return if(!(src in owner.internal_organs)) @@ -40,15 +40,15 @@ return egg_process() -/obj/item/organ/internal/body_egg/proc/egg_process() +/obj/item/organ/body_egg/proc/egg_process() return -/obj/item/organ/internal/body_egg/proc/RefreshInfectionImage() +/obj/item/organ/body_egg/proc/RefreshInfectionImage() RemoveInfectionImages() AddInfectionImages() -/obj/item/organ/internal/body_egg/proc/AddInfectionImages() +/obj/item/organ/body_egg/proc/AddInfectionImages() return -/obj/item/organ/internal/body_egg/proc/RemoveInfectionImages() +/obj/item/organ/body_egg/proc/RemoveInfectionImages() return \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 1e22c43a028..c101d2fbb61 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -195,15 +195,22 @@ if(C.client) C.blur_eyes(3) C.blind_eyes(1) - if(C.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS. - C.confused = max(C.confused, 3) - C.Weaken(3) + if(C.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS. + C.confused = max(C.confused, 3) + C.Weaken(3) if(ishuman(C)) var/mob/living/carbon/human/H = C H.lip_style = "spray_face" H.lip_color = paint_color H.update_body() + // Caution, spray cans contain inflammable substances + if(C.reagents) + C.reagents.add_reagent("welding_fuel", 5) + C.reagents.add_reagent("ethanol", 5) + C.reagents.reaction(C, VAPOR, 10) + uses = max(0,uses-10) + if(istype(target, /obj/structure/window)) if(uses) target.color = paint_color @@ -232,4 +239,27 @@ ..() if(G) paint_color = G.color_hex - update_icon() \ No newline at end of file + update_icon() + +/obj/item/toy/crayon/spraycan/borg + desc = "A metallic container containing shiny paint." + // Use depletion of uses to determine what the energy cost is + uses = 100 + +/obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity) + ..() + if(!isrobot(user)) + return FALSE + var/mob/living/silicon/robot/borgy = user + + var/starting_uses = initial(uses) + var/diff = starting_uses - uses + if(diff) + uses = starting_uses + // 25 is our cost per unit of paint, making it cost 25 energy per + // normal tag, 50 per window, and 250 per attack + var/cost = diff * 25 + // Cyborgs shouldn't be able to use modules without a cell. But if they do + // it's free. + if(borgy.cell) + borgy.cell.use(cost) diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 0b20a76264e..48cf67cc93b 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -7,6 +7,7 @@ /obj/item/toy/carpplushie/dehy_carp var/mob/owner = null //Carp doesn't attack owner, set when using in hand var/owned = 0 //Boolean, no owner to begin with + var/mobtype = /mob/living/simple_animal/hostile/carp //So admins can change what mob spawns via var fuckery //Attack self /obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user) @@ -36,16 +37,16 @@ //Wait for animation to end sleep(6) //Make space carp - var/mob/living/simple_animal/hostile/carp/C = new /mob/living/simple_animal/hostile/carp(get_turf(src)) + var/mob/living/M = new mobtype(get_turf(src)) //Make carp non-hostile to user, and their allies if(owner) var/list/factions = owner.faction for(var/F in factions) if(F == "neutral") factions -= F - C.faction = factions - if (!owner || owner.faction != C.faction) + M.faction = factions + if (!owner || owner.faction != M.faction) visible_message("You have a bad feeling about this.") //welcome to the hostile carp enjoy your die else - visible_message("The newly grown carp looks up at you with friendly eyes.") + visible_message("The newly grown [M.name] looks up at you with friendly eyes.") qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 6ec1518cd18..8390649eaa2 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -71,7 +71,7 @@ return if(ishuman(user)) var/mob/living/carbon/human/H = user - if(H.dna.check_mutation(HULK) || NOGUNS in H.dna.species.specflags) + if(H.dna.check_mutation(HULK) || (NOGUNS in H.dna.species.specflags)) user << "Your fingers can't press the button!" return diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index cd473f590e7..6f989a92ac6 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -107,6 +107,9 @@ src.pai = personality src.overlays += "pai-null" + playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1) + audible_message("\The [src] plays a cheerful startup noise!") + /obj/item/device/paicard/proc/removePersonality() src.pai = null src.overlays.Cut() diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 90ffa647c49..798a8ce3614 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -52,7 +52,7 @@ MASS SPECTROMETER var/mob/living/L = locate() in O - if(O.invisibility == 101) + if(O.invisibility == INVISIBILITY_MAXIMUM) O.invisibility = 0 if(L) flick_sonar(O) @@ -60,7 +60,7 @@ MASS SPECTROMETER if(O && O.loc) var/turf/U = O.loc if(U.intact) - O.invisibility = 101 + O.invisibility = INVISIBILITY_MAXIMUM else if(L) flick_sonar(O) @@ -148,7 +148,7 @@ MASS SPECTROMETER user << "\tSubject appears to have [M.getCloneLoss() > 30 ? "severe" : "minor"] cellular damage." if (M.reagents && M.reagents.get_reagent_amount("epinephrine")) user << "\tBloodstream analysis located [M.reagents:get_reagent_amount("epinephrine")] units of rejuvenation chemicals." - if (M.getBrainLoss() >= 100 || !M.getorgan(/obj/item/organ/internal/brain)) + if (M.getBrainLoss() >= 100 || !M.getorgan(/obj/item/organ/brain)) user << "\tSubject brain function is non-existant." else if (M.getBrainLoss() >= 60) user << "\tSevere brain damage detected. Subject likely to have mental retardation." @@ -158,11 +158,11 @@ MASS SPECTROMETER // Organ damage report if(istype(M, /mob/living/carbon/human) && mode == 1) var/mob/living/carbon/human/H = M - var/list/damaged = H.get_damaged_organs(1,1) + var/list/damaged = H.get_damaged_bodyparts(1,1) if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0) user << "\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]" - for(var/obj/item/organ/limb/org in damaged) - user << "\t\t[capitalize(org.getDisplayName())]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]" + for(var/obj/item/bodypart/org in damaged) + user << "\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]" // Species and body temperature if(ishuman(M)) @@ -196,7 +196,7 @@ MASS SPECTROMETER user << "Blood level [blood_percent] %, [blood_volume] cl, type: [blood_type]" var/implant_detect - for(var/obj/item/organ/internal/cyberimp/CI in H.internal_organs) + for(var/obj/item/organ/cyberimp/CI in H.internal_organs) if(CI.status == ORGAN_ROBOTIC) implant_detect += "[H.name] is modified with a [CI.name].
" if(implant_detect) diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index e9b23a5f450..b3335fd4898 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -28,6 +28,9 @@ desc = "\"Top Secret\" documents detailing sensitive Syndicate operational intelligence. These documents are verified with a blue wax seal." icon_state = "docs_blue" +/obj/item/documents/syndicate/mining + desc = "\"Top Secret\" documents detailing Syndicate plasma mining operations." + /obj/item/documents/photocopy desc = "A copy of some top-secret documents. Nobody will notice they aren't the originals... right?" var/forgedseal = 0 @@ -37,6 +40,9 @@ ..() if(copy) copy_type = copy.type + if(istype(copy, /obj/item/documents/photocopy)) // Copy Of A Copy Of A Copy + var/obj/item/documents/photocopy/C = copy + copy_type = C.copy_type /obj/item/documents/photocopy/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/toy/crayon/red) || istype(O, /obj/item/toy/crayon/blue)) diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 3be12d0b94f..42e6d7f7280 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -5,31 +5,37 @@ icon_state = "blank" flags = CONDUCT slot_flags = SLOT_BELT + var/body_zone /obj/item/robot_parts/l_arm name = "cyborg left arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_arm" + body_zone = "l_arm" /obj/item/robot_parts/r_arm name = "cyborg right arm" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_arm" + body_zone = "r_arm" /obj/item/robot_parts/l_leg name = "cyborg left leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "l_leg" + body_zone = "l_leg" /obj/item/robot_parts/r_leg name = "cyborg right leg" desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case." icon_state = "r_leg" + body_zone = "r_leg" /obj/item/robot_parts/chest name = "cyborg torso" desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell." icon_state = "chest" + body_zone = "chest" var/wired = 0 var/obj/item/weapon/stock_parts/cell/cell = null @@ -37,6 +43,7 @@ name = "cyborg head" desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals." icon_state = "head" + body_zone = "head" var/obj/item/device/assembly/flash/handheld/flash1 = null var/obj/item/device/assembly/flash/handheld/flash2 = null diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index b1938b51325..eb1a1d7abd0 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -29,8 +29,13 @@ user << "You don't know how to apply \the [src] to [M]!" return 1 + var/obj/item/bodypart/affecting if(ishuman(M)) var/mob/living/carbon/human/H = M + affecting = H.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) //Missing limb? + user << "[H] doesn't have \a [parse_zone(user.zone_selected)]!" + return if(stop_bleeding) if(H.bleedsuppress) user << "[H]'s bleeding is already bandaged!" @@ -39,6 +44,7 @@ user << "[H] isn't bleeding!" return + if(isliving(M)) if(!M.can_inject(user, 1)) return @@ -71,7 +77,10 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected)) + affecting = H.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) //Missing limb? + user << "[H] doesn't have \a [parse_zone(user.zone_selected)]!" + return if(stop_bleeding) if(!H.bleedsuppress) //so you can't stack bleed suppression H.suppress_bloodloss(stop_bleeding) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 3e12f0d4954..3e9329e541d 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -317,8 +317,8 @@ if(!H.gloves && !(PIERCEIMMUNE in H.dna.species.specflags)) // golems, etc H << "[src] cuts into your hand!" var/organ = (H.hand ? "l_" : "r_") + "arm" - var/obj/item/organ/limb/affecting = H.get_organ(organ) - if(affecting.take_damage(force / 2)) + var/obj/item/bodypart/affecting = H.get_bodypart(organ) + if(affecting && affecting.take_damage(force / 2)) H.update_damage_overlays(0) else if(ismonkey(user)) var/mob/living/carbon/monkey/M = user @@ -348,9 +348,13 @@ if(ishuman(AM)) var/mob/living/carbon/human/H = AM if(PIERCEIMMUNE in H.dna.species.specflags) - return 0 + return + var/picked_def_zone = pick("l_leg", "r_leg") + var/obj/item/bodypart/O = H.get_bodypart(picked_def_zone) + if(!istype(O)) + return if(!H.shoes) - H.apply_damage(5,BRUTE,(pick("l_leg", "r_leg"))) + H.apply_damage(5, BRUTE, picked_def_zone) H.Weaken(3) if(cooldown < world.time - 10) //cooldown to avoid message spam. H.visible_message("[H] steps in the broken glass!", \ diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 9f43e348474..f2b9bcd472b 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -135,6 +135,14 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ icon_state = "sinew" origin_tech = "biotech=4" + +var/global/list/datum/stack_recipe/sinew_recipes = list ( \ + new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \ + ) + +/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null) + recipes = sinew_recipes + return ..() /* * Plates */ @@ -149,6 +157,16 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \ w_class = 3 layer = 4 +/obj/item/stack/sheet/animalhide/ashdrake + name = "ash drake hide" + desc = "The strong, scaled hide of an ash drake." + icon = 'icons/obj/mining.dmi' + icon_state = "dragon_hide" + singular_name = "drake plate" + flags = NOBLUDGEON + w_class = 3 + layer = 4 + //Step one - dehairing. diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6c9b9254103..a12c51ed506 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -42,6 +42,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2), \ new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2), \ new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2), \ + new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2), \ new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1), \ null, \ new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 13d0a5c1e44..490fb78f762 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -12,7 +12,7 @@ var/turf_type = null var/mineralType = null -/obj/tiem/stack/tile/New(loc, amount) +/obj/item/stack/tile/New(loc, amount) ..() pixel_x = rand(-3, 3) pixel_y = rand(-3, 3) //randomize a little @@ -121,6 +121,28 @@ /obj/item/stack/tile/noslip/thirty amount = 30 +//Pod floor +/obj/item/stack/tile/pod + name = "pod floor tile" + singular_name = "pod floor tile" + desc = "A grooved floor tile." + icon_state = "tile_pod" + turf_type = /turf/open/floor/pod + +/obj/item/stack/tile/pod/light + name = "light pod floor tile" + singular_name = "light pod floor tile" + desc = "A lightly colored grooved floor tile." + icon_state = "tile_podlight" + turf_type = /turf/open/floor/pod/light + +/obj/item/stack/tile/pod/dark + name = "dark pod floor tile" + singular_name = "dark pod floor tile" + desc = "A darkly colored grooved floor tile." + icon_state = "tile_poddark" + turf_type = /turf/open/floor/pod/dark + //Plasteel (normal) /obj/item/stack/tile/plasteel name = "floor tile" diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 3b13f07ac98..f7ffd73e691 100755 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -800,7 +800,6 @@ return var/choice = null if(cards.len == 0) - src.icon_state = "deck_[deckstyle]_empty" user << "There are no more cards to draw!" return var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc) @@ -815,12 +814,17 @@ H.pickup(user) user.put_in_hands(H) user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.") + update_icon() + +/obj/item/toy/cards/deck/update_icon() if(cards.len > 26) - src.icon_state = "deck_[deckstyle]_full" + icon_state = "deck_[deckstyle]_full" else if(cards.len > 10) - src.icon_state = "deck_[deckstyle]_half" - else if(cards.len > 1) - src.icon_state = "deck_[deckstyle]_low" + icon_state = "deck_[deckstyle]_half" + else if(cards.len > 0) + icon_state = "deck_[deckstyle]_low" + else if(cards.len == 0) + icon_state = "deck_[deckstyle]_empty" /obj/item/toy/cards/deck/attack_self(mob/user) if(cooldown < world.time - 50) @@ -841,12 +845,7 @@ qdel(SC) else user << "You can't mix cards from other decks!" - if(cards.len > 26) - icon_state = "deck_[deckstyle]_full" - else if(cards.len > 10) - icon_state = "deck_[deckstyle]_half" - else if(cards.len > 1) - icon_state = "deck_[deckstyle]_low" + update_icon() else if(istype(I, /obj/item/toy/cards/cardhand)) var/obj/item/toy/cards/cardhand/CH = I if(CH.parentdeck == src) @@ -858,12 +857,7 @@ qdel(CH) else user << "You can't mix cards from other decks!" - if(cards.len > 26) - icon_state = "deck_[deckstyle]_full" - else if(cards.len > 10) - icon_state = "deck_[deckstyle]_half" - else if(cards.len > 1) - icon_state = "deck_[deckstyle]_low" + update_icon() else return ..() diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index e515882d11d..bdc94dd94e6 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -7,7 +7,7 @@ RCD /obj/item/weapon/rcd name = "rapid-construction-device (RCD)" desc = "A device used to rapidly build and deconstruct walls and floors." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "rcd" opacity = 0 density = 0 diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index 2f0a38ff8c7..a8dc987f18b 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -123,7 +123,7 @@ var/global/list/RPD_recipes=list( /obj/item/weapon/pipe_dispenser name = "Rapid Piping Device (RPD)" desc = "A device used to rapidly pipe things." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "rpd" flags = CONDUCT force = 10 diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 0ec9b84479c..ba891f89d78 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -6,7 +6,7 @@ RSF /obj/item/weapon/rsf name = "\improper Rapid-Service-Fabricator" desc = "A device used to rapidly deploy service items." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "rcd" opacity = 0 density = 0 @@ -111,4 +111,4 @@ RSF else matter-- user << "The RSF now holds [matter]/30 fabrication-units." - desc = "A RSF. It currently holds [matter]/30 fabrication-units." \ No newline at end of file + desc = "A RSF. It currently holds [matter]/30 fabrication-units." diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm index abdc6c16e78..8dcd492ef28 100644 --- a/code/game/objects/items/weapons/airlock_painter.dm +++ b/code/game/objects/items/weapons/airlock_painter.dm @@ -42,7 +42,7 @@ return 1 /obj/item/weapon/airlock_painter/suicide_act(mob/user) - var/obj/item/organ/internal/lungs/L = user.getorganslot("lungs") + var/obj/item/organ/lungs/L = user.getorganslot("lungs") if(can_use(user) && L) user.visible_message("[user] is inhaling toner from \the [name]! It looks like \he's trying to commit suicide.") diff --git a/code/game/objects/items/weapons/chrono_eraser.dm b/code/game/objects/items/weapons/chrono_eraser.dm index b325e95844f..71542183b71 100644 --- a/code/game/objects/items/weapons/chrono_eraser.dm +++ b/code/game/objects/items/weapons/chrono_eraser.dm @@ -259,7 +259,7 @@ /obj/effect/chrono_field/ex_act() return -/obj/effect/chrono_field/blob_act() +/obj/effect/chrono_field/blob_act(obj/effect/blob/B) return diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm index 382bc1cb7ed..8ed86c391dc 100644 --- a/code/game/objects/items/weapons/cosmetics.dm +++ b/code/game/objects/items/weapons/cosmetics.dm @@ -124,7 +124,7 @@ var/mob/living/carbon/human/H = M var/location = user.zone_selected if(location == "mouth") - if(!(H.dna.species.specflags & FACEHAIR)) + if(!(FACEHAIR in H.dna.species.specflags)) user << "There is no facial hair to shave!" return if(!get_location_accessible(H, location)) @@ -152,7 +152,7 @@ shave(H, location) else if(location == "head") - if(!(H.dna.species.specflags & HAIR)) + if(!(HAIR in H.dna.species.specflags)) user << "There is no hair to shave!" return if(!get_location_accessible(H, location)) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index bc8aec98766..9e5ecd557b7 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -499,14 +499,14 @@ failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." else if (tplus > tlimit) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." - else if (!H.getorgan(/obj/item/organ/internal/heart)) + else if (!H.getorgan(/obj/item/organ/heart)) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's heart is missing." else if(total_burn >= 180 || total_brute >= 180) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Further attempts futile." else if(H.get_ghost()) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful." else - var/obj/item/organ/internal/brain/BR = H.getorgan(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(!BR || BR.damaged_brain) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain is missing or damaged beyond point of no return. Further attempts futile." diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index b766085e2b9..1b784656308 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -4,20 +4,19 @@ name = "C-4" desc = "Used to put holes in specific areas without too much extra hole." gender = PLURAL - icon = 'icons/obj/assemblies.dmi' + icon = 'icons/obj/grenade.dmi' icon_state = "plastic-explosive0" item_state = "plasticx" flags = NOBLUDGEON w_class = 2 origin_tech = "syndicate=2" var/timer = 10 - var/atom/target = null var/open_panel = 0 - var/image_overlay = null + parent_type = /obj/item/weapon/grenade/plastic/c4 /obj/item/weapon/c4/New() wires = new /datum/wires/explosive/c4(src) - image_overlay = image('icons/obj/assemblies.dmi', "plastic-explosive2") + image_overlay = image('icons/obj/grenade.dmi', "plastic-explosive2") ..() /obj/item/weapon/c4/Destroy() @@ -48,7 +47,7 @@ message_admins("[key_name(user)] suicided with [src.name] at ([x],[y],[z])") sleep(10) explode(get_turf(user)) - user.gib(no_brain = 1) + user.gib(1, 1) /obj/item/weapon/c4/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/screwdriver)) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 54c322dee79..e7d18f91de5 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -267,13 +267,15 @@ var/total_volume = 0 for(var/obj/item/weapon/reagent_containers/RC in beakers) total_volume += RC.reagents.total_volume - + if(!total_volume) + qdel(src) + qdel(nadeassembly) + return var/fraction = unit_spread/total_volume var/datum/reagents/reactants = new(unit_spread) reactants.my_atom = src for(var/obj/item/weapon/reagent_containers/RC in beakers) RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1) - chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale) if(nadeassembly) @@ -283,15 +285,12 @@ var/area/A = get_area(T) message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") - + else + addtimer(src, "prime", det_time) var/turf/DT = get_turf(src) var/area/DA = get_area(DT) log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])") - if(total_volume < unit_spread) // If that was the last detonation, delete the grenade to prevent reusing it. Keep in mind, an explosion might destroy the grenade before it can detonate again anyways. - update_mob() - qdel(src) - diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm new file mode 100644 index 00000000000..f4ec3cff3e5 --- /dev/null +++ b/code/game/objects/items/weapons/grenades/plastic.dm @@ -0,0 +1,180 @@ +/obj/item/weapon/grenade/plastic + name = "plastic explosive" + desc = "Used to put holes in specific areas without too much extra hole." + icon_state = "plastic-explosive0" + item_state = "plastic-explosive" + flags = NOBLUDGEON + det_time = 10 + display_timer = 0 + var/atom/target = null + var/image_overlay = null + var/obj/item/device/assembly_holder/nadeassembly = null + var/assemblyattacher + +/obj/item/weapon/grenade/plastic/New() + image_overlay = image('icons/obj/grenade.dmi', "[item_state]2") + ..() + +/obj/item/weapon/grenade/plastic/Destroy() + qdel(nadeassembly) + nadeassembly = null + target = null + ..() + +/obj/item/weapon/grenade/plastic/attackby(obj/item/I, mob/user, params) + if(!nadeassembly && istype(I, /obj/item/device/assembly_holder)) + var/obj/item/device/assembly_holder/A = I + if(!user.unEquip(I)) + return ..() + nadeassembly = A + A.master = src + A.loc = src + assemblyattacher = user.ckey + user << "You add [A] to the [name]." + playsound(src, 'sound/weapons/tap.ogg', 20, 1) + update_icon() + return + if(nadeassembly && istype(I, /obj/item/weapon/wirecutters)) + playsound(src, 'sound/items/Wirecutter.ogg', 20, 1) + nadeassembly.loc = get_turf(src) + nadeassembly.master = null + nadeassembly = null + update_icon() + return + ..() + +//assembly stuff +/obj/item/weapon/grenade/plastic/receive_signal() + prime() + +/obj/item/weapon/grenade/plastic/Crossed(atom/movable/AM) + if(nadeassembly) + nadeassembly.Crossed(AM) + +/obj/item/weapon/grenade/plastic/on_found(mob/finder) + if(nadeassembly) + nadeassembly.on_found(finder) + +/obj/item/weapon/grenade/plastic/attack_self(mob/user) + if(nadeassembly) + nadeassembly.attack_self(user) + return + var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num + if(user.get_active_hand() == src) + newtime = Clamp(newtime, 10, 60000) + det_time = newtime + user << "Timer set for [det_time] seconds." + +/obj/item/weapon/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag) + if (!flag) + return + if (istype(AM, /mob/living/carbon)) + return + user << "You start planting the [src]. The timer is set to [det_time]..." + + if(do_after(user, 50, target = AM)) + if(!user.unEquip(src)) + return + src.target = AM + loc = null + + message_admins("[key_name_admin(user)](?) (FLW) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) + log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse") + + target.overlays += image_overlay + if(!nadeassembly) + user << "You plant the bomb. Timer counting down from [det_time]." + addtimer(src, "prime", det_time*10) + +/obj/item/weapon/grenade/plastic/suicide_act(mob/user) + message_admins("[key_name_admin(user)](?) (FLW) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name(user)] suicided with [src.name] at ([user.x],[user.y],[user.z])") + user.visible_message("[user] activates the [src.name] and holds it above \his head! It looks like \he's going out with a bang!") + var/message_say = "FOR NO RAISIN!" + if(user.mind) + if(user.mind.special_role) + var/role = lowertext(user.mind.special_role) + if(role == "traitor" || role == "syndicate") + message_say = "FOR THE SYNDICATE!" + else if(role == "changeling") + message_say = "FOR THE HIVE!" + else if(role == "cultist") + message_say = "FOR NAR-SIE!" + else if(role == "revolutionary" || role == "head revolutionary") + message_say = "VIVA LA REVOLUTION!" + else if(user.mind.gang_datum) + message_say = "[uppertext(user.mind.gang_datum.name)] RULES!" + user.say(message_say) + target = user + sleep(10) + prime() + user.gib(no_brain = 1) + +/obj/item/weapon/grenade/plastic/update_icon() + if(nadeassembly) + icon_state = "[item_state]1" + else + icon_state = "[item_state]0" + +////////////////////////// +///// The Explosives ///// +////////////////////////// + +/obj/item/weapon/grenade/plastic/c4 + name = "C4" + desc = "Used to put holes in specific areas without too much extra hole. A saboteurs favourite." + +/obj/item/weapon/grenade/plastic/c4/prime() + var/turf/location + if(target) + if(!qdeleted(target)) + location = get_turf(target) + target.overlays -= image_overlay + else + location = get_turf(src) + if(location) + location.ex_act(2, target) + explosion(location,0,0,3) + if(istype(target, /mob)) + var/mob/M = target + M.gib() + qdel(src) + +// X4 is an upgraded directional variant of c4 which is relatively safe to be standing next to. And much less safe to be standing on the other side of. +// C4 is intended to be used for infiltration, and destroying tech. X4 is intended to be used for heavy breaching and tight spaces. +// Intended to replace C4 for nukeops, and to be a randomdrop in surplus/random traitor purchases. + +/obj/item/weapon/grenade/plastic/x4 + name = "X4" + desc = "A specialized shaped high explosive breaching charge. Designed to be safer for the user, and less so, for the wall." + var/aim_dir = NORTH + icon_state = "plasticx40" + item_state = "plasticx4" + +/obj/item/weapon/grenade/plastic/x4/prime() + var/turf/location + if(target) + if(!qdeleted(target)) + location = get_turf(target) + target.overlays -= image_overlay + else + location = get_turf(src) + if(location) + if(istype(loc, /obj/item/weapon/twohanded/spear)) + explosion(location, 0, 2, 3) + else if(target.density) + var/turf/T = get_step(location, aim_dir) + explosion(get_step(T, aim_dir),0,0,3) + explosion(T,0,2,0) + location.ex_act(2, target) + else + explosion(location, 0, 2, 3) + location.ex_act(2, target) + if(istype(target, /mob)) + var/mob/M = target + M.gib() + qdel(src) + +/obj/item/weapon/grenade/plastic/x4/afterattack(atom/movable/AM, mob/user, flag) + aim_dir = get_dir(user,AM) + ..() diff --git a/code/game/objects/items/weapons/grenades/syndieminibomb.dm b/code/game/objects/items/weapons/grenades/syndieminibomb.dm index e49edb574fe..9fe9e1fb04e 100644 --- a/code/game/objects/items/weapons/grenades/syndieminibomb.dm +++ b/code/game/objects/items/weapons/grenades/syndieminibomb.dm @@ -29,7 +29,7 @@ /obj/item/weapon/grenade/gluon desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also likely wet any nearby floors." - name = "gluon grenade" + name = "gluon frag grenade" icon = 'icons/obj/grenade.dmi' icon_state = "bluefrag" item_state = "flashbang" @@ -44,7 +44,8 @@ for(var/turf/T in view(freeze_range,loc)) if(istype(T,/turf/open/floor)) var/turf/open/floor/F = T - F.wet = TURF_WET_ICE + F.wet = TURF_WET_PERMAFROST + addtimer(F, "MakeDry", rand(3000, 3100), 0, TURF_WET_PERMAFROST) for(var/mob/living/carbon/L in T) L.adjustStaminaLoss(stamina_damage) L.bodytemperature -= 230 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index aa0f83182a8..103e0b3f07c 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -30,21 +30,24 @@ return if(!C.handcuffed) - C.visible_message("[user] is trying to put [src.name] on [C]!", \ - "[user] is trying to put [src.name] on [C]!") + if(C.get_num_arms() >= 2) + C.visible_message("[user] is trying to put [src.name] on [C]!", \ + "[user] is trying to put [src.name] on [C]!") - playsound(loc, cuffsound, 30, 1, -2) - if(do_mob(user, C, 30)) - apply_cuffs(C,user) - user << "You handcuff [C]." - if(istype(src, /obj/item/weapon/restraints/handcuffs/cable)) - feedback_add_details("handcuffs","C") + playsound(loc, cuffsound, 30, 1, -2) + if(do_mob(user, C, 30) && C.get_num_arms() >= 2) + apply_cuffs(C,user) + user << "You handcuff [C]." + if(istype(src, /obj/item/weapon/restraints/handcuffs/cable)) + feedback_add_details("handcuffs","C") + else + feedback_add_details("handcuffs","H") + + add_logs(user, C, "handcuffed") else - feedback_add_details("handcuffs","H") - - add_logs(user, C, "handcuffed") + user << "You fail to handcuff [C]!" else - user << "You fail to handcuff [C]!" + user << "[C] doesn't have two hands..." /obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user, var/dispense = 0) if(target.handcuffed) @@ -67,6 +70,15 @@ qdel(src) return +/obj/item/weapon/restraints/handcuffs/sinew + name = "sinew restraints" + desc = "A pair of restraints fashioned from long strands of flesh." + icon = 'icons/obj/mining.dmi' + icon_state = "sinewcuff" + item_state = "sinewcuff" + breakouttime = 300 //Deciseconds = 30s + cuffsound = 'sound/weapons/cablecuff.ogg' + /obj/item/weapon/restraints/handcuffs/cable name = "cable restraints" desc = "Looks like some cables tied together. Could be used to tie something up." @@ -96,9 +108,11 @@ /obj/item/weapon/restraints/handcuffs/cable/red icon_state = "cuff_red" + item_state = "coil_red" /obj/item/weapon/restraints/handcuffs/cable/yellow icon_state = "cuff_yellow" + item_state = "coil_yellow" /obj/item/weapon/restraints/handcuffs/cable/blue icon_state = "cuff_blue" @@ -106,18 +120,23 @@ /obj/item/weapon/restraints/handcuffs/cable/green icon_state = "cuff_green" + item_state = "coil_green" /obj/item/weapon/restraints/handcuffs/cable/pink icon_state = "cuff_pink" + item_state = "coil_pink" /obj/item/weapon/restraints/handcuffs/cable/orange icon_state = "cuff_orange" + item_state = "coil_orange" /obj/item/weapon/restraints/handcuffs/cable/cyan icon_state = "cuff_cyan" + item_state = "coil_cyan" /obj/item/weapon/restraints/handcuffs/cable/white icon_state = "cuff_white" + item_state = "coil_white" /obj/item/weapon/restraints/handcuffs/alien icon_state = "handcuffAlien" @@ -182,6 +201,7 @@ name = "zipties" desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use." icon_state = "cuff_white" + item_state = "coil_white" materials = list() breakouttime = 450 //Deciseconds = 45s trashtype = /obj/item/weapon/restraints/handcuffs/cable/zipties/used @@ -245,7 +265,7 @@ snap = 1 if(!C.lying) def_zone = pick("l_leg", "r_leg") - if(!C.legcuffed) //beartrap can't cuff your leg if there's already a beartrap or legcuffs. + if(!C.legcuffed && C.get_num_legs() >= 2) //beartrap can't cuff your leg if there's already a beartrap or legcuffs, or you don't have two legs. C.legcuffed = src src.loc = C C.update_inv_legcuffed() @@ -297,7 +317,7 @@ if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed, return//abort var/mob/living/carbon/C = hit_atom - if(!C.legcuffed) + if(!C.legcuffed && C.get_num_legs() >= 2) visible_message("\The [src] ensnares [C]!") C.legcuffed = src src.loc = C @@ -311,4 +331,4 @@ desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody." icon_state = "bola_r" breakouttime = 70 - weaken = 1 \ No newline at end of file + weaken = 1 diff --git a/code/game/objects/items/weapons/holosign_creator.dm b/code/game/objects/items/weapons/holosign_creator.dm index 4c2288041bb..97a9278a63d 100644 --- a/code/game/objects/items/weapons/holosign_creator.dm +++ b/code/game/objects/items/weapons/holosign_creator.dm @@ -25,7 +25,6 @@ var/obj/effect/overlay/holograph/H = locate(holosign_type) in T if(H) user << "You use [src] to deactivate [H]." - signs.Remove(H) qdel(H) else if(!is_blocked_turf(T)) //can't put holograms on a tile that has dense stuff @@ -44,8 +43,7 @@ return if(is_blocked_turf(T)) //don't try to sneak dense stuff on our tile during the wait. return - H = new holosign_type(get_turf(target)) - signs += H + H = new holosign_type(get_turf(target), src) user << "You create \a [H] with [src]." else user << "[src] is projecting at max capacity!" @@ -55,10 +53,8 @@ /obj/item/weapon/holosign_creator/attack_self(mob/user) if(signs.len) - var/list/L = signs.Copy() - for(var/sign in L) - qdel(sign) - signs -= sign + for(var/H in signs) + qdel(H) user << "You clear all active holograms." @@ -83,12 +79,25 @@ icon = 'icons/effects/effects.dmi' anchored = 1 var/holo_integrity = 1 + var/obj/item/weapon/holosign_creator/projector + +/obj/effect/overlay/holograph/New(loc, source_projector) + if(source_projector) + projector = source_projector + projector.signs += src + ..() + +/obj/effect/overlay/holograph/Destroy() + if(projector) + projector.signs -= src + projector = null + return ..() /obj/effect/overlay/holograph/attacked_by(obj/item/I, mob/user) ..() take_damage(I.force * 0.5, I.damtype) -/obj/effect/overlay/holograph/blob_act() +/obj/effect/overlay/holograph/blob_act(obj/effect/blob/B) qdel(src) /obj/effect/overlay/holograph/attack_animal(mob/living/simple_animal/M) @@ -103,6 +112,7 @@ attack_generic(1, user) /obj/effect/overlay/holograph/mech_melee_attack(obj/mecha/M) + M.do_attack_animation(src) playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1) visible_message("[M.name] has hit [src].") qdel(src) diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm index b27f147292c..e3562f526c1 100644 --- a/code/game/objects/items/weapons/implants/implant_explosive.dm +++ b/code/game/objects/items/weapons/implants/implant_explosive.dm @@ -40,7 +40,7 @@ if(delay <= 7) explosion(src,heavy,medium,weak,weak, flame_range = weak) if(imp_in) - imp_in.gib(no_brain = 1) + imp_in.gib(1) qdel(src) return timed_explosion() @@ -72,7 +72,7 @@ sleep(delay/4) explosion(src,heavy,medium,weak,weak, flame_range = weak) if(imp_in) - imp_in.gib(no_brain = 1) + imp_in.gib(1) qdel(src) /obj/item/weapon/implant/explosive/macro diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 475f602428d..5f33b5a192d 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -93,7 +93,7 @@ /obj/item/weapon/melee/classic_baton/telescopic/suicide_act(mob/user) var/mob/living/carbon/human/H = user - var/obj/item/organ/internal/brain/B = H.getorgan(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/B = H.getorgan(/obj/item/organ/brain) user.visible_message("[user] stuffs the [src] up their nose and presses the 'extend' button! It looks like they're trying to clear their mind.") if(!on) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 0110a6ac2cf..3cab28cd5f8 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -280,7 +280,7 @@ /obj/item/weapon/storage/backpack/satchel_flat/hide(var/intact) if(intact) - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM anchored = 1 //otherwise you can start pulling, cover it, and drag around an invisible backpack. icon_state = "[initial(icon_state)]2" else @@ -484,9 +484,15 @@ ..() contents = list() for(var/i in 1 to 10) - new /obj/item/weapon/c4(src) + new /obj/item/weapon/grenade/plastic/c4(src) return +/obj/item/weapon/storage/backpack/dufflebag/syndie/x4/New() + ..() + contents = list() + for(var/i in 1 to 3) + new /obj/item/weapon/grenade/plastic/x4(src) + /obj/item/weapon/storage/backpack/dufflebag/syndie/firestarter desc = "A large dufflebag containing New Russian pyro backpack sprayer, a pistol, a pipebomb, fireproof hardsuit, ammo, and other equipment." diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 1cf063e31a2..8b4549cc406 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -127,6 +127,7 @@ storage_slots = 5 w_class = 4 max_w_class = 4 //Pickaxes are big. + max_combined_w_class = 20 //Not an issue with this whitelist, probably. can_hold = list( /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, @@ -156,6 +157,9 @@ /obj/item/weapon/survivalcapsule, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/reagent_containers/pill, + /obj/item/weapon/ore/bluespace_crystal, + /obj/item/weapon/reagent_containers/food/drinks, + ) @@ -191,7 +195,7 @@ desc = "A syndicate belt designed to be used by boarding parties. Its style is modeled after the hardsuits they wear." icon_state = "militarybelt" item_state = "military" - max_w_class = 3 + max_w_class = 2 /obj/item/weapon/storage/belt/military/army name = "army belt" diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm index 76a6bcba12e..d1e161f7a7f 100644 --- a/code/game/objects/items/weapons/storage/book.dm +++ b/code/game/objects/items/weapons/storage/book.dm @@ -118,7 +118,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", " if(ishuman(M)) var/mob/living/carbon/human/H = M var/heal_amt = 10 - for(var/obj/item/organ/limb/affecting in H.organs) + for(var/obj/item/bodypart/affecting in H.bodyparts) if(affecting.status == ORGAN_ORGANIC) //No Bible can heal a robotic arm! if(affecting.heal_damage(heal_amt, heal_amt, 0)) H.update_damage_overlays(0) @@ -155,7 +155,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", " if(ishuman(M)) var/mob/living/carbon/human/H = M var/message_halt = 0 - for(var/obj/item/organ/limb/affecting in H.organs) + for(var/obj/item/bodypart/affecting in H.bodyparts) if(affecting.status == ORGAN_ORGANIC) if(message_halt == 0) M.visible_message("[user] heals [M] with the power of [src.deity_name]!") diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index bb95dbf2d7f..99b3a72e6ae 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -61,31 +61,32 @@ /obj/item/weapon/storage/box/survival/New() ..() - contents = list() new /obj/item/clothing/mask/breath(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - return /obj/item/weapon/storage/box/engineer /obj/item/weapon/storage/box/engineer/New() ..() - contents = list() new /obj/item/clothing/mask/breath(src) new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - return + +/obj/item/weapon/storage/box/syndie + +/obj/item/weapon/storage/box/syndie/New() + ..() + new /obj/item/clothing/mask/gas/syndicate(src) + new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) /obj/item/weapon/storage/box/security /obj/item/weapon/storage/box/security/New() ..() - contents = list() new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - return /obj/item/weapon/storage/box/gloves name = "box of latex gloves" @@ -311,7 +312,7 @@ /obj/item/weapon/storage/box/monkeycubes/New() ..() for(var/i = 1; i <= 5; i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(src) /obj/item/weapon/storage/box/permits @@ -381,6 +382,17 @@ for(var/i in 1 to 5) new /obj/item/device/firing_pin(src) +/obj/item/weapon/storage/box/lasertagpins + name = "box of laser tag firing pins" + desc = "A box full of laser tag firing pins, to allow newly-developed firearms to require wearing brightly coloured plastic armor before being able to be used." + icon_state = "id" + +/obj/item/weapon/storage/box/lasertagpins/New() + ..() + for(var/i in 1 to 3) + new /obj/item/device/firing_pin/tag/red(src) + new /obj/item/device/firing_pin/tag/blue(src) + /obj/item/weapon/storage/box/handcuffs name = "box of spare handcuffs" desc = "A box full of handcuffs." @@ -795,4 +807,4 @@ new /obj/item/weapon/circuitboard/protolathe(src) new /obj/item/weapon/circuitboard/destructive_analyzer(src) new /obj/item/weapon/circuitboard/circuit_imprinter(src) - new /obj/item/weapon/circuitboard/rdconsole(src) \ No newline at end of file + new /obj/item/weapon/circuitboard/rdconsole(src) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 3dc9209938a..4ccc4803f1d 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -21,6 +21,7 @@ new /obj/item/device/rad_laser(src) new /obj/item/device/chameleon(src) new /obj/item/weapon/soap/syndie(src) + new /obj/item/clothing/glasses/thermal/syndi(src) return if("bond") @@ -30,6 +31,8 @@ new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/clothing/under/chameleon(src) new /obj/item/weapon/card/id/syndicate(src) + new /obj/item/weapon/reagent_containers/syringe/stimulants(src) + return if("screwed") @@ -45,7 +48,7 @@ new /obj/item/weapon/gun/projectile/revolver(src) new /obj/item/ammo_box/a357(src) new /obj/item/weapon/card/emag(src) - new /obj/item/weapon/c4(src) + new /obj/item/weapon/grenade/plastic/c4(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/clothing/under/suit_jacket/really_black(src) @@ -83,8 +86,8 @@ return if("sabotage") - new /obj/item/weapon/c4 (src) - new /obj/item/weapon/c4 (src) + new /obj/item/weapon/grenade/plastic/c4 (src) + new /obj/item/weapon/grenade/plastic/c4 (src) new /obj/item/device/doorCharge(src) new /obj/item/device/doorCharge(src) new /obj/item/device/camera_bug(src) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 406e079ffbb..f8b5263cba1 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -91,7 +91,7 @@ user << "It feels [descriptive]." -/obj/item/weapon/tank/blob_act() +/obj/item/weapon/tank/blob_act(obj/effect/blob/B) if(prob(50)) var/turf/location = src.loc if (!( istype(location, /turf) )) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index 6cf002db034..46391df47eb 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -119,6 +119,7 @@ possible_transfer_amounts = list(25,50,100) volume = 500 flags = NODROP | OPENCONTAINER | NOBLUDGEON + slot_flags = 0 var/obj/item/weapon/watertank/tank diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 9fc4d7cb365..83842b332a8 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -17,7 +17,7 @@ /obj/item/weapon/wrench name = "wrench" desc = "A wrench with common uses. Can be found in your hand." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "wrench" flags = CONDUCT slot_flags = SLOT_BELT @@ -84,7 +84,7 @@ /obj/item/weapon/screwdriver name = "screwdriver" desc = "You can be totally screwy with this." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = null flags = CONDUCT slot_flags = SLOT_BELT @@ -135,7 +135,7 @@ /obj/item/weapon/wirecutters name = "wirecutters" desc = "This cuts wires." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = null flags = CONDUCT slot_flags = SLOT_BELT @@ -187,7 +187,7 @@ /obj/item/weapon/weldingtool name = "welding tool" desc = "A standard edition welder provided by NanoTrasen." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "welder" item_state = "welder" flags = CONDUCT @@ -258,12 +258,12 @@ if(!istype(H)) return ..() - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected)) + var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) - if(affecting.status == ORGAN_ROBOTIC && user.a_intent != "harm") + if(affecting && affecting.status == ORGAN_ROBOTIC && user.a_intent != "harm") if(src.remove_fuel(1)) playsound(loc, 'sound/items/Welder.ogg', 50, 1) - user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.getDisplayName()].", "You start fixing some of the dents on [H]'s [affecting.getDisplayName()].") + user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.name].", "You start fixing some of the dents on [H]'s [affecting.name].") if(!do_mob(user, H, 50)) return item_heal_robotic(H, user, 5, 0) @@ -506,7 +506,7 @@ /obj/item/weapon/crowbar name = "pocket crowbar" desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors." - icon = 'icons/obj/items.dmi' + icon = 'icons/obj/tools.dmi' icon_state = "crowbar" flags = CONDUCT slot_flags = SLOT_BELT diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7e524588548..e8bbfbed48e 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -62,6 +62,9 @@ if(user.get_inactive_hand()) user << "You need your other hand to be empty!" return + if(user.get_num_arms() < 2) + user << "You don't have enough hands." + return wielded = 1 if(force_wielded) force = force_wielded @@ -318,7 +321,7 @@ explosive.prime() qdel(src) - //THIS MIGHT BE UNBALANCED SO I DUNNO + //THIS MIGHT BE UNBALANCED SO I DUNNO // it totally is. /obj/item/weapon/twohanded/spear/throw_impact(atom/target) . = ..() if(!.) //not caught @@ -326,7 +329,6 @@ explosive.prime() qdel(src) - /obj/item/weapon/twohanded/spear/AltClick() ..() if(!explosive) @@ -337,16 +339,6 @@ if(input) src.war_cry = input -//Placeholder C4 "grenade" for use on this spear -/obj/item/weapon/grenade/C4 - name = "C-4" - desc = "A brick of C-4." - -/obj/item/weapon/grenade/C4/prime() - update_mob() - explosion(src.loc,-1,1,3) - qdel(src) - /obj/item/weapon/twohanded/spear/CheckParts() if(explosive) explosive.loc = get_turf(src.loc) @@ -357,12 +349,6 @@ name = "explosive lance" desc = "A makeshift spear with [G] attached to it. Alt+click on the spear to set your war cry!" return - var/obj/item/weapon/c4/C4 = locate() in contents - if(C4) - var /obj/item/weapon/grenade/C4/C42 = new /obj/item/weapon/grenade/C4(src) - qdel(C4) - explosive = C42 - desc = "A makeshift spear with [C42] attached to it. Alt+click on the spear to set your war cry!" update_icon() // CHAINSAW @@ -403,6 +389,9 @@ var/datum/action/A = X A.UpdateButtonIcon() +/obj/item/weapon/twohanded/required/chainsaw/can_dismember() + return wielded + //GREY TIDE /obj/item/weapon/twohanded/spear/grey_tide diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 758c80626e2..7b7e4bcfc6e 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -15,7 +15,7 @@ if(ticker) cameranet.updateVisibility(src) -/obj/structure/blob_act() +/obj/structure/blob_act(obj/effect/blob/B) if(!density) qdel(src) if(prob(50)) @@ -31,6 +31,7 @@ return ..() /obj/structure/mech_melee_attack(obj/mecha/M) + M.do_attack_animation(src) if(M.damtype == BRUTE || M.damtype == BURN) visible_message("[M.name] has hit [src].") return 1 diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/structures/aliens.dm similarity index 77% rename from code/game/objects/effects/aliens.dm rename to code/game/objects/structures/aliens.dm index 4ec3efe5a33..ffe82b4c3c3 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -1,439 +1,356 @@ -/* Alien shit! - * Contains: - * structure/alien - * Resin - * Weeds - * Egg - * effect/acid - */ - -/obj/structure/alien - icon = 'icons/mob/alien.dmi' - var/health = 100 - -/obj/structure/alien/attacked_by(obj/item/I, mob/user) - ..() - var/damage = I.force - switch(I.damtype) - if(BRUTE) - damage *= 0.25 - if(BURN) - damage *= 2 - else - damage = 0 //stamina damage does no damage - take_damage(damage, I.damtype) - -/obj/structure/alien/proc/take_damage(amount, damage_type = BRUTE, sound_effect = 1) - switch(damage_type) - if(BRUTE) - if(sound_effect) - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - if(BURN) - if(sound_effect) - playsound(loc, 'sound/items/Welder.ogg', 100, 1) - else - return - health = max(health - amount, 0) - if(!health) - Break() - -/obj/structure/alien/proc/Break() - qdel(src) - -/obj/structure/alien/bullet_act(obj/item/projectile/P) - . = ..() - take_damage(P.damage, P.damage_type) - -/* - * Resin - */ -/obj/structure/alien/resin - name = "resin" - desc = "Looks like some kind of thick resin." - icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' - icon_state = "resin" - density = 1 - opacity = 1 - anchored = 1 - canSmoothWith = list(/obj/structure/alien/resin) - health = 200 - smooth = SMOOTH_TRUE - var/resintype = null - - - -/obj/structure/alien/resin/New(location) - ..() - air_update_turf(1) - return - -/obj/structure/alien/resin/Move() - var/turf/T = loc - ..() - move_update_air(T) - -/obj/structure/alien/resin/CanAtmosPass() - return !density - -/obj/structure/alien/resin/wall - name = "resin wall" - desc = "Thick resin solidified into a wall." - icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' - icon_state = "wall0" //same as resin, but consistency ho! - resintype = "wall" - canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) - -/obj/structure/alien/resin/wall/BlockSuperconductivity() - return 1 - -/obj/structure/alien/resin/wall/shadowling //For chrysalis - name = "chrysalis wall" - desc = "Some sort of purple substance in an egglike shape. It pulses and throbs from within and seems impenetrable." - health = INFINITY - -/obj/structure/alien/resin/membrane - name = "resin membrane" - desc = "Resin just thin enough to let light pass through." - icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi' - icon_state = "membrane0" - opacity = 0 - health = 160 - resintype = "membrane" - canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) - -/obj/structure/alien/resin/ex_act(severity, target) - switch(severity) - if(1) - take_damage(150, BRUTE, 0) - if(2) - take_damage(100, BRUTE, 0) - if(3) - take_damage(50, BRUTE, 0) - -/obj/structure/alien/blob_act() - take_damage(50, BRUTE, 0) - -/obj/structure/alien/resin/hitby(atom/movable/AM) - ..() - var/tforce = 0 - if(!isobj(AM)) - tforce = 10 - else - var/obj/O = AM - tforce = O.throwforce - take_damage(tforce) - -/obj/structure/alien/resin/attack_hulk(mob/living/carbon/human/user) - ..(user, 1) - user.visible_message("[user] destroys [src]!") - take_damage(200) - -/obj/structure/alien/resin/attack_paw(mob/user) - return attack_hand(user) - - -/obj/structure/alien/resin/attack_alien(mob/living/user) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - user.visible_message("[user] claws at the resin!") - take_damage(50) - -/obj/structure/alien/resin/attack_animal(mob/living/simple_animal/M) - M.changeNext_move(CLICK_CD_MELEE) - M.do_attack_animation(src) - if(!M.melee_damage_upper) - return - visible_message("[M] [M.attacktext] [src]!") - take_damage(M.melee_damage_upper, M.melee_damage_type) - -/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) - return !density - - -/* - * Weeds - */ - -#define NODERANGE 3 - -/obj/structure/alien/weeds - gender = PLURAL - name = "resin floor" - desc = "A thick resin surface covers the floor." - anchored = 1 - density = 0 - layer = TURF_LAYER + 0.09 - icon_state = "weeds" - health = 15 - var/obj/structure/alien/weeds/node/linked_node = null - canSmoothWith = list(/obj/structure/alien/weeds, /turf/closed/wall) - smooth = SMOOTH_MORE - - -/obj/structure/alien/weeds/New(pos, node) - pixel_x = -4 - pixel_y = -4 //so the sprites line up right in the map editor - ..() - if(!luminosity) //weed nodes have luminosity, but normal weeds don't! - switch(rand(1,3)) - if(1) - icon = 'icons/obj/smooth_structures/alien/weeds1.dmi' - if(2) - icon = 'icons/obj/smooth_structures/alien/weeds2.dmi' - if(3) - icon = 'icons/obj/smooth_structures/alien/weeds3.dmi' - linked_node = node - if(istype(loc, /turf/open/space)) - qdel(src) - return - spawn(rand(150, 200)) - if(src) - Life() - -/obj/structure/alien/weeds/Destroy() - linked_node = null - return ..() - -/obj/structure/alien/weeds/proc/Life() - set background = BACKGROUND_ENABLED - var/turf/U = get_turf(src) - - if(istype(U, /turf/open/space)) - qdel(src) - return - - if(!linked_node || get_dist(linked_node, src) > linked_node.node_range) - return - - for(var/turf/T in U.GetAtmosAdjacentTurfs()) - - if (locate(/obj/structure/alien/weeds) in T || istype(T, /turf/open/space)) - continue - - new /obj/structure/alien/weeds(T, linked_node) - - -/obj/structure/alien/weeds/ex_act(severity, target) - qdel(src) - - -/obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 300) - take_damage(5, BURN, 0) - - -//Weed nodes -/obj/structure/alien/weeds/node - name = "glowing resin" - desc = "Blue bioluminescence shines from beneath the surface." - icon_state = "weednode" - luminosity = 1 - var/node_range = NODERANGE - - -/obj/structure/alien/weeds/node/New() - icon = 'icons/obj/smooth_structures/alien/weednode.dmi' - ..(loc, src) - -#undef NODERANGE - - -/* - * Egg - */ - -//for the status var -#define BURST 0 -#define BURSTING 1 -#define GROWING 2 -#define GROWN 3 -#define MIN_GROWTH_TIME 900 //time it takes to grow a hugger -#define MAX_GROWTH_TIME 1500 - -/obj/structure/alien/egg - name = "egg" - desc = "A large mottled egg." - icon_state = "egg_growing" - density = 0 - anchored = 1 - health = 100 - var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive - layer = MOB_LAYER - - -/obj/structure/alien/egg/New() - new /obj/item/clothing/mask/facehugger(src) - ..() - spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) - Grow() - -/obj/structure/alien/egg/Destroy() - remove_from_proximity_list(src, 1) - ..() - -/obj/structure/alien/egg/attack_paw(mob/living/user) - return attack_hand(user) - -/obj/structure/alien/egg/attack_hand(mob/living/user) - if(user.getorgan(/obj/item/organ/internal/alien/plasmavessel)) - switch(status) - if(BURST) - user << "You clear the hatched egg." - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - qdel(src) - return - if(GROWING) - user << "The child is not developed yet." - return - if(GROWN) - user << "You retrieve the child." - Burst(0) - return - else - user << "It feels slimy." - user.changeNext_move(CLICK_CD_MELEE) - - -/obj/structure/alien/egg/proc/GetFacehugger() - return locate(/obj/item/clothing/mask/facehugger) in contents - -/obj/structure/alien/egg/proc/Grow() - icon_state = "egg" - status = GROWN - add_to_proximity_list(src, 1) - -/obj/structure/alien/egg/proc/Burst(kill = 1) //drops and kills the hugger if any is remaining - if(status == GROWN || status == GROWING) - remove_from_proximity_list(src, 1) - icon_state = "egg_hatched" - flick("egg_opening", src) - status = BURSTING - spawn(15) - status = BURST - var/obj/item/clothing/mask/facehugger/child = GetFacehugger() - if(child) - child.loc = get_turf(src) - if(kill && istype(child)) - child.Die() - else - for(var/mob/M in range(1,src)) - if(CanHug(M)) - child.Attach(M) - break - -/obj/structure/alien/egg/Move() - remove_from_proximity_list(src, 1) - ..() - -/obj/structure/alien/egg/Break() - if(status != BURST && status != BURSTING) - Burst() - else if(status == BURST) - qdel(src) //Remove the egg after it has been hit after bursting. - - -/obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 500) - take_damage(5, BURN, 0) - - -/obj/structure/alien/egg/HasProximity(atom/movable/AM) - if(status == GROWN) - if(!CanHug(AM)) - return - - var/mob/living/carbon/C = AM - if(C.stat == CONSCIOUS && C.getorgan(/obj/item/organ/internal/body_egg/alien_embryo)) - return - - Burst(0) - -#undef BURST -#undef BURSTING -#undef GROWING -#undef GROWN -#undef MIN_GROWTH_TIME -#undef MAX_GROWTH_TIME - - -/* - * Acid - */ -/obj/effect/acid - gender = PLURAL - name = "acid" - desc = "Burbling corrossive stuff." - icon_state = "acid" - density = 0 - opacity = 0 - anchored = 1 - unacidable = 1 - var/atom/target - var/ticks = 0 - var/target_strength = 0 - - -/obj/effect/acid/New(loc, targ) - ..(loc) - target = targ - - //handle APCs and newscasters and stuff nicely - pixel_x = target.pixel_x - pixel_y = target.pixel_y - - if(isturf(target)) //Turfs take twice as long to take down. - target_strength = 640 - else - target_strength = 320 - tick() - - -/obj/effect/acid/proc/tick() - if(!target) - qdel(src) - - ticks++ - - if(ticks >= target_strength) - target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!") - - if(istype(target, /obj/structure/closet)) - var/obj/structure/closet/T = target - T.dump_contents() - qdel(target) - - if(istype(target, /turf/closed/mineral)) - var/turf/closed/mineral/M = target - M.ChangeTurf(M.baseturf) - - if(istype(target, /turf/open/floor)) - var/turf/open/floor/F = target - F.ChangeTurf(F.baseturf) - - if(istype(target, /turf/closed/wall)) - var/turf/closed/wall/W = target - W.dismantle_wall(1) - - else - qdel(target) - - qdel(src) - return - - x = target.x - y = target.y - z = target.z - - switch(target_strength - ticks) - if(480) - visible_message("[target] is holding up against the acid!") - if(320) - visible_message("[target] is being melted by the acid!") - if(160) - visible_message("[target] is struggling to withstand the acid!") - if(80) - visible_message("[target] begins to crumble under the acid!") - - spawn(1) - if(src) - tick() +/* Alien shit! + * Contains: + * structure/alien + * Resin + * Weeds + * Egg + */ + + +/obj/structure/alien + icon = 'icons/mob/alien.dmi' + var/health = 100 + +/obj/structure/alien/attacked_by(obj/item/I, mob/user) + ..() + var/damage = I.force + switch(I.damtype) + if(BRUTE) + damage *= 0.25 + if(BURN) + damage *= 2 + else + damage = 0 //stamina damage does no damage + take_damage(damage, I.damtype) + +/obj/structure/alien/proc/take_damage(amount, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + if(BURN) + if(sound_effect) + playsound(loc, 'sound/items/Welder.ogg', 100, 1) + else + return + health = max(health - amount, 0) + if(!health) + Break() + +/obj/structure/alien/proc/Break() + qdel(src) + +/obj/structure/alien/bullet_act(obj/item/projectile/P) + . = ..() + take_damage(P.damage, P.damage_type) + +/* + * Resin + */ +/obj/structure/alien/resin + name = "resin" + desc = "Looks like some kind of thick resin." + icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' + icon_state = "resin" + density = 1 + opacity = 1 + anchored = 1 + canSmoothWith = list(/obj/structure/alien/resin) + health = 200 + smooth = SMOOTH_TRUE + var/resintype = null + + + +/obj/structure/alien/resin/New(location) + ..() + air_update_turf(1) + return + +/obj/structure/alien/resin/Move() + var/turf/T = loc + ..() + move_update_air(T) + +/obj/structure/alien/resin/CanAtmosPass() + return !density + +/obj/structure/alien/resin/wall + name = "resin wall" + desc = "Thick resin solidified into a wall." + icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' + icon_state = "wall0" //same as resin, but consistency ho! + resintype = "wall" + canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) + +/obj/structure/alien/resin/wall/BlockSuperconductivity() + return 1 + +/obj/structure/alien/resin/wall/shadowling //For chrysalis + name = "chrysalis wall" + desc = "Some sort of purple substance in an egglike shape. It pulses and throbs from within and seems impenetrable." + health = INFINITY + +/obj/structure/alien/resin/membrane + name = "resin membrane" + desc = "Resin just thin enough to let light pass through." + icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi' + icon_state = "membrane0" + opacity = 0 + health = 160 + resintype = "membrane" + canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) + +/obj/structure/alien/resin/ex_act(severity, target) + switch(severity) + if(1) + take_damage(150, BRUTE, 0) + if(2) + take_damage(100, BRUTE, 0) + if(3) + take_damage(50, BRUTE, 0) + +/obj/structure/alien/blob_act(obj/effect/blob/B) + take_damage(50, BRUTE, 0) + +/obj/structure/alien/resin/hitby(atom/movable/AM) + ..() + var/tforce = 0 + if(!isobj(AM)) + tforce = 10 + else + var/obj/O = AM + tforce = O.throwforce + take_damage(tforce) + +/obj/structure/alien/resin/attack_hulk(mob/living/carbon/human/user) + ..(user, 1) + user.visible_message("[user] destroys [src]!") + take_damage(200) + +/obj/structure/alien/resin/attack_paw(mob/user) + return attack_hand(user) + + +/obj/structure/alien/resin/attack_alien(mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + user.visible_message("[user] claws at the resin!") + take_damage(50) + +/obj/structure/alien/resin/attack_animal(mob/living/simple_animal/M) + M.changeNext_move(CLICK_CD_MELEE) + M.do_attack_animation(src) + if(!M.melee_damage_upper) + return + visible_message("[M] [M.attacktext] [src]!") + take_damage(M.melee_damage_upper, M.melee_damage_type) + +/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0) + return !density + + +/* + * Weeds + */ + +#define NODERANGE 3 + +/obj/structure/alien/weeds + gender = PLURAL + name = "resin floor" + desc = "A thick resin surface covers the floor." + anchored = 1 + density = 0 + layer = TURF_LAYER + 0.09 + icon_state = "weeds" + health = 15 + var/obj/structure/alien/weeds/node/linked_node = null + canSmoothWith = list(/obj/structure/alien/weeds, /turf/closed/wall) + smooth = SMOOTH_MORE + + +/obj/structure/alien/weeds/New(pos, node) + pixel_x = -4 + pixel_y = -4 //so the sprites line up right in the map editor + ..() + if(!luminosity) //weed nodes have luminosity, but normal weeds don't! + switch(rand(1,3)) + if(1) + icon = 'icons/obj/smooth_structures/alien/weeds1.dmi' + if(2) + icon = 'icons/obj/smooth_structures/alien/weeds2.dmi' + if(3) + icon = 'icons/obj/smooth_structures/alien/weeds3.dmi' + linked_node = node + if(istype(loc, /turf/open/space)) + qdel(src) + return + spawn(rand(150, 200)) + if(src) + Life() + +/obj/structure/alien/weeds/Destroy() + linked_node = null + return ..() + +/obj/structure/alien/weeds/proc/Life() + set background = BACKGROUND_ENABLED + var/turf/U = get_turf(src) + + if(istype(U, /turf/open/space)) + qdel(src) + return + + if(!linked_node || get_dist(linked_node, src) > linked_node.node_range) + return + + for(var/turf/T in U.GetAtmosAdjacentTurfs()) + + if (locate(/obj/structure/alien/weeds) in T || istype(T, /turf/open/space)) + continue + + new /obj/structure/alien/weeds(T, linked_node) + + +/obj/structure/alien/weeds/ex_act(severity, target) + qdel(src) + + +/obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + take_damage(5, BURN, 0) + + +//Weed nodes +/obj/structure/alien/weeds/node + name = "glowing resin" + desc = "Blue bioluminescence shines from beneath the surface." + icon_state = "weednode" + luminosity = 1 + var/node_range = NODERANGE + + +/obj/structure/alien/weeds/node/New() + icon = 'icons/obj/smooth_structures/alien/weednode.dmi' + ..(loc, src) + +#undef NODERANGE + + +/* + * Egg + */ + +//for the status var +#define BURST 0 +#define BURSTING 1 +#define GROWING 2 +#define GROWN 3 +#define MIN_GROWTH_TIME 900 //time it takes to grow a hugger +#define MAX_GROWTH_TIME 1500 + +/obj/structure/alien/egg + name = "egg" + desc = "A large mottled egg." + icon_state = "egg_growing" + density = 0 + anchored = 1 + health = 100 + var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive + layer = MOB_LAYER + + +/obj/structure/alien/egg/New() + new /obj/item/clothing/mask/facehugger(src) + ..() + spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) + Grow() + +/obj/structure/alien/egg/Destroy() + remove_from_proximity_list(src, 1) + ..() + +/obj/structure/alien/egg/attack_paw(mob/living/user) + return attack_hand(user) + +/obj/structure/alien/egg/attack_hand(mob/living/user) + if(user.getorgan(/obj/item/organ/alien/plasmavessel)) + switch(status) + if(BURST) + user << "You clear the hatched egg." + playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) + qdel(src) + return + if(GROWING) + user << "The child is not developed yet." + return + if(GROWN) + user << "You retrieve the child." + Burst(0) + return + else + user << "It feels slimy." + user.changeNext_move(CLICK_CD_MELEE) + + +/obj/structure/alien/egg/proc/GetFacehugger() + return locate(/obj/item/clothing/mask/facehugger) in contents + +/obj/structure/alien/egg/proc/Grow() + icon_state = "egg" + status = GROWN + add_to_proximity_list(src, 1) + +/obj/structure/alien/egg/proc/Burst(kill = 1) //drops and kills the hugger if any is remaining + if(status == GROWN || status == GROWING) + remove_from_proximity_list(src, 1) + icon_state = "egg_hatched" + flick("egg_opening", src) + status = BURSTING + spawn(15) + status = BURST + var/obj/item/clothing/mask/facehugger/child = GetFacehugger() + if(child) + child.loc = get_turf(src) + if(kill && istype(child)) + child.Die() + else + for(var/mob/M in range(1,src)) + if(CanHug(M)) + child.Attach(M) + break + +/obj/structure/alien/egg/Move() + remove_from_proximity_list(src, 1) + ..() + +/obj/structure/alien/egg/Break() + if(status != BURST && status != BURSTING) + Burst() + else if(status == BURST) + qdel(src) //Remove the egg after it has been hit after bursting. + + +/obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 500) + take_damage(5, BURN, 0) + + +/obj/structure/alien/egg/HasProximity(atom/movable/AM) + if(status == GROWN) + if(!CanHug(AM)) + return + + var/mob/living/carbon/C = AM + if(C.stat == CONSCIOUS && C.getorgan(/obj/item/organ/body_egg/alien_embryo)) + return + + Burst(0) + +#undef BURST +#undef BURSTING +#undef GROWING +#undef GROWN +#undef MIN_GROWTH_TIME +#undef MAX_GROWTH_TIME \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index c196e946244..5186309b65e 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -22,7 +22,7 @@ for(var/buck in buckled_mobs) //breaking a nest releases all the buckled mobs, because the nest isn't holding them down anymore var/mob/living/M = buck - if(user.getorgan(/obj/item/organ/internal/alien/plasmavessel)) + if(user.getorgan(/obj/item/organ/alien/plasmavessel)) unbuckle_mob(M) add_fingerprint(user) return @@ -55,9 +55,9 @@ if ( !ismob(M) || (get_dist(src, user) > 1) || (M.loc != src.loc) || user.incapacitated() || M.buckled ) return - if(M.getorgan(/obj/item/organ/internal/alien/plasmavessel)) + if(M.getorgan(/obj/item/organ/alien/plasmavessel)) return - if(!user.getorgan(/obj/item/organ/internal/alien/plasmavessel)) + if(!user.getorgan(/obj/item/organ/alien/plasmavessel)) return if(buckled_mobs.len) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 92f0b887cb5..05c037c478c 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -253,7 +253,7 @@ if(istype(A,/obj/structure/chair)) user << "There is already a chair here." return - if(A.density) + if(A.density && !(A.flags & ON_BORDER)) user << "There is already something here." return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index a1e5baf8450..df6f9ce90db 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -206,7 +206,7 @@ visible_message("[user] destroys \the [src].") qdel(src) -/obj/structure/closet/blob_act() +/obj/structure/closet/blob_act(obj/effect/blob/B) if(prob(75)) qdel(src) @@ -251,7 +251,7 @@ "You hear welding.") update_icon() else if(user.a_intent != "harm" && !(W.flags & NOBLUDGEON)) - if(!toggle(user)) + if(W.GetID() || !toggle(user)) togglelock(user) return 1 else @@ -266,13 +266,19 @@ return if(user == O) //try to climb onto it return ..() - if(!opened || istype(O, /obj/structure/closet)) + if(!opened) + return + if(!isturf(O.loc)) return + var/actuallyismob = 0 + if(isliving(O)) + actuallyismob = 1 + else if(!istype(O, /obj/item)) + return + var/turf/T = get_turf(src) var/list/targets = list(O, src) add_fingerprint(user) - var/mob/living/L = O - var/actuallyismob = istype(L) user.visible_message("[user] [actuallyismob ? "tries to ":""]stuff [O] into [src].", \ "You [actuallyismob ? "try to ":""]stuff [O] into [src].", \ "You hear clanging.") @@ -281,12 +287,13 @@ user.visible_message("[user] stuffs [O] into [src].", \ "You stuff [O] into [src].", \ "You hear a loud metal bang.") + var/mob/living/L = O if(!issilicon(L)) L.Weaken(2) - O.forceMove(get_turf(src)) + O.forceMove(T) close() else - O.forceMove(get_turf(src)) + O.forceMove(T) return 1 /obj/structure/closet/relaymove(mob/user) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 65cb20bee21..9da2cc06a11 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -24,7 +24,7 @@ new /obj/item/weapon/reagent_containers/glass/rag(src) new /obj/item/weapon/reagent_containers/glass/rag(src) new /obj/item/weapon/storage/box/beanbag(src) - new /obj/item/clothing/suit/armor/vest(src) + new /obj/item/clothing/suit/armor/vest/alt(src) new /obj/item/clothing/glasses/sunglasses/reagent(src) new /obj/item/weapon/storage/belt/bandolier(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 79a66cda856..f84d9889d59 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -12,6 +12,20 @@ new /obj/item/weapon/reagent_containers/food/condiment/rice(src) new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance + name = "maintenance refrigerator" + desc = "This refrigerator looks quite dusty, is there anything edible still inside?" + req_access = list() + +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance/New() + ..() + for(var/i = 0, i < 5, i++) + new /obj/item/weapon/reagent_containers/food/condiment/milk(src) + for(var/i = 0, i < 5, i++) + new /obj/item/weapon/reagent_containers/food/condiment/soymilk(src) + for(var/i = 0, i < 2, i++) + new /obj/item/weapon/storage/fancy/egg_box(src) + /obj/structure/closet/secure_closet/freezer/kitchen/mining req_access = list() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index bb313695cf6..68599a34216 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -68,7 +68,7 @@ new /obj/item/weapon/storage/belt/medical(src) new /obj/item/device/assembly/flash/handheld(src) new /obj/item/weapon/reagent_containers/hypospray/CMO(src) - new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src) + new /obj/item/organ/cyberimp/eyes/hud/medical(src) new /obj/item/weapon/door_remote/chief_medical_officer(src) /obj/structure/closet/secure_closet/animal diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 67292b52f2d..6b16c70b7ba 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -1,6 +1,6 @@ /obj/structure/closet/secure_closet name = "secure locker" - desc = "It's an immobile card-locked storage unit." + desc = "It's a card-locked storage unit." locked = 1 icon_state = "secure" health = 200 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 2cb1eae867f..c8fa71c24dc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -43,7 +43,7 @@ new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids(src) new /obj/item/device/megaphone/command(src) - new /obj/item/clothing/suit/armor/vest(src) + new /obj/item/clothing/suit/armor/vest/alt(src) new /obj/item/device/assembly/flash/handheld(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 69c639694f2..4c053c6caa6 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -120,7 +120,7 @@ if(user.environment_smash) shatter() -/obj/structure/closet/statue/blob_act() +/obj/structure/closet/statue/blob_act(obj/effect/blob/B) shatter() /obj/structure/closet/statue/attacked_by(obj/item/I, mob/living/user) diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 6ca97bb58a3..16b903709f3 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -48,7 +48,7 @@ showpiece.loc = src.loc showpiece = null -/obj/structure/displaycase/blob_act() +/obj/structure/displaycase/blob_act(obj/effect/blob/B) if (prob(75)) new /obj/item/weapon/shard( src.loc ) dump() @@ -253,12 +253,5 @@ /obj/structure/displaycase/labcage name = "lab cage" desc = "A glass lab container for storing interesting creatures." - -/obj/structure/displaycase/labcage/New() - ..() - var/obj/item/clothing/mask/facehugger/A = new /obj/item/clothing/mask/facehugger(src) - A.sterile = 1 - A.name = "Lamarr" - showpiece = A - update_icon() + start_showpiece_type = /obj/item/clothing/mask/facehugger/lamarr diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 8741c8698e0..e011d83fa6e 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -5,9 +5,19 @@ icon_state = "extinguisher_closed" anchored = 1 density = 0 - var/obj/item/weapon/extinguisher/has_extinguisher = new/obj/item/weapon/extinguisher + var/obj/item/weapon/extinguisher/has_extinguisher var/opened = 0 +/obj/structure/extinguisher_cabinet/New(loc, ndir, building) + ..() + if(building) + dir = ndir + pixel_x = (dir & 3)? 0 : (dir == 4 ? -27 : 27) + pixel_y = (dir & 3)? (dir ==1 ? -30 : 30) : 0 + opened = 1 + icon_state = "extinguisher_empty" + else + has_extinguisher = new /obj/item/weapon/extinguisher(src) /obj/structure/extinguisher_cabinet/ex_act(severity, target) switch(severity) @@ -24,16 +34,26 @@ return -/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user, params) +/obj/structure/extinguisher_cabinet/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/wrench) && !has_extinguisher) + user << "You start unsecuring [name]..." + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + if(do_after(user, 60/I.toolspeed, target = src)) + playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1) + user << "You unsecure [name]." + new /obj/item/wallframe/extinguisher_cabinet(loc) + qdel(src) + return + if(isrobot(user) || isalien(user)) return - if(istype(O, /obj/item/weapon/extinguisher)) + if(istype(I, /obj/item/weapon/extinguisher)) if(!has_extinguisher && opened) if(!user.drop_item()) return - contents += O - has_extinguisher = O - user << "You place [O] in [src]." + contents += I + has_extinguisher = I + user << "You place [I] in [src]." else opened = !opened else @@ -84,3 +104,10 @@ icon_state = "extinguisher_full" else icon_state = "extinguisher_empty" + +/obj/item/wallframe/extinguisher_cabinet + name = "extinguisher cabinet frame" + desc = "Used for building wall-mounted extinguisher cabinets." + icon = 'icons/obj/apc_repair.dmi' + icon_state = "extinguisher_frame" + result_path = /obj/structure/extinguisher_cabinet diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index dbc85a06870..0b1b1c52781 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -82,7 +82,7 @@ take_damage(P.damage, P.damage_type, 0) -/obj/structure/fireaxecabinet/blob_act() +/obj/structure/fireaxecabinet/blob_act(obj/effect/blob/B) if(fireaxe) fireaxe.loc = src.loc qdel(src) diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index f24bea92dec..359b80ef881 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -261,7 +261,7 @@ var/atom/movable/mover = caller . = . || mover.checkpass(PASSGRILLE) -/obj/structure/girder/blob_act() +/obj/structure/girder/blob_act(obj/effect/blob/B) if(prob(40)) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d34a261a8f2..5da6f3aaaa7 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -23,7 +23,7 @@ else take_damage(rand(5,10), BRUTE, 0) -/obj/structure/grille/blob_act() +/obj/structure/grille/blob_act(obj/effect/blob/B) qdel(src) /obj/structure/grille/Bumped(atom/user) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 013d6220591..c676d5882ce 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -28,7 +28,7 @@ stored = null return ..() -/obj/structure/lattice/blob_act() +/obj/structure/lattice/blob_act(obj/effect/blob/B) return /obj/structure/lattice/ex_act(severity, target) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index e2d7d3f1d47..bf412453520 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -198,7 +198,7 @@ H.update_body() H.update_hair() - H.update_mutcolor() + H.update_body_parts() H.update_mutations_overlay() // no hulk lizard if("gender") diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index f06ef7a8b34..51679ceedf2 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -164,7 +164,7 @@ FLOOR SAFES return ..() -obj/structure/safe/blob_act() +obj/structure/safe/blob_act(obj/effect/blob/B) return obj/structure/safe/ex_act(severity, target) @@ -187,4 +187,4 @@ obj/structure/safe/ex_act(severity, target) /obj/structure/safe/floor/hide(var/intact) - invisibility = intact ? 101 : 0 \ No newline at end of file + invisibility = intact ? INVISIBILITY_MAXIMUM : 0 \ No newline at end of file diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 1f5f8a22ec2..b699da49dd3 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -13,7 +13,7 @@ /obj/structure/sign/ex_act(severity, target) qdel(src) -/obj/structure/sign/blob_act() +/obj/structure/sign/blob_act(obj/effect/blob/B) qdel(src) return @@ -107,9 +107,15 @@ /obj/structure/sign/map/left icon_state = "map-left" +/obj/structure/sign/map/left/dream + icon_state = "map-left-DS" + /obj/structure/sign/map/right icon_state = "map-right" +/obj/structure/sign/map/right/dream + icon_state = "map-right-DS" + /obj/structure/sign/securearea name = "\improper SECURE AREA" desc = "A warning sign which reads 'SECURE AREA'." diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index a4956e461f0..199c3ddae49 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -53,7 +53,7 @@ if(3) take_damage(rand(40,80), BRUTE, 0) -/obj/structure/table/blob_act() +/obj/structure/table/blob_act(obj/effect/blob/B) if(prob(75)) qdel(src) @@ -264,23 +264,27 @@ canSmoothWith = null health = 50 -/obj/structure/table/glass/tablepush(obj/item/I, mob/user) - if(..()) - visible_message("[src] breaks!") - playsound(src.loc, "shatter", 50, 1) - new frame(src.loc) - new /obj/item/weapon/shard(src.loc) - qdel(src) +/obj/structure/table/glass/Crossed(atom/movable/AM) + . = ..() + if(flags & NODECONSTRUCT) + return + // Don't break if they're just flying past + if(AM.throwing) + return + if(istype(AM, /mob/living)) + var/mob/living/M = AM + if(has_gravity(M) && M.mob_size > MOB_SIZE_SMALL) + table_shatter(M) -/obj/structure/table/glass/climb_structure(mob/user) - if(..()) - visible_message("[src] breaks!") - playsound(src.loc, "shatter", 50, 1) - new frame(src.loc) - new /obj/item/weapon/shard(src.loc) - qdel(src) - user.Weaken(5) +/obj/structure/table/glass/proc/table_shatter(mob/M) + visible_message("[src] breaks!") + playsound(src.loc, "shatter", 50, 1) + new frame(src.loc) + var/obj/item/weapon/shard/S = new(src.loc) + S.throw_impact(M) + M.Weaken(5) + qdel(src) /* * Wooden tables @@ -408,7 +412,7 @@ if(3) take_damage(rand(5,25), BRUTE, 0) -/obj/structure/rack/blob_act() +/obj/structure/rack/blob_act(obj/effect/blob/B) if(prob(75)) qdel(src) else @@ -416,8 +420,8 @@ /obj/structure/rack/mech_melee_attack(obj/mecha/M) - visible_message("[M.name] smashes [src] apart!") - rack_destroy() + if(..()) + take_damage(M.force*2) /obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 9f90f3a224b..099f0da18fa 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -425,7 +425,7 @@ user << "You fill [RG] from [src]." return 1 - else if(istype(O, /obj/item/weapon/melee/baton)) + if(istype(O, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O if(B.bcell) if(B.bcell.charge > 0 && B.status == 1) @@ -440,39 +440,34 @@ playsound(src, "sparks", 50, 1) return - else if(istype(O, /obj/item/weapon/mop)) + if(istype(O, /obj/item/weapon/mop)) O.reagents.add_reagent("water", 5) user << "You wet [O] in [src]." playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = O - if(M.wrapped) - user << "You need to unwrap [src] first!" - return - else - user << "You place [src] under a stream of water..." - user.drop_item() - M.loc = get_turf(src) - M.Expand() - return - - var/obj/item/I = O - if(!I || !istype(I)) + user << "You place [src] under a stream of water..." + user.drop_item() + M.loc = get_turf(src) + M.Expand() return - if(I.flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. + + if(!istype(O)) + return + if(O.flags & ABSTRACT) //Abstract items like grabs won't wash. No-drop items will though because it's still technically an item in your hand. return if(user.a_intent != "harm") - user << "You start washing [I]..." + user << "You start washing [O]..." busy = 1 if(!do_after(user, 40, target = src)) busy = 0 return 1 busy = 0 O.clean_blood() - user.visible_message("[user] washes [I] using [src].", \ - "You wash [I] using [src].") + user.visible_message("[user] washes [O] using [src].", \ + "You wash [O] using [src].") return 1 else return ..() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 162efa790e3..d56212c5835 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -61,7 +61,7 @@ if(3) take_damage(rand(25,75), BRUTE, 0) -/obj/structure/window/blob_act() +/obj/structure/window/blob_act(obj/effect/blob/B) shatter() /obj/structure/window/narsie_act() @@ -185,7 +185,7 @@ else if(!reinf) user << (anchored ? "You begin to unscrew the window from the floor..." : "You begin to screw the window to the floor...") - if(do_after(user, 40/I.toolspeed, target = src)) + if(do_after(user, 30/I.toolspeed, target = src)) if(reinf && (state == 1 || state == 2)) //If state was unfastened, fasten it, else do the reverse state = (state == 1 ? 2 : 1) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 1094c43a496..068f0b945a6 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -96,19 +96,39 @@ wet_overlay = null var/turf/open/floor/F = src if(istype(F)) - wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static") + if(wet_setting == TURF_WET_ICE) + wet_overlay = image('icons/turf/overlays.dmi', src, "snowfloor") + else + wet_overlay = image('icons/effects/water.dmi', src, "wet_floor_static") else wet_overlay = image('icons/effects/water.dmi', src, "wet_static") overlays += wet_overlay - spawn(rand(790, 820)) // Purely so for visual effect - if(!istype(src, /turf)) //Because turfs don't get deleted, they change, adapt, transform, evolve and deform. they are one and they are all. - return - MakeDry(wet_setting) + if(wet < TURF_WET_ICE) + addtimer(src, "MakeDry", rand(790, 820)) /turf/open/proc/MakeDry(wet_setting = TURF_WET_WATER) - if(wet > wet_setting) + if(!istype(src, /turf)) //Because turfs don't get deleted, they change, adapt, transform, evolve and deform. they are one and they are all. return - wet = TURF_DRY - if(wet_overlay) - overlays -= wet_overlay \ No newline at end of file + if(wet > wet_setting || !wet) + return + if(wet == TURF_WET_PERMAFROST) + wet = TURF_WET_ICE + else + wet = TURF_DRY + if(wet_overlay) + overlays -= wet_overlay + +/turf/open/proc/HandleWet() + if(!istype(src, /turf)) + return + if(!wet || wet > TURF_WET_ICE) + return + if(air.temperature < T0C && wet != TURF_WET_ICE) + MakeDry(TURF_WET_ICE) + MakeSlippery(TURF_WET_ICE) + else if (wet == TURF_WET_ICE) + MakeDry(TURF_WET_ICE) + MakeSlippery(TURF_WET_WATER) + else if (air.temperature > T0C + 40) // Warm rooms will dry up rather quickly. + addtimer(src, "MakeDry", 100, 1, TURF_WET_ICE) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 7054deac01c..ed76a82b149 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -88,7 +88,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," if(A.level == 3) return 1 -/turf/open/floor/blob_act() +/turf/open/floor/blob_act(obj/effect/blob/B) return /turf/open/floor/proc/update_icon() diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index c528d622549..c8b395a0c84 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -69,7 +69,7 @@ temperature = 180 baseturf = /turf/open/floor/plating/ice slowdown = 1 - wet = TURF_WET_ICE + wet = TURF_WET_PERMAFROST /turf/open/floor/plating/ice/colder temperature = 140 diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm index 1220a760a9a..50a7d92bcf7 100644 --- a/code/game/turfs/simulated/river.dm +++ b/code/game/turfs/simulated/river.dm @@ -4,11 +4,11 @@ #define RANDOM_LOWER_X 50 #define RANDOM_LOWER_Y 50 -/proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors) +/proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/open/floor/plating/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y) var/list/river_nodes = list() var/num_spawned = 0 while(num_spawned < nodes) - var/turf/F = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), target_z) + var/turf/F = locate(rand(min_x, max_x), rand(min_y, max_y), target_z) river_nodes += new /obj/effect/landmark/river_waypoint(F) num_spawned++ @@ -59,7 +59,7 @@ /obj/effect/landmark/river_waypoint name = "river waypoint" var/connected = 0 - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT /turf/proc/Spread(probability = 30, prob_loss = 25) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 970628005f4..bcfeae80afd 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -80,11 +80,12 @@ ..() return -/turf/closed/wall/blob_act() +/turf/closed/wall/blob_act(obj/effect/blob/B) if(prob(50)) dismantle_wall() /turf/closed/wall/mech_melee_attack(obj/mecha/M) + M.do_attack_animation(src) if(M.damtype == "brute") playsound(src, 'sound/weapons/punch4.ogg', 50, 1) visible_message("[M.name] has hit [src]!") @@ -226,11 +227,12 @@ playsound(src, 'sound/items/Welder.ogg', 100, 1) if(thermite >= 50) + var/burning_time = max(100,300 - thermite) var/turf/open/floor/F = ChangeTurf(/turf/open/floor/plating) F.burn_tile() F.icon_state = "wall_thermite" F.add_hiddenprint(user) - spawn(max(100,300-thermite)) + spawn(burning_time) if(O) qdel(O) else diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index f9adb04c45f..ea8622dd70b 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -105,7 +105,7 @@ M.inertia_dir = 0 if(TURF_WET_LUBE) M.slip(0, 7, null, (SLIDE|GALOSHES_DONT_HELP)) - if(TURF_WET_ICE) + if(TURF_WET_ICE || TURF_WET_PERMAFROST) M.slip(0, 4, null, (SLIDE|NO_SLIP_WHEN_WALKING)) /turf/proc/is_plasteel_floor() @@ -244,7 +244,7 @@ for(var/obj/O in contents) //this is for deleting things like wires contained in the turf if(O.level != 1) continue - if(O.invisibility == 101) + if(O.invisibility == INVISIBILITY_MAXIMUM) O.singularity_act() ChangeTurf(src.baseturf) return(2) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 032be33b187..60129c99d52 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -6,6 +6,10 @@ var/global/BSACooldown = 0 msg = "ADMIN LOG: [msg]" admins << msg +/proc/relay_msg_admins(msg) + msg = "RELAY: [msg]" + admins << msg + ///////////////////////////////////////////////////////////////////////////////////////////////Panels diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 51176fd8b1f..11c21972abb 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -462,7 +462,7 @@ var/list/admin_verbs_hideable = list( holder.fakekey = new_key createStealthKey() if(isobserver(mob)) - mob.invisibility = INVISIBILITY_MAXIMUM + 1 //JUST IN CASE + mob.invisibility = INVISIBILITY_ABSTRACT //JUST IN CASE mob.alpha = 0 //JUUUUST IN CASE mob.name = " " mob.mouse_opacity = 0 diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index d2f35bb1a80..8edcfbedb7e 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -21,4 +21,5 @@ H.eye_color = random_eye_color() H.dna.blood_type = random_blood_type() H.update_body() - H.update_hair() \ No newline at end of file + H.update_hair() + H.update_body_parts() \ No newline at end of file diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index d0aae03c7b1..b8e4aee8728 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -474,6 +474,8 @@ var/mob/M = N.current if(M) dat += "Red Deity: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.blue_deities.len) @@ -482,6 +484,8 @@ var/mob/M = N.current if(M) dat += "Blue Deity: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.red_deity_prophets.len) @@ -490,6 +494,8 @@ var/mob/M = N.current if(M) dat += "Red Deity Prophet: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.blue_deity_prophets.len) @@ -498,6 +504,8 @@ var/mob/M = N.current if(M) dat += "Blue Deity Prophet: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.red_deity_followers.len) @@ -506,6 +514,8 @@ var/mob/M = N.current if(M) dat += "Red Deity Followers: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.blue_deity_followers.len) @@ -514,6 +524,8 @@ var/mob/M = N.current if(M) dat += "Blue Deity Followers: [M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "PM" + dat += "FLW" dat += "" if(ticker.mode.traitors.len > 0) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 16d57a12677..1776f8106b5 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -137,12 +137,26 @@ var/list/adm = get_admin_counts(requiredflags) . = adm["present"] if(. <= 0) + var/final = "" if(!adm["afk"] && !adm["stealth"] && !adm["noflags"]) - send2irc(source, "[msg] - No admins online") + final = "[msg] - No admins online" else - send2irc(source, "[msg] - All admins AFK ([adm["afk"]]/[adm["total"]]), stealthminned ([adm["stealth"]]/[adm["total"]]), or lack[rights2text(requiredflags, " ")] ([adm["noflags"]]/[adm["total"]])") + final = "[msg] - All admins AFK ([adm["afk"]]/[adm["total"]]), stealthminned ([adm["stealth"]]/[adm["total"]]), or lack[rights2text(requiredflags, " ")] ([adm["noflags"]]/[adm["total"]])" + send2irc(source,final) + send2otherserver(source,final) + /proc/send2irc(msg,msg2) if(config.useircbot) shell("python nudge.py [msg] [msg2]") return + +/proc/send2otherserver(source,msg,type = "Ahelp") + if(global.cross_allowed) + var/list/message = list() + message["message"] = "[source]: [msg]" + message["source"] = "([config.cross_name])" + message["key"] = global.comms_key + message["crossmessage"] = type + + world.Export("[global.cross_address]?[list2params(message)]") \ No newline at end of file diff --git a/code/modules/admin/verbs/bluespacearty.dm b/code/modules/admin/verbs/bluespacearty.dm index 30b2130f543..165ec9072ec 100644 --- a/code/modules/admin/verbs/bluespacearty.dm +++ b/code/modules/admin/verbs/bluespacearty.dm @@ -28,7 +28,7 @@ message_admins("[target.name] has been hit by Bluespace Artillery fired by [usr]") if(target.health <= 1) - target.gib(no_brain = 1) + target.gib(1, 1) else target.adjustBruteLoss(min(99,(target.health - 1))) target.Stun(20) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index ed3c081fc7e..e65dab41781 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -362,7 +362,7 @@ var/list/TYPES_SHORTCUTS = list( /obj/machinery/portable_atmospherics = "PORT_ATMOS", /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack = "MECHA_MISSILE_RACK", /obj/item/mecha_parts/mecha_equipment = "MECHA_EQUIP", - /obj/item/organ/internal = "ORGAN_INT", + /obj/item/organ = "ORGAN", ) var/global/list/g_fancy_list_of_types = null diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 76a7c851fe2..fae5f96e1b9 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -98,6 +98,6 @@ if(confirm !="Yes") return - message_admins("[key_name_admin(usr)] manually reloaded admins") load_admins() feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + message_admins("[key_name_admin(usr)] manually reloaded admins") \ No newline at end of file diff --git a/code/modules/admin/verbs/manipulate_organs.dm b/code/modules/admin/verbs/manipulate_organs.dm index 7b9349403f5..82703edaa3e 100644 --- a/code/modules/admin/verbs/manipulate_organs.dm +++ b/code/modules/admin/verbs/manipulate_organs.dm @@ -6,11 +6,11 @@ var/list/organs = list() switch(operation) if("add organ") - for(var/path in subtypesof(/obj/item/organ/internal)) - var/dat = replacetext("[path]", "/obj/item/organ/internal/", ":") + for(var/path in subtypesof(/obj/item/organ)) + var/dat = replacetext("[path]", "/obj/item/organ/", ":") organs[dat] = path - var/obj/item/organ/internal/organ = input("Select organ type:", "Organ Manipulation", null) in organs + var/obj/item/organ/organ = input("Select organ type:", "Organ Manipulation", null) in organs organ = organs[organ] organ = new organ organ.Insert(C) @@ -26,7 +26,7 @@ organ.implant(C) if("drop organ/implant", "remove organ/implant") - for(var/obj/item/organ/internal/I in C.internal_organs) + for(var/obj/item/organ/I in C.internal_organs) organs["[I.name] ([I.type])"] = I for(var/obj/item/weapon/implant/I in C) @@ -35,7 +35,7 @@ var/obj/item/organ = input("Select organ/implant:", "Organ Manipulation", null) in organs organ = organs[organ] if(!organ) return - var/obj/item/organ/internal/O + var/obj/item/organ/O var/obj/item/weapon/implant/I if(isorgan(organ)) diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 308489beabe..8ff8989edc3 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -5,7 +5,7 @@ var/list/forbidden_varedit_object_types = list( /datum/admin_rank //editing my own rank? it's more likely than you think ) -var/list/VVlocked = list("vars", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "step_x", "step_y", "force_ending") +var/list/VVlocked = list("vars", "var_edited", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "step_x", "step_y", "force_ending") var/list/VVicon_edit_lock = list("icon", "icon_state", "overlays", "underlays", "resize") var/list/VVckey_edit = list("key", "ckey") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index ab377e9b37a..823b6bed89b 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -599,7 +599,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(confirm == "Yes") M.gib() else - M.gib(no_brain = 1) + M.gib(1) feedback_add_details("admin_verb","GIB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/cmd_admin_gib_self() @@ -611,7 +611,7 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] used gibself.") message_admins("[key_name_admin(usr)] used gibself.") feedback_add_details("admin_verb","GIBS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - mob.gib(no_brain = 1) + mob.gib(1, 1) /client/proc/cmd_admin_check_contents(mob/living/M in mob_list) set category = "Special Verbs" diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 9f63519f10f..84e212cd2e0 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -193,7 +193,7 @@ left-- if(left < 1) if(!(visible)) - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT else invisibility = 0 else diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 632eb8e423e..dfdb4b9cca6 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -40,7 +40,7 @@ /obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet") if(!armed) return - var/obj/item/organ/limb/affecting = null + var/obj/item/bodypart/affecting = null if(ishuman(target)) var/mob/living/carbon/human/H = target if(PIERCEIMMUNE in H.dna.species.specflags) @@ -52,11 +52,11 @@ switch(type) if("feet") if(!H.shoes) - affecting = H.get_organ(pick("l_leg", "r_leg")) + affecting = H.get_bodypart(pick("l_leg", "r_leg")) H.Weaken(3) if("l_hand", "r_hand") if(!H.gloves) - affecting = H.get_organ(type) + affecting = H.get_bodypart(type) H.Stun(3) if(affecting) if(affecting.take_damage(1, 0)) diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index fe3b5b1bfc8..cbc9232520c 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -192,6 +192,7 @@ if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION) if(consider_superconductivity(starting = 1)) remove = 0 + HandleWet() // if the tile is wet, and cold, make ice. Or if it's wet, and warm, dry it off. if(!our_excited_group && remove == 1) SSair.remove_from_active(src) @@ -357,7 +358,7 @@ if(neighbor.archived_cycle < SSair.times_fired) neighbor.archive() - neighbor.neighbor_conduct_with_src() + neighbor.neighbor_conduct_with_src(src) neighbor.consider_superconductivity() diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index b78f57a6d3f..391b474f68e 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -491,7 +491,8 @@ var/list/gaslist_cache = null /datum/gas_mixture/temperature_share(datum/gas_mixture/sharer, conduction_coefficient, sharer_temperature, sharer_heat_capacity) //transfer of thermal energy (via conduction) between self and sharer - sharer_temperature = sharer_temperature || sharer.temperature_archived + if(sharer) + sharer_temperature = sharer.temperature_archived var/temperature_delta = temperature_archived - sharer_temperature if(abs(temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) var/self_heat_capacity = heat_capacity_archived() @@ -502,7 +503,7 @@ var/list/gaslist_cache = null (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) temperature = max(temperature - heat/self_heat_capacity, TCMB) - sharer_temperature = max(sharer.temperature + heat/sharer_heat_capacity, TCMB) + sharer_temperature = max(sharer_temperature + heat/sharer_heat_capacity, TCMB) if(sharer) sharer.temperature = sharer_temperature return sharer_temperature diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index edcdc2fbce9..94898fcd009 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -40,7 +40,7 @@ /obj/machinery/atmospherics/pipe/hide(i) if(level == 1 && istype(loc, /turf)) - invisibility = i ? 101 : 0 + invisibility = i ? INVISIBILITY_MAXIMUM : 0 update_icon() /obj/machinery/atmospherics/pipe/proc/check_pressure(pressure) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 00d7fab4602..100b9af99b7 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -203,7 +203,7 @@ air_update_turf() // Update the environment if needed. update_icon() -/obj/machinery/portable_atmospherics/canister/blob_act() +/obj/machinery/portable_atmospherics/canister/blob_act(obj/effect/blob/B) take_damage(100, BRUTE, 0) /obj/machinery/portable_atmospherics/canister/bullet_act(obj/item/projectile/P) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 7108940c287..094bcb2cc40 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -284,6 +284,7 @@ health = INFINITY maxhealth = INFINITY var/team = WHITE_TEAM + constructable = FALSE time_between_triggers = 1 alpha = 255 diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 7e7ffc7b3ff..7e1e469d3b0 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -382,12 +382,27 @@ /obj/effect/mob_spawn/human/bartender/alive death = FALSE roundstart = FALSE - mob_name = "Space Bartender" - name = "sleeper" + random = TRUE + name = "bartender sleeper" icon = 'icons/obj/Cryogenic2.dmi' icon_state = "sleeper" flavour_text = "You are a space bartender!" +/obj/effect/mob_spawn/human/beach + glasses = /obj/item/clothing/glasses/sunglasses + uniform = /obj/item/clothing/under/shorts/red + pocket1 = /obj/item/weapon/storage/wallet/random + +/obj/effect/mob_spawn/human/beach/alive + death = FALSE + roundstart = FALSE + random = TRUE + mob_name = "Beach Bum" + name = "beach bum sleeper" + icon = 'icons/obj/Cryogenic2.dmi' + icon_state = "sleeper" + flavour_text = "You are a beach bum!" + /////////////////Officers+Nanotrasen Security////////////////////// /obj/effect/mob_spawn/human/bridgeofficer diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index b098e08e510..5955709c1de 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -248,7 +248,7 @@ if(rand(0,1)) new /obj/item/stack/spacecash/c1000(T) else - var/obj/item/weapon/moneybag/M = new(T) + var/obj/item/weapon/storage/bag/money/M = new(T) for(var/i in 1 to rand(5,50)) new /obj/item/weapon/coin/gold(M) if(14) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index fc452c13888..35dcdc3b70d 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -124,7 +124,7 @@ obj/item/weapon/paper/crumpled/snowdin/shovel /obj/item/weapon/storage/firstaid/brute = 27, /obj/item/weapon/storage/firstaid/fire = 27, /obj/item/weapon/storage/toolbox/syndicate = 12, - /obj/item/weapon/c4 = 7, + /obj/item/weapon/grenade/plastic/c4 = 7, /obj/item/weapon/grenade/clusterbuster/smoke = 15, /obj/item/clothing/under/chameleon = 13, /obj/item/clothing/shoes/chameleon = 10, @@ -163,9 +163,9 @@ obj/item/weapon/paper/crumpled/snowdin/shovel loot = list(/obj/item/weapon/twohanded/singularityhammer = 25, /obj/item/weapon/twohanded/mjollnir = 10, /obj/item/weapon/twohanded/fireaxe = 25, - /obj/item/organ/internal/brain/alien = 17, + /obj/item/organ/brain/alien = 17, /obj/item/weapon/twohanded/dualsaber = 15, - /obj/item/organ/internal/heart/demon = 7, + /obj/item/organ/heart/demon = 7, /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted = 16, /obj/item/weapon/gun/magic/wand/resurrection/inert = 15, /obj/item/weapon/gun/magic/wand/resurrection = 10, diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index db769b132cc..79c29d2b705 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -189,7 +189,7 @@ var/sc_safecode5 = "[rand(0,9)]" for(var/obj/O in T.contents) if(O.level != 1) continue - if(O.invisibility == 101) + if(O.invisibility == INVISIBILITY_MAXIMUM) src.consume(O) T.ChangeTurf(/turf/open/space) return diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 7d085ff97f5..e17e7b5f635 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -11,7 +11,7 @@ /obj/item/device/export_scanner/examine(user) ..() if(!cargo_console) - user << "You had to link it to supply console for it to work." + user << "The [src] is currently not linked to a cargo console." /obj/item/device/export_scanner/afterattack(obj/O, mob/user, proximity) if(!istype(O) || !proximity) @@ -44,4 +44,4 @@ exported = TRUE break if(!exported) - user << "The object is unexportable." \ No newline at end of file + user << "The object is unexportable." diff --git a/code/modules/cargo/exports/intel.dm b/code/modules/cargo/exports/intel.dm index 4989fb4e0cc..faba926cb60 100644 --- a/code/modules/cargo/exports/intel.dm +++ b/code/modules/cargo/exports/intel.dm @@ -7,6 +7,7 @@ message = "of enemy intelligence" var/global/originals_recieved = list() var/global/copies_recieved = list() + var/copy_path = null export_types = list(/obj/item/documents/syndicate) /datum/export/intel/applies_to(obj/O, contr = 0, emag = 0) @@ -23,6 +24,9 @@ return FALSE if((C.copy_type in originals_recieved) || (C.copy_type in copies_recieved)) return FALSE + if(copy_path && !ispath(C.copy_type, copy_path)) + return FALSE + else if(O.type in originals_recieved) return FALSE @@ -45,6 +49,7 @@ cost = 15000 // Allows double agents to earn some cargo points without failing their objectives. unit_name = "photocopied article" export_types = list(/obj/item/documents/photocopy) + copy_path = /obj/item/documents/syndicate @@ -58,6 +63,7 @@ cost = 15000 unit_name = "photocopied article" export_types = list(/obj/item/documents/photocopy) + copy_path = /obj/item/documents/nanotrasen // Selling Syndicate docs to Syndicate, why not? /datum/export/intel/syndie/recovered diff --git a/code/modules/cargo/exports/organs.dm b/code/modules/cargo/exports/organs.dm index 285e6dfdfa1..99db6127221 100644 --- a/code/modules/cargo/exports/organs.dm +++ b/code/modules/cargo/exports/organs.dm @@ -10,22 +10,22 @@ /datum/export/organ/alien/brain cost = 2000 unit_name = "alien brain" - export_types = list(/obj/item/organ/internal/brain/alien) + export_types = list(/obj/item/organ/brain/alien) /datum/export/organ/alien/acid cost = 1500 unit_name = "alien acid gland" - export_types = list(/obj/item/organ/internal/alien/acid) + export_types = list(/obj/item/organ/alien/acid) /datum/export/organ/alien/hivenode cost = 2000 unit_name = "alien hive node" - export_types = list(/obj/item/organ/internal/alien/hivenode) + export_types = list(/obj/item/organ/alien/hivenode) /datum/export/organ/alien/neurotoxin cost = 2000 unit_name = "alien neurotoxin gland" - export_types = list(/obj/item/organ/internal/alien/neurotoxin) + export_types = list(/obj/item/organ/alien/neurotoxin) /datum/export/organ/alien/resinspinner cost = 1000 @@ -34,9 +34,9 @@ /datum/export/organ/alien/plasmavessel cost = 1000 unit_name = "alien plasma vessel" - export_types = list(/obj/item/organ/internal/alien/plasmavessel) + export_types = list(/obj/item/organ/alien/plasmavessel) -/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/internal/alien/plasmavessel/P) +/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/alien/plasmavessel/P) return ..() + (P.max_plasma * 2) + (P.plasma_rate * 20) @@ -44,32 +44,32 @@ /datum/export/organ/alien/embryo cost = 5000 // Allows buyer to set up his own alien farm. unit_name = "alien embryo" - export_types = list(/obj/item/organ/internal/body_egg/alien_embryo) + export_types = list(/obj/item/organ/body_egg/alien_embryo) /datum/export/organ/alien/eggsac cost = 10000 // Even better than a single embryo. unit_name = "alien egg sac" - export_types = list(/obj/item/organ/internal/alien/eggsac) + export_types = list(/obj/item/organ/alien/eggsac) // Other alien organs. /datum/export/organ/alien/abductor cost = 2500 unit_name = "abductor gland" - export_types = list(/obj/item/organ/internal/gland) + export_types = list(/obj/item/organ/gland) /datum/export/organ/alien/changeling_egg cost = 50000 // Holy. Fuck. unit_name = "changeling egg" - export_types = list(/obj/item/organ/internal/body_egg/changeling_egg) + export_types = list(/obj/item/organ/body_egg/changeling_egg) /datum/export/organ/hivelord cost = 1500 unit_name = "active hivelord core" - export_types = list(/obj/item/organ/internal/hivelord_core) + export_types = list(/obj/item/organ/hivelord_core) -/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/internal/hivelord_core/C) +/datum/export/organ/alien/plasmavessel/get_cost(obj/item/organ/hivelord_core/C) if(C.inert) return ..() / 3 if(C.preserved) @@ -89,20 +89,20 @@ /datum/export/organ/human/heart cost = 500 unit_name = "heart" - export_types = list(/obj/item/organ/internal/heart) + export_types = list(/obj/item/organ/heart) /datum/export/organ/human/lungs cost = 400 unit_name = "pair" message = "of lungs" - export_types = list(/obj/item/organ/internal/lungs) + export_types = list(/obj/item/organ/lungs) /datum/export/organ/human/appendix cost = 50 unit_name = "appendix" - export_types = list(/obj/item/organ/internal/appendix) + export_types = list(/obj/item/organ/appendix) -/datum/export/organ/human/appendix/get_cost(obj/item/organ/internal/appendix/O) +/datum/export/organ/human/appendix/get_cost(obj/item/organ/appendix/O) if(O.inflamed) return 0 return ..() \ No newline at end of file diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 8fcbcff8bcc..ef1c1ef85cd 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -3,7 +3,7 @@ var/group = "" var/hidden = FALSE var/contraband = FALSE - var/cost = 7 // Minimum cost, or infinite points are possible. + var/cost = 700 // Minimum cost, or infinite points are possible. var/access = FALSE var/list/contains = null var/crate_name = "crate" @@ -53,6 +53,12 @@ contains = list(/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/weapon/tank/internals/emergency_oxygen, + /obj/item/weapon/tank/internals/emergency_oxygen, + /obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air, /obj/item/weapon/tank/internals/air) @@ -105,6 +111,12 @@ crate_name = "weed control crate" crate_type = /obj/structure/closet/crate/secure/hydroponics +/datum/supply_pack/emergency/metalfoam + name = "Metal Foam Grenade Crate" + cost = 1000 + contains = list(/obj/item/weapon/storage/box/metalfoam) + crate_name = "metal foam grenade crate" + /datum/supply_pack/emergency/specialops name = "Special Ops Supplies" hidden = TRUE @@ -115,16 +127,16 @@ /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/pen/sleepy, /obj/item/weapon/grenade/chem_grenade/incendiary) - crate_name = "special ops crate" - crate_type = /obj/structure/closet/crate + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals /datum/supply_pack/emergency/syndicate name = "NULL_ENTRY" hidden = TRUE cost = 14000 contains = list(/obj/item/weapon/storage/box/syndicate) - crate_name = "crate" - crate_type = /obj/structure/closet/crate + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals dangerous = TRUE ////////////////////////////////////////////////////////////////////////////// @@ -393,7 +405,7 @@ contraband = TRUE contains = list(/obj/item/clothing/head/helmet/justice, /obj/item/clothing/mask/gas/sechailer) - crate_name = "justice enforcer crate" + crate_name = "security clothing crate" ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Engineering ///////////////////////////////////// @@ -440,7 +452,7 @@ /datum/supply_pack/engineering/engiequipment name = "Engineering Gear Crate" - cost = 1000 + cost = 1300 contains = list(/obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, /obj/item/weapon/storage/belt/utility, @@ -452,7 +464,9 @@ /obj/item/clothing/head/welding, /obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat, - /obj/item/clothing/head/hardhat) + /obj/item/clothing/head/hardhat, + /obj/item/clothing/glasses/meson/engine, + /obj/item/clothing/glasses/meson/engine) crate_name = "engineering gear crate" /datum/supply_pack/engineering/engine/spacesuit @@ -464,10 +478,34 @@ /obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space, /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath,) + /obj/item/clothing/mask/breath) crate_name = "space suit crate" crate_type = /obj/structure/closet/crate/secure +/datum/supply_pack/engineering/shieldgen + name = "Anti-breach Shield Projector Crate" + cost = 2500 + contains = list(/obj/machinery/shieldgen, + /obj/machinery/shieldgen) + crate_name = "anti-breach shield projector crate" + +/datum/supply_pack/engineering/grounding_rods + name = "Grounding Rod Crate" + cost = 1700 + contains = list(/obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod) + crate_name = "grounding rod crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/pacman + name = "P.A.C.M.A.N Generator Crate" + cost = 2500 + contains = list(/obj/machinery/power/port_gen/pacman) + crate_name = "PACMAN generator crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + /datum/supply_pack/engineering/solar name = "Solar Panel Crate" cost = 2000 @@ -668,6 +706,13 @@ contains = list(/obj/machinery/iv_drip) crate_name = "iv drip crate" +/datum/supply_pack/medical/defibs + name = "Defibrillator Crate" + cost = 2500 + contains = list(/obj/item/weapon/defibrillator/loaded, + /obj/item/weapon/defibrillator/loaded) + crate_name = "defibrillator crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Science ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -874,7 +919,7 @@ contraband = TRUE cost = 5000 contains = list(/mob/living/simple_animal/butterfly) - crate_name = "butterflies crate" + crate_name = "entomology samples crate" /datum/supply_pack/organic/critter/butterfly/generate() . = ..() @@ -938,7 +983,7 @@ crate_name = "exotic seeds crate" /datum/supply_pack/organic/hydroponics/beekeeping_fullkit - name = "Beekeeping Starter Kit" + name = "Beekeeping Starter Crate" cost = 1500 contains = list(/obj/structure/beebox, /obj/item/honey_frame, @@ -947,10 +992,10 @@ /obj/item/queen_bee/bought, /obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit) - crate_name = "beekeeping starter kit" + crate_name = "beekeeping starter crate" /datum/supply_pack/organic/hydroponics/beekeeping_suits - name = "2 Beekeeper suits" + name = "Beekeeper Suit Crate" cost = 1000 contains = list(/obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit, @@ -1092,9 +1137,28 @@ /obj/item/clothing/suit/bluetag, /obj/item/clothing/suit/bluetag, /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, /obj/item/clothing/head/helmet/bluetaghelm) crate_name = "laser tag crate" +/datum/supply_pack/misc/lasertag/pins + name = "Laser Tag Firing Pins Crate" + cost = 2000 + contraband = TRUE + contains = list(/obj/item/weapon/storage/box/lasertagpins) + crate_name = "laser tag crate" + +/datum/supply_pack/misc/clownpin + name = "Hilarious Firing Pin Crate" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/device/firing_pin/clown) + // It's /technically/ a toy. For the clown, at least. + crate_name = "toy crate" + /datum/supply_pack/misc/religious_supplies name = "Religious Supplies Crate" cost = 4000 // it costs so much because the Space Church is ran by Space Jews @@ -1114,7 +1178,7 @@ /obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit, /obj/item/weapon/poster/legit) - crate_name = "Corporate Posters Crate" + crate_name = "corporate posters crate" /datum/supply_pack/misc/paper name = "Bureaucracy Crate" @@ -1253,6 +1317,7 @@ /obj/item/clothing/head/collectable/wizard, /obj/item/clothing/head/collectable/hardhat, /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/HoP, /obj/item/clothing/head/collectable/thunderdome, /obj/item/clothing/head/collectable/swat, /obj/item/clothing/head/collectable/slime, @@ -1353,4 +1418,19 @@ /obj/item/weapon/gun/projectile/automatic/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol, /obj/item/ammo_box/magazine/toy/pistol) - crate_name = "foam force pistols crate" + crate_name = "foam force crate" + +/datum/supply_pack/misc/artsupply + name = "Art Supplies" + cost = 800 + contains = list(/obj/structure/easel, + /obj/structure/easel, + /obj/item/weapon/canvas/nineteenXnineteen, + /obj/item/weapon/canvas/nineteenXnineteen, + /obj/item/weapon/canvas/twentythreeXnineteen, + /obj/item/weapon/canvas/twentythreeXnineteen, + /obj/item/weapon/canvas/twentythreeXtwentythree, + /obj/item/weapon/canvas/twentythreeXtwentythree, + /obj/item/toy/crayon/rainbow, + /obj/item/toy/crayon/rainbow) + crate_name= "art supply crate" diff --git a/code/modules/client/client defines.dm b/code/modules/client/client defines.dm index bb3889ced3e..78b19cb7198 100644 --- a/code/modules/client/client defines.dm +++ b/code/modules/client/client defines.dm @@ -49,4 +49,5 @@ //datum that controls the displaying and hiding of tooltips var/datum/tooltip/tooltips - + //Used for var edit flagging, also defined in datums (clients are not a child of datums for some reason) + var/var_edited = 0 \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7ffb0c72eb0..333b764203a 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1191,4 +1191,4 @@ var/list/preferences_datums = list() if(icon_updates) character.update_body() character.update_hair() - character.update_mutcolor() + character.update_body_parts() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d808eef5e0f..c459acf5217 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -19,6 +19,38 @@ var/gang //Is this a gang outfit? var/scan_reagents = 0 //Can the wearer see reagents while it's equipped? + //Var modification - PLEASE be careful with this I know who you are and where you live + var/list/user_vars_to_edit = list() //VARNAME = VARVALUE eg: "name" = "butts" + var/list/user_vars_remembered = list() //Auto built by the above + dropped() + equipped() + + +/obj/item/clothing/Destroy() + dropped() + user_vars_remembered = null //Oh god somebody put REFERENCES in here? not to worry, we'll clean it up + return ..() + + +/obj/item/clothing/dropped(mob/user) + ..() + if(user_vars_remembered && user_vars_remembered.len) + for(var/variable in user_vars_remembered) + if(variable in user.vars) + if(user.vars[variable] == user_vars_to_edit[variable]) //Is it still what we set it to? (if not we best not change it) + user.vars[variable] = user_vars_remembered[variable] + user_vars_remembered = list() + + +/obj/item/clothing/equipped(mob/user, slot) + ..() + + if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item? + for(var/variable in user_vars_to_edit) + if(variable in user.vars) + user_vars_remembered[variable] = user.vars[variable] + user.vars[variable] = user_vars_to_edit[variable] + + + //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears name = "ears" @@ -154,9 +186,7 @@ BLIND // can't see anything if(adjusted_flags) slot_flags = adjusted_flags user.wear_mask_update(src, toggle_off = mask_adjusted) - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() + user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index c5e4954152c..e3d60ce2028 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -62,7 +62,7 @@ if(O.level != 1) continue - if(O.invisibility == 101) + if(O.invisibility == INVISIBILITY_MAXIMUM) O.invisibility = 0 invis_objects += O @@ -75,7 +75,7 @@ invis_objects -= O var/turf/T = O.loc if(T && T.intact) - O.invisibility = 101 + O.invisibility = INVISIBILITY_MAXIMUM /obj/item/clothing/glasses/meson/engine/proc/t_ray_on() if(!istype(loc,/mob/living/carbon/human)) diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 54b704195e2..c969147f9a3 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -126,6 +126,12 @@ desc = "Now you too can beat prisoners, set silly sentences, and arrest for no reason!" icon_state = "hoscap" +/obj/item/clothing/head/collectable/HoP + name = "collectable HoP hat" + desc = "It's your turn to demand excessive paperwork, signatures, stamps, and hire more clowns! Papers, please!" + icon_state = "hopcap" + dog_fashion = /datum/dog_fashion/head/hop + /obj/item/clothing/head/collectable/thunderdome name = "collectable Thunderdome helmet" desc = "Go Red! I mean Green! I mean Red! No Green!" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index ba61b61699a..3804a67ef7f 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -62,7 +62,6 @@ flags_cover = MASKCOVERSEYES burn_state = FLAMMABLE actions_types = list(/datum/action/item_action/adjust) - dog_fashion = /datum/dog_fashion/head/clown /obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user) @@ -80,8 +79,12 @@ var/choice = input(user,"To what form do you wish to Morph this mask?","Morph Mask") in options - if(src && choice && !user.stat && in_range(user,src)) + if(src && choice && !user.incapacitated() && in_range(user,src)) icon_state = options[choice] + user.update_inv_wear_mask() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() user << "Your Clown Mask has now morphed into [choice], all praise the Honkmother!" return 1 @@ -105,7 +108,7 @@ actions_types = list(/datum/action/item_action/adjust) /obj/item/clothing/mask/gas/mime/attack_self(mob/user) - cycle_mask(usr) + cycle_mask(user) /obj/item/clothing/mask/gas/mime/proc/cycle_mask(mob/user) switch(icon_state) @@ -118,6 +121,9 @@ if("sexymime") icon_state = "mime" user.update_inv_wear_mask() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() user << "You adjust your mask to portray a different emotion." return 1 diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index e32ca287c73..e1f8ad0bdcc 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -167,7 +167,7 @@ sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow,1) sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba,1) sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357,1) - sec_briefcase.handle_item_insertion(new /obj/item/weapon/c4,1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/grenade/plastic/x4,1) var/obj/item/device/pda/heads/pda = H.belt pda.owner = H.real_name @@ -347,7 +347,7 @@ /obj/item/weapon/storage/firstaid/regular=1,\ /obj/item/weapon/storage/box/flashbangs=1,\ /obj/item/device/flashlight=1,\ - /obj/item/weapon/c4=1) + /obj/item/weapon/grenade/plastic/x4=1) /datum/outfit/death_commando/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 0f7accc2e5d..da3698024d0 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -20,10 +20,11 @@ else footstep++ - new/obj/item/weapon/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180)), 5) //honk + new/obj/item/weapon/grown/bananapeel/specialpeel(get_step(src,turn(usr.dir, 180))) //honk bananium.use_amount_type(100, MAT_BANANIUM) if(bananium.amount(MAT_BANANIUM) < 100) on = !on + flags &= ~NOSLIP update_icon() loc << "You ran out of bananium!" else @@ -37,8 +38,6 @@ user << "You cannot retrieve any bananium from the prototype shoes." /obj/item/clothing/shoes/clown_shoes/banana_shoes/attackby(obj/item/O, mob/user, params) - if(!istype(O,/obj/item/stack/sheet)) - return if(!bananium.get_item_material_amount(O)) user << "This item has no bananium!" return @@ -46,10 +45,10 @@ user << "You can't drop [O]!" return - var/obj/item/stack/sheet/S = O - var/sheet_amount = bananium.insert_stack(O,S.amount) - if(sheet_amount) - user << "You insert [sheet_amount] bananium sheets into the prototype shoes." + var/bananium_amount = bananium.insert_item(O) + if(bananium_amount) + user << "You insert [O] into the prototype shoes." + qdel(O) else user << "You are unable to insert more bananium!" @@ -63,6 +62,10 @@ on = !on update_icon() user << "You [on ? "activate" : "deactivate"] the prototype shoes." + if(on) + flags |= NOSLIP + else + flags &= ~NOSLIP else user << "You need bananium to turn the prototype shoes on!" diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index e039b6f5125..b08a0da4518 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -251,7 +251,7 @@ name = "Chronosuit View" density = 0 anchored = 1 - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT opacity = 0 mouse_opacity = 0 var/mob/holder = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index f72898189a9..d04c56c37e7 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -195,7 +195,7 @@ //Syndicate hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi name = "blood-red hardsuit helmet" - desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced helmet designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_helm" @@ -221,7 +221,7 @@ return on = !on if(on || force) - user << "You switch your hardsuit to travel mode." + user << "You switch your hardsuit to EVA mode, sacrificing speed for space protection." name = initial(name) desc = initial(desc) user.AddLuminosity(brightness_on) @@ -230,7 +230,7 @@ flags_inv |= visor_flags_inv cold_protection |= HEAD else - user << "You switch your hardsuit to combat mode." + user << "You switch your hardsuit to combat mode and can now run at full speed." name += " (combat)" desc = alt_desc user.AddLuminosity(-brightness_on) @@ -272,7 +272,7 @@ /obj/item/clothing/suit/space/hardsuit/syndi name = "blood-red hardsuit" - desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" @@ -290,7 +290,7 @@ //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite name = "elite syndicate hardsuit helmet" - desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders." + desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in EVA mode. Property of Gorlex Marauders." alt_desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders." icon_state = "hardsuit0-syndielite" item_color = "syndielite" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 6e15dfebe7a..2dd3343470f 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -12,12 +12,17 @@ /obj/item/clothing/suit/armor/vest name = "armor" desc = "A slim armored vest that protects against most types of damage." - icon_state = "armor" - item_state = "armor" + icon_state = "armoralt" + item_state = "armoralt" blood_overlay_type = "armor" armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) dog_fashion = /datum/dog_fashion/back +/obj/item/clothing/suit/armor/vest/alt + desc = "An armored vest that protects against most types of damage." + icon_state = "armor" + item_state = "armor" + /obj/item/clothing/suit/armor/hos name = "armored greatcoat" desc = "A greatcoat enchanced with a special alloy for some protection and style for those with a commanding presence." @@ -40,8 +45,8 @@ /obj/item/clothing/suit/armor/vest/warden name = "warden's jacket" - desc = "A red jacket with silver rank pips and body armor strapped on top." - icon_state = "warden_jacket" + desc = "A navy-blue armored jacket with blue shoulder designations and '/Warden/' stitched into one of the chest pockets." + icon_state = "warden_alt" item_state = "armor" body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS|HANDS @@ -52,8 +57,8 @@ /obj/item/clothing/suit/armor/vest/warden/alt name = "warden's armored jacket" - desc = "A navy-blue armored jacket with blue shoulder designations and '/Warden/' stitched into one of the chest pockets." - icon_state = "warden_alt" + desc = "A red jacket with silver rank pips and body armor strapped on top." + icon_state = "warden_jacket" /obj/item/clothing/suit/armor/vest/leather name = "security overcoat" diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index f74ff4feb36..b91ac8ab04f 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -5,9 +5,18 @@ desc = "It's a cape that can be worn on your back." icon = 'icons/obj/clothing/cloaks.dmi' icon_state = "qmcloak" + item_state = "qmcloak" w_class = 2 body_parts_covered = CHEST|GROIN|LEGS|ARMS +/obj/item/clothing/head/cloakhood + name = "cloak hood" + icon = 'icons/obj/clothing/hats.dmi' + icon_state = "golhood" + desc = "A hood for a cloak" + body_parts_covered = HEAD + flags = NODROP + flags_inv = HIDEHAIR|HIDEEARS /obj/item/clothing/cloak/suicide_act(mob/user) user.visible_message("[user] is strangling themself with [src]! It looks like they're trying to commit suicide.") @@ -52,6 +61,27 @@ allowed = list(/obj/item/weapon/gun/energy/laser/captain) armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 10, rad = 10) +/obj/item/clothing/suit/hooded/cloak/drake + name = "ash drake hide cloak" + icon_state = "golclo" + desc = "A cloak fashioned from the hide of an ash drake, offers incredible defense while still remaining lightweight. " + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/internals, /obj/item/weapon/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/weapon/gun/energy/kinetic_accelerator, /obj/item/weapon/pickaxe, /obj/item/weapon/twohanded/spear) + armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50) + hooded = 1 + hoodtype = /obj/item/clothing/head/cloakhood/drake + heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS + max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT + unacidable = 1 + +/obj/item/clothing/head/cloakhood/drake + name = "ash drake hide hood" + icon_state = "golhood" + desc = "A stiff hood made of ash drake hide." + armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50) + heat_protection = HEAD + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + unacidable = 1 + /* //wip /obj/item/clothing/cloak/wizard //Not actually obtainable until proper balancing can be done name = "cloak of invisibility" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index ae65b790782..d3bb738735c 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,7 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/soap,/obj/item/device/sensor_device) + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/weapon/soap,/obj/item/device/sensor_device,/obj/item/weapon/tank/internals/emergency_oxygen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) togglename = "buttons" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 1842f608827..9fcc55c5ad1 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -490,3 +490,10 @@ /obj/item/clothing/head/winterhood/miner icon_state = "winterhood_miner" + +/obj/item/clothing/suit/spookyghost + name = "spooky ghost" + desc = "this is obviously just a bedsheet, but maybe try it on?" + icon_state = "bedsheet" + user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = 1, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) + alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index fab30b8d4e3..5f7b4386db7 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -56,8 +56,7 @@ if(H.head) H << "You're already wearing something on your head!" return - else - H.equip_to_slot_if_possible(hood,slot_head,0,0,1) + else if(H.equip_to_slot_if_possible(hood,slot_head,0,0,1)) suittoggled = 1 src.icon_state = "[initial(icon_state)]_t" H.update_inv_wear_suit() @@ -172,9 +171,8 @@ if(H.head) H << "You're already wearing something on your head!" return - else + else if(H.equip_to_slot_if_possible(helmet,slot_head,0,0,1)) H << "You engage the helmet on the hardsuit." - H.equip_to_slot_if_possible(helmet,slot_head,0,0,1) suittoggled = 1 H.update_inv_wear_suit() playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1) diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 975af383f15..6f7f9224e6e 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -13,17 +13,17 @@ name = "security jumpsuit" desc = "A tactical security jumpsuit for officers complete with nanotrasen belt buckle." icon_state = "security" - item_state = "r_suit" + item_state = "gy_suit" item_color = "security" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) strip_delay = 50 alt_covers_chest = 1 /obj/item/clothing/under/rank/warden - name = "warden's jumpsuit" - desc = "A tactical security jumpsuit for the warden with silver desginations and '/Warden/' stiched into the shoulders." + name = "security suit" + desc = "A formal security suit for officers complete with nanotrasen belt buckle." icon_state = "warden" - item_state = "r_suit" + item_state = "gy_suit" item_color = "warden" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) strip_delay = 50 @@ -57,7 +57,7 @@ name = "head of security's jumpsuit" desc = "A security jumpsuit decorated for those few with the dedication to achieve the position of Head of Security." icon_state = "hos" - item_state = "r_suit" + item_state = "gy_suit" item_color = "hos" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) strip_delay = 60 diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index e8f28379376..2c68ecb4ff9 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -31,7 +31,7 @@ category = CAT_WEAPON /datum/table_recipe/lance - name = "explosive lance (grenade)" + name = "explosive lance" result = /obj/item/weapon/twohanded/spear reqs = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/grenade = 1) @@ -39,15 +39,6 @@ time = 15 category = CAT_WEAPON -/datum/table_recipe/lance2 - name = "explosive lance (C4)" - result = /obj/item/weapon/twohanded/spear - reqs = list(/obj/item/weapon/twohanded/spear = 1, - /obj/item/weapon/c4 = 1) - parts = list(/obj/item/weapon/c4 = 1) - time = 40 - category = CAT_WEAPON - /datum/table_recipe/molotov name = "Molotov" @@ -88,7 +79,7 @@ /datum/table_recipe/tailclub name = "Tail Club" result = /obj/item/weapon/tailclub - reqs = list(/obj/item/organ/severedtail = 1, + reqs = list(/obj/item/severedtail = 1, /obj/item/stack/sheet/metal = 1) time = 40 category = CAT_WEAPON @@ -96,7 +87,7 @@ /datum/table_recipe/tailwhip name = "Liz O' Nine Tails" result = /obj/item/weapon/melee/chainofcommand/tailwhip - reqs = list(/obj/item/organ/severedtail = 1, + reqs = list(/obj/item/severedtail = 1, /obj/item/stack/cable_coil = 1) time = 40 category = CAT_WEAPON @@ -287,7 +278,7 @@ name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard time = 10 - reqs = list(/obj/item/organ/severedtail = 1) + reqs = list(/obj/item/severedtail = 1) category = CAT_MISC /datum/table_recipe/lizardhat_alternate @@ -321,11 +312,11 @@ category = CAT_MISC /datum/table_recipe/chemical_payload - name = "chemical payload (C4)" + name = "Chemical Payload (C4)" result = /obj/item/weapon/bombcore/chemical reqs = list( - /obj/item/weapon/stock_parts/matter_bin/super = 1, - /obj/item/weapon/c4 = 1, + /obj/item/weapon/stock_parts/matter_bin = 1, + /obj/item/weapon/grenade/plastic/c4 = 1, /obj/item/weapon/grenade/chem_grenade = 2 ) parts = list(/obj/item/weapon/stock_parts/matter_bin = 1, /obj/item/weapon/grenade/chem_grenade = 2) @@ -333,7 +324,7 @@ category = CAT_WEAPON /datum/table_recipe/chemical_payload2 - name = "chemical payload (gibtonite)" + name = "Chemical Payload (gibtonite)" result = /obj/item/weapon/bombcore/chemical reqs = list( /obj/item/weapon/stock_parts/matter_bin = 1, @@ -372,4 +363,13 @@ result = /obj/item/clothing/head/helmet/skull time = 30 reqs = list(/obj/item/stack/sheet/bone = 4) + category = CAT_PRIMAL + +/datum/table_recipe/drakecloak + name = "Ash Drake Cloak" + result = /obj/item/clothing/suit/hooded/cloak/drake + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 10, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/ashdrake = 5) category = CAT_PRIMAL \ No newline at end of file diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index 5232ed630e8..c94c4bf1edc 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -76,12 +76,12 @@ "If you were a carp I'd fi-lay you." ) /obj/item/weapon/valentine/attackby(obj/item/weapon/W, mob/user, params) + ..() if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon)) var/recipient = stripped_input(user, "Who is receiving this valentine?", "To:", null , 20) var/sender = stripped_input(user, "Who is sending this valentine?", "From:", null , 20) if(recipient && sender) name = "valentine - To: [recipient] From: [sender]" - ..() /obj/item/weapon/valentine/examine(mob/user) if(in_range(user, src) || isobserver(user)) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 3b34c7a89dc..793f267c948 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -438,7 +438,7 @@ /obj/effect/spacevine_controller - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT var/list/obj/effect/spacevine/vines = list() var/list/growth_queue = list() var/spread_multiplier = 5 diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm index 31123ef86ce..cd4911f231a 100644 --- a/code/modules/events/wizard/greentext.dm +++ b/code/modules/events/wizard/greentext.dm @@ -28,6 +28,7 @@ var/mob/living/last_holder var/mob/living/new_holder var/list/color_altered_mobs = list() + burn_state = FIRE_PROOF /obj/item/weapon/greentext/New() ..() @@ -75,6 +76,8 @@ last_holder = new_holder //long live the king /obj/item/weapon/greentext/Destroy() + if(burn_state != ON_FIRE) + return QDEL_HINT_LETMELIVE poi_list.Remove(src) for(var/mob/M in mob_list) var/message = "A dark temptation has passed from this world" @@ -83,4 +86,4 @@ M.color = initial(M.color) message += "..." M << message - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 70c2a6f2870..9eca1592029 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -467,9 +467,9 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite /obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\ /obj/item/clothing/shoes/chameleon, /obj/item/weapon/card/id/syndicate,\ /obj/item/clothing/mask/chameleon, /obj/item/clothing/glasses/thermal,\ - /obj/item/device/chameleon, /obj/item/weapon/card/emag,\ + /obj/item/device/chameleon, /obj/item/weapon/card/emag, /obj/item/weapon/grenade/plastic/x4,\ /obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\ - /obj/item/device/radio/headset/syndicate, /obj/item/weapon/c4,\ + /obj/item/device/radio/headset/syndicate, /obj/item/weapon/grenade/plastic/c4,\ /obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\ /obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/laser/captain,\ /obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\ @@ -642,7 +642,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite halitem.icon_state = "revolver" halitem.name = "Revolver" if(2) //c4 - halitem.icon = 'icons/obj/assemblies.dmi' + halitem.icon = 'icons/obj/grenade.dmi' halitem.icon_state = "plastic-explosive0" halitem.name = "Mysterious Package" if(prob(25)) @@ -685,7 +685,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite halimage = image('icons/effects/fire.dmi',target,"1",TURF_LAYER) if(3) //src << "C4" - halimage = image('icons/obj/assemblies.dmi',target,"plastic-explosive2",OBJ_LAYER+0.01) + halimage = image('icons/obj/grenade.dmi',target,"plastic-explosive2",OBJ_LAYER+0.01) if(client) client.images += halimage diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index 9ea0b9d7bb1..c71b1aa2a71 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -59,7 +59,7 @@ force = 15 //Smashing bottles over someoen's head hurts. - var/obj/item/organ/limb/affecting = user.zone_selected //Find what the player is aiming at + var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at var/armor_block = 0 //Get the target's armor values for normal attack damage. var/armor_duration = 0 //The more force the bottle has, the longer the duration. @@ -236,16 +236,58 @@ list_reagents = list("wine" = 100) /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe - name = "T&T Extra-Strong Absinthe" - desc = "An strong alcoholic drink brewed and distributed by Terb & Tonte Inc." + name = "Extra-Strong Absinthe" + desc = "An strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" list_reagents = list("absinthe" = 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New() + ..() + redact() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/proc/redact() + // There was a large fight in the coderbus about a player reference + // in absinthe. Ergo, this is why the name generation is now so + // complicated. Judge us kindly. + var/shortname = pickweight( + list("T&T" = 1, "A&A" = 1, "Generic" = 1)) + var/fullname + switch(shortname) + if("T&T") + fullname = "Teal and Tealer" + if("A&A") + fullname = "Ash and Asher" + if("Generic") + fullname = "Nanotrasen Cheap Imitations" + var/removals = list("\[REDACTED\]", "\[EXPLETIVE DELETED\]", + "\[EXPUNGED\]", "\[INFORMATION ABOVE YOUR SECURITY CLEARANCE\]", + "\[MOVE ALONG CITIZEN\]", "\[NOTHING TO SEE HERE\]") + var/chance = 50 + + if(prob(chance)) + shortname = pick_n_take(removals) + + var/list/final_fullname = list() + for(var/word in splittext(fullname, " ")) + if(prob(chance)) + word = pick_n_take(removals) + final_fullname += word + + fullname = jointext(final_fullname, " ") + + // Actually finally setting the new name and desc + name = "[shortname] [name]" + desc = "[desc] [fullname] Inc." + + /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium name = "Gwyn's Premium Absinthe" desc = "A potent alcoholic beverage, almost makes you forget the ash in your lungs." icon_state = "absinthepremium" +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium/redact() + return + //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 5a90cc0d225..7ba88bcd75a 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -9,7 +9,6 @@ var/slice_path // for sliceable food. path of the item resulting from the slicing var/slices_num var/eatverb - var/wrapped = 0 var/dried_type = null var/dry = 0 var/cooked_type = null //for microwave cooking. path of the resulting item after microwaving @@ -65,9 +64,6 @@ M << "You don't feel like eating any more junk food at the moment." return 0 - if(wrapped) - M << "You can't eat wrapped food!" - return 0 else if(fullness <= 50) M << "You hungrily [eatverb] some of \the [src] and gobble it down!" else if(fullness > 50 && fullness < 150) @@ -81,8 +77,6 @@ return 0 else if(!isbrain(M)) //If you're feeding it to someone else. - if(wrapped) - return 0 if(fullness <= (600 * (1 + M.overeatduration / 1000))) M.visible_message("[user] attempts to feed [M] [src].", \ "[user] attempts to feed [M] [src].") diff --git a/code/modules/food&drinks/food/snacks_meat.dm b/code/modules/food&drinks/food/snacks_meat.dm index 5000e581448..79cc725e8a8 100644 --- a/code/modules/food&drinks/food/snacks_meat.dm +++ b/code/modules/food&drinks/food/snacks_meat.dm @@ -129,30 +129,14 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 - wrapped = 0 list_reagents = list("nutriment" = 2) filling_color = "#CD853F" -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user) - if(wrapped) - Unwrap(user) - /obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() visible_message("[src] expands!") new /mob/living/carbon/monkey(get_turf(src)) qdel(src) -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user) - icon_state = "monkeycube" - desc = "Just add water!" - user << "You unwrap the cube." - wrapped = 0 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - wrapped = 1 - /obj/item/weapon/reagent_containers/food/snacks/enchiladas name = "enchiladas" desc = "Viva La Mexico!" diff --git a/code/modules/food&drinks/food/snacks_other.dm b/code/modules/food&drinks/food/snacks_other.dm index f962ff5e48e..babef429153 100644 --- a/code/modules/food&drinks/food/snacks_other.dm +++ b/code/modules/food&drinks/food/snacks_other.dm @@ -33,29 +33,10 @@ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar name = "chocolate bar" desc = "Such, sweet, fattening food." - icon_state = "chocolatebarunwrapped" - wrapped = 0 + icon_state = "chocolatebar" list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/attack_self(mob/user) - if(wrapped) - Unwrap(user) - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/proc/Unwrap(mob/user) - icon_state = "chocolatebarunwrapped" - desc = "It won't make you all sticky." - user << "You remove the foil." - wrapped = 0 - - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/wrapped - desc = "It's wrapped in some foil." - icon_state = "chocolatebar" - wrapped = 1 - /obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice name = "huge mushroom slice" desc = "A slice from a huge mushroom." @@ -327,4 +308,11 @@ icon_state = "honeybar" bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2) list_reagents = list("nutriment" = 5, "honey" = 5) - filling_color = "#F2CE91" \ No newline at end of file + filling_color = "#F2CE91" + +/obj/item/weapon/reagent_containers/food/snacks/stuffedlegion + name = "stuffed legion" + desc = "The former skull of a damned human, filled with goliath meat. It has a decorative lava pool made of ketchup and hotsauce." + icon_state = "stuffed_legion" + bonus_reagents = list("vitamin" = 3, "capsaicin" = 1, "tricordrazine" = 5) + list_reagents = list("nutriment" = 5, "vitamin" = 5, "capsaicin" = 2, "tricordrazine" = 10,) \ No newline at end of file diff --git a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm index 809f197ffad..b1e7f5632fd 100644 --- a/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm +++ b/code/modules/food&drinks/kitchen machinery/monkeyrecycler.dm @@ -102,7 +102,7 @@ playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1) grinded -= required_grind for(var/i = 0, i < cube_production, i++) - new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src.loc) + new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(src.loc) user << "The machine's display flashes that it has [grinded] monkeys worth of material left." else user << "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded]." diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm index a775bcbad99..e3c86d5732e 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm @@ -39,7 +39,7 @@ /datum/table_recipe/appendixburger name = "Appendix burger" reqs = list( - /obj/item/organ/internal/appendix = 1, + /obj/item/organ/appendix = 1, /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix @@ -48,7 +48,7 @@ /datum/table_recipe/brainburger name = "Brain burger" reqs = list( - /obj/item/organ/internal/brain = 1, + /obj/item/organ/brain = 1, /obj/item/weapon/reagent_containers/food/snacks/bun = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm index 902a398a6c3..63890d8b83f 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm @@ -78,7 +78,7 @@ /datum/table_recipe/braincake name = "Brain cake" reqs = list( - /obj/item/organ/internal/brain = 1, + /obj/item/organ/brain = 1, /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm index 10e2fb70558..eba85761993 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm @@ -33,7 +33,7 @@ name = "Lizard tail kebab" reqs = list( /obj/item/stack/rods = 1, - /obj/item/organ/severedtail = 1 + /obj/item/severedtail = 1 ) result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tail category = CAT_FOOD diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm index 8db215dae2c..6f299b87d31 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm @@ -256,4 +256,17 @@ /datum/reagent/consumable/honey = 5 ) result = /obj/item/weapon/reagent_containers/food/snacks/honeybar + category = CAT_FOOD + + +/datum/table_recipe/stuffedlegion + name = "Stuffed legion" + time = 40 + reqs = list( + /obj/item/weapon/reagent_containers/food/snacks/meat/steak/goliath = 1, + /obj/item/weapon/legion_skull = 1, + /datum/reagent/consumable/ketchup = 2, + /datum/reagent/consumable/capsaicin = 2 + ) + result = /obj/item/weapon/reagent_containers/food/snacks/stuffedlegion category = CAT_FOOD \ No newline at end of file diff --git a/code/modules/games/cards.dm b/code/modules/games/cards.dm index cbc8f0348a6..b3a3ba10654 100644 --- a/code/modules/games/cards.dm +++ b/code/modules/games/cards.dm @@ -122,8 +122,10 @@ w_class = 1 var/concealed = 0 + var/blank = 0 var/list/cards = list() var/datum/html_interface/hi + burn_state = FLAMMABLE /obj/item/weapon/hand/New(loc) . = ..() @@ -138,7 +140,17 @@ return ..() /obj/item/weapon/hand/attackby(obj/O, mob/user) - if(istype(O,/obj/item/weapon/hand)) + if(cards.len == 1 && istype(O, /obj/item/weapon/pen)) + var/datum/playingcard/P = cards[1] + if(!blank) + user << "You cannot write on that card." + return + var/cardtext = sanitize(input(user, "What do you wish to write on the card?", "Card Writing") as text|null, 50) + if(!cardtext) + return + P.name = cardtext + blank = 0 + else if(istype(O,/obj/item/weapon/hand)) var/obj/item/weapon/hand/H = O for(var/datum/playingcard/P in src.cards) H.cards.Add(P) diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm new file mode 100644 index 00000000000..8f1616f882e --- /dev/null +++ b/code/modules/games/cas.dm @@ -0,0 +1,144 @@ +// CARDS AGAINST SPESS +// This is a parody of Cards Against Humanity (https://en.wikipedia.org/wiki/Cards_Against_Humanity) +// which is licensed under CC BY-NC-SA 2.0, the full text of which can be found at the following URL: +// https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode +// Original code by Zuhayr, Polaris Station, ported with modifications + +var/global/list/cards_against_space + +/obj/item/toy/cards/deck/cas + name = "\improper CAS deck (white)" + desc = "A deck for the game Cards Against Spess, still popular after all these centuries. Warning: may include traces of broken fourth wall. This is the white deck." + icon = 'icons/obj/toy.dmi' + icon_state = "deck_caswhite_full" + deckstyle = "caswhite" + var/card_face = "cas_white" + var/blanks = 10 + var/decksize = 150 + var/card_text_file = "strings/cas_white.txt" + var/list/allcards = list() + +/obj/item/toy/cards/deck/cas/black + name = "\improper CAS deck (black)" + desc = "A deck for the game Cards Against Spess, still popular after all these centuries. Warning: may include traces of broken fourth wall. This is the black deck." + icon_state = "deck_casblack_full" + deckstyle = "casblack" + card_face = "cas_black" + blanks = 0 + decksize = 50 + card_text_file = "strings/cas_black.txt" + +/obj/item/toy/cards/deck/cas/New() + if(!cards_against_space) //saves loading from the files every single time a new deck is created, but still lets each deck have a random assortment, it's purely an optimisation + cards_against_space = list("cas_white" = file2list("strings/cas_white.txt"),"cas_black" = file2list("strings/cas_black.txt")) + allcards = cards_against_space[card_face] + var/list/possiblecards = allcards.Copy() + if(possiblecards.len < decksize) // sanity check + decksize = (possiblecards.len - 1) + var/list/randomcards = list() + while (randomcards.len < decksize) + randomcards += pick_n_take(possiblecards) + for(var/i=1 to randomcards.len) + var/cardtext = randomcards[i] + var/datum/playingcard/P + P = new() + P.name = "[cardtext]" + P.card_icon = "[src.card_face]" + cards += P + if(!blanks) + return + for(var/x=1 to blanks) + var/datum/playingcard/P + P = new() + P.name = "Blank Card" + P.card_icon = "cas_white" + cards += P + shuffle(cards) // distribute blank cards throughout deck + +/obj/item/toy/cards/deck/cas/attack_hand(mob/user) + if(user.lying) + return + if(cards.len == 0) + user << "There are no more cards to draw!" + return + var/obj/item/toy/cards/singlecard/cas/H = new/obj/item/toy/cards/singlecard/cas(user.loc) + var/datum/playingcard/choice = cards[1] + if (choice.name == "Blank Card") + H.blank = 1 + H.name = choice.name + H.buffertext = choice.name + H.icon_state = choice.card_icon + H.card_face = choice.card_icon + H.parentdeck = src + src.cards -= choice + H.pickup(user) + user.put_in_hands(H) + user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.") + update_icon() + +/obj/item/toy/cards/deck/cas/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/toy/cards/singlecard/cas)) + var/obj/item/toy/cards/singlecard/cas/SC = I + if(!user.unEquip(SC)) + user << "The card is stuck to your hand, you can't add it to the deck!" + return + var/datum/playingcard/RC // replace null datum for the re-added card + RC = new() + RC.name = "[SC.name]" + RC.card_icon = SC.card_face + cards += RC + user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.") + qdel(SC) + update_icon() + +/obj/item/toy/cards/deck/cas/update_icon() + if(cards.len < 26) + icon_state = "deck_[deckstyle]_low" + +/obj/item/toy/cards/singlecard/cas + name = "CAS card" + desc = "A CAS card." + icon_state = "cas_white" + flipped = 0 + var/card_face = "cas_white" + var/blank = 0 + var/buffertext = "A funny bit of text." + +/obj/item/toy/cards/singlecard/cas/examine(mob/user) + if (flipped) + user << "The card is face down." + else if (blank) + user << "The card is blank. Write on it with a pen." + else + user << "The card reads: [name]" + +/obj/item/toy/cards/singlecard/cas/Flip() + set name = "Flip Card" + set category = "Object" + set src in range(1) + if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + return + if(!flipped) + name = "CAS card" + else if(flipped) + name = buffertext + flipped = !flipped + update_icon() + +/obj/item/toy/cards/singlecard/cas/update_icon() + if(flipped) + icon_state = "[card_face]_flipped" + else + icon_state = "[card_face]" + +/obj/item/toy/cards/singlecard/cas/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/weapon/pen)) + if(!blank) + user << "You cannot write on that card." + return + var/cardtext = stripped_input(user, "What do you wish to write on the card?", "Card Writing", "", 50) + if(!cardtext) + return + name = cardtext + buffertext = cardtext + blank = 0 \ No newline at end of file diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index d19129b3ad1..cc50f155f0b 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -204,6 +204,6 @@ emergency_shutdown() ..() -/obj/machinery/computer/holodeck/blob_act() +/obj/machinery/computer/holodeck/blob_act(obj/effect/blob/B) emergency_shutdown() ..() \ No newline at end of file diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index d0beeca9d4d..dbed389e78a 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -7,7 +7,7 @@ /obj/effect/holodeck_effect icon = 'icons/mob/screen_gen.dmi' icon_state = "x2" - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT /obj/effect/holodeck_effect/proc/activate(var/obj/machinery/computer/holodeck/HC) return diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index d231455280c..1f062578259 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -15,7 +15,11 @@ var/datum/plant_gene/target var/operation = "" - var/rating = 0 // TODO: add failures, make it useful + var/rating = 0 + var/max_extract_pot = 50 + // The cap on potency gene extraction. + // This number is for T1, each upgraded part adds 5% for a tech level above T1. + // At T4, it reaches 95%. /obj/machinery/plantgenes/New() ..() @@ -24,7 +28,6 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/weapon/stock_parts/scanning_module(src) component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) - component_parts += new /obj/item/weapon/stock_parts/micro_laser(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) RefreshParts() @@ -32,6 +35,7 @@ rating = 0 for(var/obj/item/weapon/stock_parts/S in component_parts) rating += S.rating-1 + max_extract_pot = initial(max_extract_pot) + rating*5 /obj/machinery/plantgenes/update_icon() ..() @@ -90,7 +94,7 @@ if(!user) return - var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) // Set up the popup browser window + var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) if(!( in_range(src, user) || istype(user, /mob/living/silicon) )) popup.close() return @@ -114,16 +118,18 @@ switch(operation) if("remove") dat += "[target.get_name()] gene from \the [seed]?
" -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures if("extract") dat += "[target.get_name()] gene from \the [seed]?
" dat += "The sample will be destroyed in process!" + if(istype(target, /datum/plant_gene/core/potency)) + var/datum/plant_gene/core/gene = target + if(gene.value > max_extract_pot) + dat += "

This device's extraction capabilities are currently limited to [max_extract_pot] potency. " + dat += "Target gene will be degraded to [max_extract_pot] potency on extraction." if("replace") dat += "[target.get_name()] gene with [disk.gene.get_name()]?
" -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures if("insert") dat += "[disk.gene.get_name()] gene into \the [seed]?
" -// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures dat += "
Confirm " dat += "Abort
" popup.set_content(dat) @@ -274,6 +280,9 @@ if("extract") if(disk && !disk.read_only) disk.gene = G + if(istype(G, /datum/plant_gene/core/potency)) + var/datum/plant_gene/core/gene = G + gene.value = min(gene.value, max_extract_pot) disk.update_name() qdel(seed) seed = null @@ -339,6 +348,19 @@ seed.icon_state = "seed-x" + +// Gene modder for seed vault ship, built with high-end alien (?) parts. +/obj/machinery/plantgenes/seedvault/New() + ..() + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/plantgenes(src) + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/stock_parts/scanning_module/triphasic(src) + component_parts += new /obj/item/weapon/stock_parts/micro_laser/quadultra(src) + component_parts += new /obj/item/weapon/stock_parts/manipulator/femto(src) + RefreshParts() + + /* * Plant DNA disk */ diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 83e1edfe366..306633d56bc 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -129,15 +129,8 @@ /obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(atom/movable/AM) if(seed) - var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip) - if(S && !ispath(trash, /obj/item/weapon/grown) && iscarbon(AM)) - var/mob/living/carbon/M = AM - var/stun = max(seed.potency * S.rate * 2, 1) - var/weaken = max(seed.potency * S.rate, 0.5) - if(M.slip(stun, weaken, src)) - for(var/datum/plant_gene/trait/T in seed.genes) - T.on_slip(src, M) - return 1 + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_cross(src, AM) ..() diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 343c655a6e7..c5abc2caf69 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -114,5 +114,7 @@ desc = "A synthetic banana peel." /obj/item/weapon/grown/bananapeel/specialpeel/Crossed(AM) - if(..()) - qdel(src) \ No newline at end of file + if(iscarbon(AM)) + var/mob/living/carbon/carbon = AM + if(carbon.slip(2, 2, src, FALSE)) + qdel(src) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index acc3d489f09..86927e59be2 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -57,8 +57,8 @@ if(H.gloves) return 0 var/organ = ((H.hand ? "l_":"r_") + "arm") - var/obj/item/organ/limb/affecting = H.get_organ(organ) - if(affecting.take_damage(0, force)) + var/obj/item/bodypart/affecting = H.get_bodypart(organ) + if(affecting && affecting.take_damage(0, force)) H.update_damage_overlays(0) else C.take_organ_damage(0,force) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index cd6cd6f6732..17de41308f2 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -50,15 +50,8 @@ /obj/item/weapon/grown/Crossed(atom/movable/AM) if(seed) - var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip) - if(S && iscarbon(AM)) - var/mob/living/carbon/M = AM - var/stun = max(seed.potency * S.rate * 2, 1) - var/weaken = max(seed.potency * S.rate, 0.5) - if(M.slip(stun, weaken, src)) - for(var/datum/plant_gene/trait/T in seed.genes) - T.on_slip(src, M) - return 1 + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_cross(src, AM) ..() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index a4b6a92c36a..40f012af0d3 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -156,6 +156,8 @@ /datum/plant_gene/trait/proc/on_consume(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) return +/datum/plant_gene/trait/proc/on_cross(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) + return /datum/plant_gene/trait/proc/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target) return /datum/plant_gene/trait/proc/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) @@ -177,11 +179,28 @@ /datum/plant_gene/trait/slip // Makes plant slippery, unless it has a grown-type trash. Then the trash gets slippery. // Applies other trait effects (teleporting, etc) to the target by on_slip. - // For code, see grown.dm name = "Slippery Skin" rate = 0.1 examine_line = "It has a very slippery skin." +/datum/plant_gene/trait/slip/on_cross(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) + if(iscarbon(target)) + var/obj/item/seeds/seed = G.seed + var/mob/living/carbon/M = target + + var/stun_len = seed.potency * rate + if(istype(G) && ispath(G.trash, /obj/item/weapon/grown)) + return + + if(!istype(G, /obj/item/weapon/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) + stun_len /= 3 + + var/stun = max(stun_len * 2, 1) + var/weaken = max(stun_len, 0.5) + + if(M.slip(stun, weaken, G)) + for(var/datum/plant_gene/trait/T in seed.genes) + T.on_slip(src, M) /datum/plant_gene/trait/cell_charge // Cell recharging trait. Charges all mob's power cells to (potency*rate)% mark when eaten. @@ -189,18 +208,18 @@ // Small (potency*rate*5) chance to shock squish or slip target for (potency*rate*5) damage. // Multiplies max charge by (rate*1000) when used in potato power cells. name = "Electrical Activity" - rate = 0.01 + rate = 0.2 origin_tech = list("powerstorage" = 4) /datum/plant_gene/trait/cell_charge/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/C) - var/power = G.seed.potency*rate*5 + var/power = G.seed.potency*rate if(prob(power)) C.electrocute_act(round(power), G, 1, 1) /datum/plant_gene/trait/cell_charge/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target) if(iscarbon(target)) var/mob/living/carbon/C = target - var/power = G.seed.potency*rate*5 + var/power = G.seed.potency*rate if(prob(power)) C.electrocute_act(round(power), G, 1, 1) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index a919c48406b..5eba54312e5 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -5,7 +5,7 @@ /obj/item/seeds icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game. - w_class = 1 // Pocketable. + w_class = 1 burn_state = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. var/product // A type path. The thing that is created when the plant is harvested. @@ -15,10 +15,10 @@ var/icon_dead // Used to override dead icon (default is "[species]-dead"). You can use one dead icon for multiple closely related plants with it. var/icon_harvest // Used to override harvest icon (default is "[species]-harvest"). If null, plant will use [icon_grow][growthstages]. - var/lifespan = 25 // How long before the plant begins to take damage from age. - var/endurance = 15 // Amount of health the plant has. - var/maturation = 6 // Used to determine which sprite to switch to when growing. - var/production = 6 // Changes the amount of time needed for a plant to become harvestable. + var/lifespan = 25 // How long before the plant begins to take damage from age. + var/endurance = 15 // Amount of health the plant has. + var/maturation = 6 // Used to determine which sprite to switch to when growing. + var/production = 6 // Changes the amount of time needed for a plant to become harvestable. var/yield = 3 // Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested. var/oneharvest = 0 // If a plant is cleared from the tray after harvesting, e.g. a carrot. var/potency = 10 // The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways. diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 8a7f561fde5..ed87fcae838 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -120,7 +120,7 @@ Bartender belt = /obj/item/device/pda/bar ears = /obj/item/device/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender - suit = /obj/item/clothing/suit/armor/vest + suit = /obj/item/clothing/suit/armor/vest/alt backpack_contents = list(/obj/item/weapon/storage/box/beanbag=1) shoes = /obj/item/clothing/shoes/laceup diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index e62a8e155a2..457eed53abd 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -99,7 +99,7 @@ Warden shoes = /obj/item/clothing/shoes/jackboots suit = /obj/item/clothing/suit/armor/vest/warden gloves = /obj/item/clothing/gloves/color/black - head = /obj/item/clothing/head/warden + head = /obj/item/clothing/head/beret/sec/navywarden glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/device/assembly/flash/handheld l_pocket = /obj/item/weapon/restraints/handcuffs diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index fb38ee97255..399cae5df69 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -106,11 +106,11 @@ if(87) //1% chance new /obj/item/weed_extract(src) if(88) - new /obj/item/organ/internal/brain(src) + new /obj/item/organ/brain(src) if(89) - new /obj/item/organ/internal/brain/alien(src) + new /obj/item/organ/brain/alien(src) if(90) - new /obj/item/organ/internal/heart(src) + new /obj/item/organ/heart(src) if(91) new /obj/item/device/soulstone/anybody(src) if(92) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 1e9afbc17ad..58a7559c55c 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -390,6 +390,10 @@ else inserted_id.mining_points -= prize.cost new prize.equipment_path(src.loc) + feedback_add_details("mining_equipment_bought", + "[src.type]|[prize.equipment_path]") + // Add src.type to keep track of free golem purchases + // seperately. updateUsrDialog() return @@ -428,6 +432,8 @@ new /obj/item/weapon/weldingtool/hugetank(src.loc) if("Advanced Scanner") new /obj/item/device/t_scanner/adv_mining_scanner(src.loc) + + feedback_add_details("mining_voucher_redeemed", selection) qdel(voucher) /obj/machinery/mineral/equipment_vendor/ex_act(severity, target) @@ -488,6 +494,7 @@ /obj/item/device/wormhole_jaunter/attack_self(mob/user) user.visible_message("[user.name] activates the [src.name]!") + feedback_add_details("jaunter", "U") // user activated activate(user) /obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) @@ -527,11 +534,13 @@ if(triggered) usr.visible_message("The [src] overloads and activates!") + feedback_add_details("jaunter","E") // EMP accidental activation activate(usr) /obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user) if(user.get_item_by_slot(slot_belt) == src) user << "Your [src] activates, saving you from the chasm!" + feedback_add_details("jaunter","C") // chasm automatic activation activate(user) else user << "The [src] is not attached to your belt, preventing it from saving you from the chasm. RIP." @@ -862,6 +871,7 @@ throw_range = 5 var/loaded = 1 var/malfunctioning = 0 + var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it origin_tech = "biotech=4" /obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag) @@ -870,6 +880,9 @@ if(istype(target, /mob/living) && proximity_flag) if(istype(target, /mob/living/simple_animal)) var/mob/living/simple_animal/M = target + if(M.sentience_type != revive_type) + user << "[src] does not work on this sort of creature." + return if(M.stat == DEAD) M.faction = list("neutral") M.revive(full_heal = 1, admin_revive = 1) @@ -885,6 +898,7 @@ H.attack_same = 0 loaded = 0 user.visible_message("[user] injects [M] with [src], reviving it.") + feedback_add_details("lazarus_injector", "[M.type]") playsound(src,'sound/effects/refill.ogg',50,1) icon_state = "lazarus_empty" return @@ -1058,12 +1072,13 @@ w_class = 1 origin_tech = "biotech=1" -/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/internal/M, mob/user) - var/obj/item/organ/internal/hivelord_core/C = M - if(!istype(C, /obj/item/organ/internal/hivelord_core)) +/obj/item/weapon/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) + var/obj/item/organ/hivelord_core/C = M + if(!istype(C, /obj/item/organ/hivelord_core)) user << "The stabilizer only works on certain types of monster organs, generally regenerative in nature." return ..() C.preserved = 1 + feedback_add_details("hivelord_core", "[C.type]|stabilizer") // preserved user << "You inject the [M] with the stabilizer. It will no longer go inert." qdel(src) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 6ac52843391..4ff2c3d0c03 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -32,11 +32,11 @@ new /obj/item/clothing/suit/cultrobes(src) new /obj/item/weapon/bedsheet/cult(src) if(9) - new /obj/item/organ/internal/brain/alien(src) + new /obj/item/organ/brain/alien(src) if(10) - new /obj/item/organ/internal/heart/cursed(src) + new /obj/item/organ/heart/cursed(src) if(11) - new /obj/vehicle/lavaboat/dragon(src) + new /obj/item/ship_in_a_bottle(src) if(12) new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src) if(13) @@ -87,6 +87,7 @@ user.sight |= SEE_MOBS icon_state = "lantern" wisp.orbit(user, 20) + feedback_add_details("wisp_lantern","F") // freed else if(wisp.orbiting) @@ -100,6 +101,7 @@ wisp.loc = src user << "You return the wisp to the latern." icon_state = "lantern-blue" + feedback_add_details("wisp_lantern","R") // returned /obj/item/device/wisp_lantern/New() ..() @@ -143,6 +145,7 @@ PoolOrNew(/obj/effect/particle_effect/smoke, user.loc) user.forceMove(get_turf(linked)) + feedback_add_details("warp_cube","[src.type]") PoolOrNew(/obj/effect/particle_effect/smoke, user.loc) /obj/item/device/warp_cube/red @@ -215,6 +218,7 @@ /obj/item/device/immortality_talisman/attack_self(mob/user) if(cooldown < world.time) + feedback_add_details("immortality_talisman","U") // usage cooldown = world.time + 600 user.visible_message("[user] vanishes from reality, leaving a a hole in their place!") var/obj/effect/immortality_talisman/Z = new(get_turf(src.loc)) @@ -380,6 +384,19 @@ //Dragon Boat + +/obj/item/ship_in_a_bottle + name = "ship in a bottle" + desc = "A tiny ship inside a bottle." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_state = "ship_bottle" + +/obj/item/ship_in_a_bottle/attack_self(mob/user) + user << "You're not sure how they get the ships in these things, but you're pretty sure you know how to get it out." + playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1) + new /obj/vehicle/lavaboat/dragon(get_turf(src)) + qdel(src) + /obj/vehicle/lavaboat/dragon name = "mysterious boat" desc = "This boat moves where you will it, without the need for an oar." @@ -387,4 +404,4 @@ icon_state = "dragon_boat" generic_pixel_y = 2 generic_pixel_x = 1 - vehicle_move_delay = 1 \ No newline at end of file + vehicle_move_delay = 1 diff --git a/code/modules/mining/lavaland/weather.dm b/code/modules/mining/lavaland/weather.dm index 4e5ded6d903..d0572ff0531 100644 --- a/code/modules/mining/lavaland/weather.dm +++ b/code/modules/mining/lavaland/weather.dm @@ -96,5 +96,5 @@ N.icon_state = initial(N.icon_state) N.icon = 'icons/turf/areas.dmi' N.layer = 10 //Just default back to normal area stuff since I assume setting a var is faster than initial - N.invisibility = 100 + N.invisibility = INVISIBILITY_MAXIMUM N.opacity = 0 \ No newline at end of file diff --git a/code/modules/mining/lavaland/weather_types.dm b/code/modules/mining/lavaland/weather_types.dm index 5f8b8553457..181569c8792 100644 --- a/code/modules/mining/lavaland/weather_types.dm +++ b/code/modules/mining/lavaland/weather_types.dm @@ -56,7 +56,7 @@ A.icon = 'icons/effects/weather_effects.dmi' A.icon_state = start_up_overlay else - A.invisibility = 100 + A.invisibility = INVISIBILITY_MAXIMUM A.opacity = 0 //Ash storms diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 2221167fa5a..0619d722f44 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -48,7 +48,6 @@ new /obj/item/weapon/survivalcapsule(src) - /**********************Shuttle Computer**************************/ /obj/machinery/computer/shuttle/mining @@ -164,6 +163,24 @@ throwforce = 7 w_class = 2 +/obj/item/weapon/emptysandbag + name = "empty sandbag" + desc = "A bag to be filled with sand." + icon = 'icons/obj/items.dmi' + icon_state = "sandbag" + w_class = 1 + +/obj/item/weapon/emptysandbag/attackby(obj/item/W, mob/user, params) + if(istype(W,/obj/item/weapon/ore/glass)) + user << "You fill the sandbag." + var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags + user.unEquip(src) + user.put_in_hands(I) + qdel(W) + qdel(src) + return + else + return ..() /**********************Mining car (Crate like thing, not the rail car)**************************/ @@ -222,7 +239,7 @@ var/turf/cur_turf var/x_size = 5 var/y_size = 5 - var/list/walltypes = list(/turf/closed/wall/shuttle/survival_pod) + var/list/walltypes = list(/turf/closed/wall/shuttle/survival/pod) var/floor_type = /turf/open/floor/pod var/room @@ -315,11 +332,75 @@ //Pod turfs and objects -//Floor +//Floors /turf/open/floor/pod name = "pod floor" icon_state = "podfloor" icon_regular_floor = "podfloor" + floor_tile = /obj/item/stack/tile/pod + +/turf/open/floor/pod/light + icon_state = "podfloor_light" + icon_regular_floor = "podfloor_light" + floor_tile = /obj/item/stack/tile/pod/light + +/turf/open/floor/pod/dark + icon_state = "podfloor_dark" + icon_regular_floor = "podfloor_dark" + floor_tile = /obj/item/stack/tile/pod/dark + +//Walls +/turf/closed/wall/shuttle/survival + name = "pod wall" + desc = "An easily-compressable wall used for temporary shelter." + icon = 'icons/turf/walls/survival_pod_walls.dmi' + icon_state = "smooth" + walltype = "shuttle" + smooth = SMOOTH_MORE|SMOOTH_DIAGONAL + canSmoothWith = list(/turf/closed/wall/shuttle/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod, /obj/structure/shuttle/engine) + +/turf/closed/wall/shuttle/survival/nodiagonal + smooth = SMOOTH_MORE + +/turf/closed/wall/shuttle/survival/pod + canSmoothWith = list(/turf/closed/wall/shuttle/survival, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle, /obj/structure/shuttle/engine) + +//Window +/obj/structure/window/shuttle/survival_pod + name = "pod window" + icon = 'icons/obj/smooth_structures/pod_window.dmi' + icon_state = "smooth" + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/closed/wall/shuttle/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod) + +//Door +/obj/machinery/door/airlock/survival_pod + name = "airlock" + icon = 'icons/obj/doors/airlocks/survival/horizontal/survival.dmi' + overlays_file = 'icons/obj/doors/airlocks/survival/horizontal/survival_overlays.dmi' + doortype = /obj/structure/door_assembly/door_assembly_pod + opacity = 0 + glass = 1 + +/obj/machinery/door/airlock/survival_pod/vertical + icon = 'icons/obj/doors/airlocks/survival/vertical/survival.dmi' + overlays_file = 'icons/obj/doors/airlocks/survival/vertical/survival_overlays.dmi' + doortype = /obj/structure/door_assembly/door_assembly_pod/vertical + +/obj/structure/door_assembly/door_assembly_pod + name = "pod airlock assembly" + icon = 'icons/obj/doors/airlocks/survival/horizontal/survival.dmi' + overlays_file = 'icons/obj/doors/airlocks/survival/horizontal/survival_overlays.dmi' + airlock_type = /obj/machinery/door/airlock/survival_pod + anchored = 1 + state = 1 + mineral = "glass" + material = "glass" + +/obj/structure/door_assembly/door_assembly_pod/vertical + icon = 'icons/obj/doors/airlocks/survival/vertical/survival.dmi' + overlays_file = 'icons/obj/doors/airlocks/survival/vertical/survival_overlays.dmi' + airlock_type = /obj/machinery/door/airlock/survival_pod/vertical //Table /obj/structure/table/survival_pod @@ -327,34 +408,6 @@ icon_state = "table" smooth = SMOOTH_FALSE -/obj/structure/fans - icon = 'icons/obj/lavaland/survival_pod.dmi' - icon_state = "fans" - name = "environmental regulation system" - desc = "A large machine releasing a constant gust of air." - anchored = 1 - density = 1 - var/arbitraryatmosblockingvar = TRUE - -/obj/structure/fans/tiny - name = "tiny fan" - desc = "A tiny fan, releasing a thin gust of air." - layer = TURF_LAYER + 0.8 - density = 0 - icon_state = "fan_tiny" - -/obj/structure/fans/New(loc) - ..() - air_update_turf(1) - -/obj/structure/fans/Destroy() - arbitraryatmosblockingvar = FALSE - air_update_turf(1) - return ..() - -/obj/structure/fans/CanAtmosPass(turf/T) - return !arbitraryatmosblockingvar - //Sleeper /obj/machinery/sleeper/survival_pod icon = 'icons/obj/lavaland/survival_pod.dmi' @@ -375,6 +428,16 @@ density = 1 pixel_y = -32 +/obj/item/device/gps/computer/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 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/device/gps(src.loc) + qdel(src) + return ..() + /obj/item/device/gps/computer/attack_hand(mob/user) attack_self(user) @@ -412,19 +475,53 @@ var/obj/item/device/instrument/guitar/G = new(src) load(G) -//Walls +//Fans +/obj/structure/fans + icon = 'icons/obj/lavaland/survival_pod.dmi' + icon_state = "fans" + name = "environmental regulation system" + desc = "A large machine releasing a constant gust of air." + anchored = 1 + density = 1 + var/arbitraryatmosblockingvar = TRUE + var/buildstacktype = /obj/item/stack/sheet/metal + var/buildstackamount = 5 -/turf/closed/wall/shuttle/survival_pod - name = "wall" - desc = "An easily-compressable wall used for temporary shelter." - icon = 'icons/turf/walls/survival_pod_walls.dmi' - icon_state = "smooth" - walltype = "shuttle" - smooth = SMOOTH_MORE|SMOOTH_DIAGONAL - canSmoothWith = list(/turf/closed/wall/shuttle/survival_pod, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle) +/obj/structure/fans/deconstruct() + if(buildstacktype) + new buildstacktype(loc,buildstackamount) + ..() + +/obj/structure/fans/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 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/tiny + name = "tiny fan" + desc = "A tiny fan, releasing a thin gust of air." + layer = TURF_LAYER + 0.8 + density = 0 + icon_state = "fan_tiny" + buildstackamount = 2 + +/obj/structure/fans/New(loc) + ..() + air_update_turf(1) + +/obj/structure/fans/Destroy() + arbitraryatmosblockingvar = FALSE + air_update_turf(1) + return ..() + +/obj/structure/fans/CanAtmosPass(turf/T) + return !arbitraryatmosblockingvar //Signs - /obj/structure/sign/mining name = "nanotrasen mining corps sign" desc = "A sign of relief for weary miners, and a warning for would be competitors to Nanotrasen's mining claims." @@ -437,15 +534,7 @@ icon = 'icons/turf/walls/survival_pod_walls.dmi' icon_state = "survival" -//Door - -/obj/machinery/door/airlock/survival_pod - name = "airlock" - icon = 'icons/obj/doors/airlocks/survival/survival.dmi' - overlays_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi' - opacity = 0 - glass = 1 - +//Fluff /obj/structure/tubes icon_state = "tubes" icon = 'icons/obj/lavaland/survival_pod.dmi' @@ -454,20 +543,3 @@ layer = MOB_LAYER - 0.2 density = 0 -/obj/item/weapon/emptysandbag - name = "empty sandbag" - desc = "A bag to be filled with sand." - icon = 'icons/obj/items.dmi' - icon_state = "sandbag" - w_class = 1 - -/obj/item/weapon/emptysandbag/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/weapon/ore/glass)) - user << "You fill the sandbag." - var/obj/item/stack/sheet/mineral/sandbags/I = new /obj/item/stack/sheet/mineral/sandbags - user.unEquip(src) - user.put_in_hands(I) - qdel(W) - qdel(src) - return - else return ..() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 491db033ef7..02a75bcc1fa 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -255,7 +255,7 @@ /turf/open/floor/plating/asteroid/airless/cave/volcanic mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 10, /mob/living/simple_animal/hostile/asteroid/goliath/beast = 50, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, - /mob/living/simple_animal/hostile/spawner/lavaland = 2, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3) + /mob/living/simple_animal/hostile/spawner/lavaland = 2, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, /mob/living/simple_animal/hostile/megafauna/dragon = 2) turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface initial_gas_mix = "o2=14;n2=23;TEMP=300" diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index a751094bf28..43e9954c1f1 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -212,8 +212,8 @@ var/turf/T = get_step(src,output_dir) if(T) var/obj/item/O = new P(src) - var/obj/item/weapon/moneybag/M = locate(/obj/item/weapon/moneybag, T) + var/obj/item/weapon/storage/bag/money/M = locate(/obj/item/weapon/storage/bag/money, T) if(!M) - M = new /obj/item/weapon/moneybag(src) + M = new /obj/item/weapon/storage/bag/money(src) unload_mineral(M) O.loc = M \ No newline at end of file diff --git a/code/modules/mining/money_bag.dm b/code/modules/mining/money_bag.dm index e1edd84927c..3f4449a8256 100644 --- a/code/modules/mining/money_bag.dm +++ b/code/modules/mining/money_bag.dm @@ -1,112 +1,20 @@ /*****************************Money bag********************************/ -/obj/item/weapon/moneybag - icon = 'icons/obj/storage.dmi' - name = "Money bag" +/obj/item/weapon/storage/bag/money + name = "money bag" icon_state = "moneybag" - flags = CONDUCT force = 10 throwforce = 0 - w_class = 4 burn_state = FLAMMABLE burntime = 20 - -/obj/item/weapon/moneybag/attack_hand(mob/user) - var/amt_gold = 0 - var/amt_silver = 0 - var/amt_diamond = 0 - var/amt_iron = 0 - var/amt_plasma = 0 - var/amt_uranium = 0 - var/amt_clown = 0 - var/amt_adamantine = 0 - - for (var/obj/item/weapon/coin/C in contents) - if (istype(C,/obj/item/weapon/coin/diamond)) - amt_diamond++; - if (istype(C,/obj/item/weapon/coin/plasma)) - amt_plasma++; - if (istype(C,/obj/item/weapon/coin/iron)) - amt_iron++; - if (istype(C,/obj/item/weapon/coin/silver)) - amt_silver++; - if (istype(C,/obj/item/weapon/coin/gold)) - amt_gold++; - if (istype(C,/obj/item/weapon/coin/uranium)) - amt_uranium++; - if (istype(C,/obj/item/weapon/coin/clown)) - amt_clown++; - if (istype(C,/obj/item/weapon/coin/adamantine)) - amt_adamantine++; - - var/dat = text("The contents of the moneybag reveal...
") - if (amt_gold) - dat += text("Gold coins: [amt_gold] Remove one
") - if (amt_silver) - dat += text("Silver coins: [amt_silver] Remove one
") - if (amt_iron) - dat += text("Metal coins: [amt_iron] Remove one
") - if (amt_diamond) - dat += text("Diamond coins: [amt_diamond] Remove one
") - if (amt_plasma) - dat += text("Plasma coins: [amt_plasma] Remove one
") - if (amt_uranium) - dat += text("Uranium coins: [amt_uranium] Remove one
") - if (amt_clown) - dat += text("Bananium coins: [amt_clown] Remove one
") - if (amt_adamantine) - dat += text("Adamantine coins: [amt_adamantine] Remove one
") - user << browse("[dat]", "window=moneybag") - -/obj/item/weapon/moneybag/attackby(obj/item/weapon/W, mob/user, params) - ..() - if (istype(W, /obj/item/weapon/coin)) - var/obj/item/weapon/coin/C = W - if(!user.drop_item()) - return - user << "You add the [C.name] into the bag." - contents += C - if (istype(W, /obj/item/weapon/moneybag)) - var/obj/item/weapon/moneybag/C = W - for (var/obj/O in C.contents) - contents += O; - user << "You empty the [C.name] into the bag." - return - -/obj/item/weapon/moneybag/Topic(href, href_list) - if(..()) - return - usr.set_machine(src) - src.add_fingerprint(usr) - if(href_list["remove"]) - var/obj/item/weapon/coin/COIN - switch(href_list["remove"]) - if("gold") - COIN = locate(/obj/item/weapon/coin/gold,src.contents) - if("silver") - COIN = locate(/obj/item/weapon/coin/silver,src.contents) - if("iron") - COIN = locate(/obj/item/weapon/coin/iron,src.contents) - if("diamond") - COIN = locate(/obj/item/weapon/coin/diamond,src.contents) - if("plasma") - COIN = locate(/obj/item/weapon/coin/plasma,src.contents) - if("uranium") - COIN = locate(/obj/item/weapon/coin/uranium,src.contents) - if("clown") - COIN = locate(/obj/item/weapon/coin/clown,src.contents) - if("adamantine") - COIN = locate(/obj/item/weapon/coin/adamantine,src.contents) - if(!COIN) - return - COIN.loc = src.loc - return + w_class = 4 + max_w_class = 3 + storage_slots = 80 + max_combined_w_class = 40 + can_hold = list(/obj/item/weapon/coin, /obj/item/stack/spacecash) - -/obj/item/weapon/moneybag/vault - -/obj/item/weapon/moneybag/vault/New() +/obj/item/weapon/storage/bag/money/vault/New() ..() new /obj/item/weapon/coin/silver(src) new /obj/item/weapon/coin/silver(src) diff --git a/code/modules/mob/camera/camera.dm b/code/modules/mob/camera/camera.dm index 3f67ba3ddc6..f960c5390b9 100644 --- a/code/modules/mob/camera/camera.dm +++ b/code/modules/mob/camera/camera.dm @@ -7,7 +7,7 @@ status_flags = GODMODE // You can't damage it. mouse_opacity = 0 see_in_dark = 7 - invisibility = 101 // No one can see us + invisibility = INVISIBILITY_ABSTRACT // No one can see us sight = SEE_SELF move_on_shuttle = 0 diff --git a/code/modules/mob/dead/death.dm b/code/modules/mob/dead/death.dm index bd968c6b708..7c827e55ffe 100644 --- a/code/modules/mob/dead/death.dm +++ b/code/modules/mob/dead/death.dm @@ -1,5 +1,5 @@ /mob/dead/dust() //ghosts can't be vaporised. return -/mob/dead/gib(animation = 1) //ghosts can't be gibbed. +/mob/dead/gib() //ghosts can't be gibbed. return diff --git a/code/modules/mob/interactive.dm b/code/modules/mob/interactive.dm index 98f27b45659..6301af936fa 100644 --- a/code/modules/mob/interactive.dm +++ b/code/modules/mob/interactive.dm @@ -256,39 +256,12 @@ equip_to_slot_or_del(MYPDA, slot_belt) zone_selected = "chest" //arms - if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/4)) - var/obj/item/organ/limb/r_arm/R = locate(/obj/item/organ/limb/r_arm) in organs - qdel(R) - organs += new /obj/item/organ/limb/robot/r_arm - else - var/obj/item/organ/limb/l_arm/L = locate(/obj/item/organ/limb/l_arm) in organs - qdel(L) - organs += new /obj/item/organ/limb/robot/l_arm - //legs - if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/4)) - var/obj/item/organ/limb/r_leg/R = locate(/obj/item/organ/limb/r_leg) in organs - qdel(R) - organs += new /obj/item/organ/limb/robot/r_leg - else - var/obj/item/organ/limb/l_leg/L = locate(/obj/item/organ/limb/l_leg) in organs - qdel(L) - organs += new /obj/item/organ/limb/robot/l_leg - //chest and head - if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/4)) - var/obj/item/organ/limb/chest/R = locate(/obj/item/organ/limb/chest) in organs - qdel(R) - organs += new /obj/item/organ/limb/robot/chest - else - var/obj/item/organ/limb/head/L = locate(/obj/item/organ/limb/head) in organs - qdel(L) - organs += new /obj/item/organ/limb/robot/head - for(var/LIMB in organs) - if(LIMB) // prevents a runtime - var/obj/item/organ/limb/L = LIMB - L.owner = src + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/4)) + BP.change_bodypart_status(ORGAN_ROBOTIC) update_icons() update_damage_overlays(0) - update_augments() hand = 0 functions = list("nearbyscan","combat","shitcurity","chatter") // stop customize adding multiple copies of a function diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index f5036aa8c8b..7ecb3f6683f 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -33,11 +33,11 @@ verbs += /mob/living/proc/mob_sleep verbs += /mob/living/proc/lay_down - internal_organs += new /obj/item/organ/internal/brain/alien - internal_organs += new /obj/item/organ/internal/alien/hivenode - internal_organs += new /obj/item/organ/internal/tongue/alien + internal_organs += new /obj/item/organ/brain/alien + internal_organs += new /obj/item/organ/alien/hivenode + internal_organs += new /obj/item/organ/tongue/alien - for(var/obj/item/organ/internal/I in internal_organs) + for(var/obj/item/organ/I in internal_organs) I.Insert(src) AddAbility(new/obj/effect/proc_holder/alien/nightvisiontoggle(null)) @@ -137,14 +137,6 @@ if(statpanel("Status")) stat(null, "Intent: [a_intent]") -/mob/living/carbon/alien/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - else - // add some movement delay - move_delay_add = min(move_delay_add + round(amount / 2), 10) // a maximum delay of 10 - return - /mob/living/carbon/alien/getTrail() if(getBruteLoss() < 200) return pick (list("xltrails_1", "xltrails2")) @@ -158,7 +150,7 @@ Des: Gives the client of the alien an image on each infected mob. if (client) for (var/mob/living/C in mob_list) if(C.status_flags & XENO_HOST) - var/obj/item/organ/internal/body_egg/alien_embryo/A = C.getorgan(/obj/item/organ/internal/body_egg/alien_embryo) + var/obj/item/organ/body_egg/alien_embryo/A = C.getorgan(/obj/item/organ/body_egg/alien_embryo) if(A) var/I = image('icons/mob/alien.dmi', loc = C, icon_state = "infected[A.stage]") client.images += I @@ -218,7 +210,7 @@ Des: Removes all infected images from the alien. if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. return - for(var/obj/item/organ/internal/cyberimp/eyes/E in internal_organs) + for(var/obj/item/organ/cyberimp/eyes/E in internal_organs) sight |= E.sight_flags if(E.dark_view) see_in_dark = max(see_in_dark, E.dark_view) diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm index 131ba6e65e0..f5c2e9b4a02 100644 --- a/code/modules/mob/living/carbon/alien/death.dm +++ b/code/modules/mob/living/carbon/alien/death.dm @@ -1,17 +1,11 @@ /mob/living/carbon/alien/spawn_gibs() xgibs(loc, viruses) -/mob/living/carbon/alien/gib_animation(animate) - ..(animate, "gibbed-a") +/mob/living/carbon/alien/gib_animation() + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-a") /mob/living/carbon/alien/spawn_dust() new /obj/effect/decal/remains/xeno(loc) -/mob/living/carbon/alien/spawn_dust() - new /obj/effect/decal/remains/xeno(loc) - -/mob/living/carbon/alien/dust_animation(animate) - ..(animate, "dust-a") - -/mob/living/carbon/alien/dust(var/animation = 1) - ..() \ No newline at end of file +/mob/living/carbon/alien/dust_animation() + new /obj/effect/overlay/temp/dust_animation(loc, "dust-a") diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index a9710f07572..d5256375e21 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -87,7 +87,16 @@ Doesn't work on other aliens/AI.*/ if(msg) log_say("AlienWhisper: [key_name(user)]->[M.key] : [msg]") M << "You hear a strange, alien voice in your head...[msg]" - user << {"You said: "[msg]" to [M]"} + user << "You said: \"[msg]\" to [M]" + for(var/ded in dead_mob_list) + if(!isobserver(ded)) + continue + ded << "(F) \ + [user] \ + Alien Whisper --> \ + (F) \ + [M] \ + [msg]" else return 0 return 1 @@ -101,7 +110,7 @@ Doesn't work on other aliens/AI.*/ /obj/effect/proc_holder/alien/transfer/fire(mob/living/carbon/user) var/list/mob/living/carbon/aliens_around = list() for(var/mob/living/carbon/A in oview(user)) - if(A.getorgan(/obj/item/organ/internal/alien/plasmavessel)) + if(A.getorgan(/obj/item/organ/alien/plasmavessel)) aliens_around.Add(A) var/mob/living/carbon/M = input("Select who to transfer to:","Transfer plasma to?",null) as mob in aliens_around if(!M) @@ -113,7 +122,7 @@ Doesn't work on other aliens/AI.*/ M.adjustPlasma(amount) user.adjustPlasma(-amount) M << "[user] has transfered [amount] plasma to you." - user << {"You trasfer [amount] plasma to [M]"} + user << "You trasfer [amount] plasma to [M]" else user << "You need to be closer!" return @@ -285,13 +294,13 @@ Doesn't work on other aliens/AI.*/ /mob/living/carbon/proc/getPlasma() - var/obj/item/organ/internal/alien/plasmavessel/vessel = getorgan(/obj/item/organ/internal/alien/plasmavessel) + var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel) if(!vessel) return 0 return vessel.storedPlasma /mob/living/carbon/proc/adjustPlasma(amount) - var/obj/item/organ/internal/alien/plasmavessel/vessel = getorgan(/obj/item/organ/internal/alien/plasmavessel) + var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel) if(!vessel) return 0 vessel.storedPlasma = max(vessel.storedPlasma + amount,0) vessel.storedPlasma = min(vessel.storedPlasma, vessel.max_plasma) //upper limit of max_plasma, lower limit of 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index d4343cba280..31896a81da8 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -7,9 +7,9 @@ /mob/living/carbon/alien/humanoid/drone/New() - internal_organs += new /obj/item/organ/internal/alien/plasmavessel/large - internal_organs += new /obj/item/organ/internal/alien/resinspinner - internal_organs += new /obj/item/organ/internal/alien/acid + internal_organs += new /obj/item/organ/alien/plasmavessel/large + internal_organs += new /obj/item/organ/alien/resinspinner + internal_organs += new /obj/item/organ/alien/acid AddAbility(new/obj/effect/proc_holder/alien/evolve(null)) ..() @@ -25,7 +25,7 @@ action_icon_state = "alien_evolve_drone" /obj/effect/proc_holder/alien/evolve/fire(mob/living/carbon/alien/humanoid/user) - var/obj/item/organ/internal/alien/hivenode/node = user.getorgan(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = user.getorgan(/obj/item/organ/alien/hivenode) if(!node) //Players are Murphy's Law. We may not expect there to ever be a living xeno with no hivenode, but they _WILL_ make it happen. user << "Without the hivemind, you can't possibly hold the responsibility of leadership!" return 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 707fb458493..c18c1e6ab2c 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -7,7 +7,7 @@ var/obj/screen/leap_icon = null /mob/living/carbon/alien/humanoid/hunter/New() - internal_organs += new /obj/item/organ/internal/alien/plasmavessel/small + internal_organs += new /obj/item/organ/alien/plasmavessel/small ..() /mob/living/carbon/alien/humanoid/hunter/movement_delay() diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index fbd201d3bc7..8a15c4b4c9e 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -11,10 +11,10 @@ real_name = name - internal_organs += new /obj/item/organ/internal/alien/plasmavessel/large - internal_organs += new /obj/item/organ/internal/alien/resinspinner - internal_organs += new /obj/item/organ/internal/alien/acid - internal_organs += new /obj/item/organ/internal/alien/neurotoxin + internal_organs += new /obj/item/organ/alien/plasmavessel/large + internal_organs += new /obj/item/organ/alien/resinspinner + internal_organs += new /obj/item/organ/alien/acid + internal_organs += new /obj/item/organ/alien/neurotoxin AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/xeno(src)) AddAbility(new /obj/effect/proc_holder/alien/royal/praetorian/evolve()) ..() @@ -31,7 +31,7 @@ action_icon_state = "alien_evolve_praetorian" /obj/effect/proc_holder/alien/royal/praetorian/evolve/fire(mob/living/carbon/alien/humanoid/user) - var/obj/item/organ/internal/alien/hivenode/node = user.getorgan(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = user.getorgan(/obj/item/organ/alien/hivenode) if(!node) //Just in case this particular Praetorian gets violated and kept by the RD as a replacement for Lamarr. user << "Without the hivemind, you would be unfit to rule as queen!" return 0 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index eb53eb5c1b5..a22ab106dd4 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -7,9 +7,9 @@ /mob/living/carbon/alien/humanoid/sentinel/New() - internal_organs += new /obj/item/organ/internal/alien/plasmavessel - internal_organs += new /obj/item/organ/internal/alien/acid - internal_organs += new /obj/item/organ/internal/alien/neurotoxin + internal_organs += new /obj/item/organ/alien/plasmavessel + internal_organs += new /obj/item/organ/alien/acid + internal_organs += new /obj/item/organ/alien/neurotoxin AddAbility(new /obj/effect/proc_holder/alien/sneak) ..() diff --git a/code/modules/mob/living/carbon/alien/humanoid/death.dm b/code/modules/mob/living/carbon/alien/humanoid/death.dm index bd236e1a8af..b237ca3698b 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/death.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/death.dm @@ -9,9 +9,9 @@ visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...") update_canmove() update_icons() - status_flags |=CANPUSH + status_flags |= CANPUSH - return ..(gibbed) + return ..() //When the alien queen dies, all others must pay the price for letting her die. /mob/living/carbon/alien/humanoid/royal/queen/death(gibbed) @@ -21,7 +21,7 @@ for(var/mob/living/carbon/C in living_mob_list) if(C == src) //Make sure not to proc it on ourselves. continue - var/obj/item/organ/internal/alien/hivenode/node = C.getorgan(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/node = C.getorgan(/obj/item/organ/alien/hivenode) if(istype(node)) // just in case someone would ever add a diffirent node to hivenode slot node.queen_death() diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 508629153d7..c93ad1ead74 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -37,11 +37,11 @@ real_name = src.name - internal_organs += new /obj/item/organ/internal/alien/plasmavessel/large/queen - internal_organs += new /obj/item/organ/internal/alien/resinspinner - internal_organs += new /obj/item/organ/internal/alien/acid - internal_organs += new /obj/item/organ/internal/alien/neurotoxin - internal_organs += new /obj/item/organ/internal/alien/eggsac + internal_organs += new /obj/item/organ/alien/plasmavessel/large/queen + internal_organs += new /obj/item/organ/alien/resinspinner + internal_organs += new /obj/item/organ/alien/acid + internal_organs += new /obj/item/organ/alien/neurotoxin + internal_organs += new /obj/item/organ/alien/eggsac AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/repulse/xeno(src)) AddAbility(new/obj/effect/proc_holder/alien/royal/queen/promote()) ..() diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 53db809a9d0..be000619379 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -18,7 +18,7 @@ //This is fine right now, if we're adding organ specific damage this needs to be updated /mob/living/carbon/alien/larva/New() regenerate_icons() - internal_organs += new /obj/item/organ/internal/alien/plasmavessel/small/tiny + internal_organs += new /obj/item/organ/alien/plasmavessel/small/tiny AddAbility(new/obj/effect/proc_holder/alien/hide(null)) AddAbility(new/obj/effect/proc_holder/alien/larva_evolve(null)) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 9728c08e2c6..d63654ce9e7 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -17,7 +17,7 @@ if(status_flags & GODMODE) return if(stat != DEAD) - if(health<= -maxHealth || !getorgan(/obj/item/organ/internal/brain)) + if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return if(paralysis || sleeping || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= config.health_threshold_crit) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index eea07add748..8ac9093906b 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -1,33 +1,33 @@ -/obj/item/organ/internal/alien +/obj/item/organ/alien origin_tech = "biotech=5" icon_state = "xgibmid2" var/list/alien_powers = list() -/obj/item/organ/internal/alien/New() +/obj/item/organ/alien/New() for(var/A in alien_powers) if(ispath(A)) alien_powers -= A alien_powers += new A(src) ..() -/obj/item/organ/internal/alien/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/Insert(mob/living/carbon/M, special = 0) ..() for(var/obj/effect/proc_holder/alien/P in alien_powers) M.AddAbility(P) -/obj/item/organ/internal/alien/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/Remove(mob/living/carbon/M, special = 0) for(var/obj/effect/proc_holder/alien/P in alien_powers) M.RemoveAbility(P) ..() -/obj/item/organ/internal/alien/prepare_eat() +/obj/item/organ/alien/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("sacid", 10) return S -/obj/item/organ/internal/alien/plasmavessel +/obj/item/organ/alien/plasmavessel name = "plasma vessel" icon_state = "plasma" origin_tech = "biotech=5;plasmatech=2" @@ -41,12 +41,12 @@ var/heal_rate = 5 var/plasma_rate = 10 -/obj/item/organ/internal/alien/plasmavessel/prepare_eat() +/obj/item/organ/alien/plasmavessel/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("plasma", storedPlasma/10) return S -/obj/item/organ/internal/alien/plasmavessel/large +/obj/item/organ/alien/plasmavessel/large name = "large plasma vessel" icon_state = "plasma_large" w_class = 4 @@ -54,11 +54,11 @@ max_plasma = 500 plasma_rate = 15 -/obj/item/organ/internal/alien/plasmavessel/large/queen +/obj/item/organ/alien/plasmavessel/large/queen origin_tech = "biotech=6;plasmatech=3" plasma_rate = 20 -/obj/item/organ/internal/alien/plasmavessel/small +/obj/item/organ/alien/plasmavessel/small name = "small plasma vessel" icon_state = "plasma_small" w_class = 2 @@ -66,14 +66,14 @@ max_plasma = 150 plasma_rate = 5 -/obj/item/organ/internal/alien/plasmavessel/small/tiny +/obj/item/organ/alien/plasmavessel/small/tiny name = "tiny plasma vessel" icon_state = "plasma_tiny" w_class = 1 max_plasma = 100 alien_powers = list(/obj/effect/proc_holder/alien/transfer) -/obj/item/organ/internal/alien/plasmavessel/on_life() +/obj/item/organ/alien/plasmavessel/on_life() //If there are alien weeds on the ground then heal if needed or give some plasma if(locate(/obj/structure/alien/weeds) in owner.loc) if(owner.health >= owner.maxHealth) @@ -88,20 +88,20 @@ owner.adjustOxyLoss(-heal_amt) owner.adjustCloneLoss(-heal_amt) -/obj/item/organ/internal/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0) ..() if(isalien(M)) var/mob/living/carbon/alien/A = M A.updatePlasmaDisplay() -/obj/item/organ/internal/alien/plasmavessel/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/plasmavessel/Remove(mob/living/carbon/M, special = 0) ..() if(isalien(M)) var/mob/living/carbon/alien/A = M A.updatePlasmaDisplay() -/obj/item/organ/internal/alien/hivenode +/obj/item/organ/alien/hivenode name = "hive node" icon_state = "hivenode" zone = "head" @@ -111,16 +111,16 @@ var/recent_queen_death = 0 //Indicates if the queen died recently, aliens are heavily weakened while this is active. alien_powers = list(/obj/effect/proc_holder/alien/whisper) -/obj/item/organ/internal/alien/hivenode/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/hivenode/Insert(mob/living/carbon/M, special = 0) ..() M.faction |= "alien" -/obj/item/organ/internal/alien/hivenode/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/alien/hivenode/Remove(mob/living/carbon/M, special = 0) M.faction -= "alien" ..() //When the alien queen dies, all aliens suffer a penalty as punishment for failing to protect her. -/obj/item/organ/internal/alien/hivenode/proc/queen_death() +/obj/item/organ/alien/hivenode/proc/queen_death() if(!owner|| owner.stat == DEAD) return if(isalien(owner)) //Different effects for aliens than humans @@ -150,7 +150,7 @@ owner.clear_alert("alien_noqueen") -/obj/item/organ/internal/alien/resinspinner +/obj/item/organ/alien/resinspinner name = "resin spinner" icon_state = "stomach-x" zone = "mouth" @@ -159,7 +159,7 @@ alien_powers = list(/obj/effect/proc_holder/alien/resin) -/obj/item/organ/internal/alien/acid +/obj/item/organ/alien/acid name = "acid gland" icon_state = "acid" zone = "mouth" @@ -168,7 +168,7 @@ alien_powers = list(/obj/effect/proc_holder/alien/acid) -/obj/item/organ/internal/alien/neurotoxin +/obj/item/organ/alien/neurotoxin name = "neurotoxin gland" icon_state = "neurotox" zone = "mouth" @@ -177,7 +177,7 @@ alien_powers = list(/obj/effect/proc_holder/alien/neurotoxin) -/obj/item/organ/internal/alien/eggsac +/obj/item/organ/alien/eggsac name = "egg sac" icon_state = "eggsac" zone = "groin" diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm index 5d2efa25004..e72008ba098 100644 --- a/code/modules/mob/living/carbon/alien/say.dm +++ b/code/modules/mob/living/carbon/alien/say.dm @@ -16,6 +16,6 @@ ..(message, shown_name) /mob/living/carbon/hivecheck() - var/obj/item/organ/internal/alien/hivenode/N = getorgan(/obj/item/organ/internal/alien/hivenode) + var/obj/item/organ/alien/hivenode/N = getorgan(/obj/item/organ/alien/hivenode) if(N && !N.recent_queen_death) //Mob has alien hive node and is not under the dead queen special effect. return N \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index 68d14b3a75b..012c0876cfb 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -2,13 +2,13 @@ // It functions almost identically (see code/datums/diseases/alien_embryo.dm) var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds -/obj/item/organ/internal/body_egg/alien_embryo +/obj/item/organ/body_egg/alien_embryo name = "alien embryo" icon = 'icons/mob/alien.dmi' icon_state = "larva0_dead" var/stage = 0 -/obj/item/organ/internal/body_egg/alien_embryo/on_find(mob/living/finder) +/obj/item/organ/body_egg/alien_embryo/on_find(mob/living/finder) ..() if(stage < 4) finder << "It's small and weak, barely the size of a foetus." @@ -17,12 +17,12 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds if(prob(10)) AttemptGrow(0) -/obj/item/organ/internal/body_egg/alien_embryo/prepare_eat() +/obj/item/organ/body_egg/alien_embryo/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("sacid", 10) return S -/obj/item/organ/internal/body_egg/alien_embryo/on_life() +/obj/item/organ/body_egg/alien_embryo/on_life() switch(stage) if(2, 3) if(prob(2)) @@ -50,7 +50,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds owner << "You feel something tearing its way out of your stomach..." owner.adjustToxLoss(10) -/obj/item/organ/internal/body_egg/alien_embryo/egg_process() +/obj/item/organ/body_egg/alien_embryo/egg_process() if(stage < 5 && prob(3)) stage++ spawn(0) @@ -65,7 +65,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds -/obj/item/organ/internal/body_egg/alien_embryo/proc/AttemptGrow(gib_on_success = 1) +/obj/item/organ/body_egg/alien_embryo/proc/AttemptGrow(gib_on_success = 1) if(!owner) return var/list/candidates = get_candidates(ROLE_ALIEN, ALIEN_AFK_BRACKET, "alien candidate") var/client/C = null @@ -110,7 +110,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds Proc: AddInfectionImages(C) Des: Adds the infection image to all aliens for this embryo ----------------------------------------*/ -/obj/item/organ/internal/body_egg/alien_embryo/AddInfectionImages() +/obj/item/organ/body_egg/alien_embryo/AddInfectionImages() for(var/mob/living/carbon/alien/alien in player_list) if(alien.client) var/I = image('icons/mob/alien.dmi', loc = owner, icon_state = "infected[stage]") @@ -120,7 +120,7 @@ Des: Adds the infection image to all aliens for this embryo Proc: RemoveInfectionImage(C) Des: Removes all images from the mob infected by this embryo ----------------------------------------*/ -/obj/item/organ/internal/body_egg/alien_embryo/RemoveInfectionImages() +/obj/item/organ/body_egg/alien_embryo/RemoveInfectionImages() for(var/mob/living/carbon/alien/alien in player_list) if(alien.client) for(var/image/I in alien.client.images) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 08e5d444116..040046a08dd 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -29,6 +29,10 @@ var/const/MAX_ACTIVE_TIME = 400 var/attached = 0 +/obj/item/clothing/mask/facehugger/lamarr + name = "Lamarr" + sterile = 1 + /obj/item/clothing/mask/facehugger/attack_alien(mob/user) //can be picked up by aliens attack_hand(user) return @@ -114,9 +118,9 @@ var/const/MAX_ACTIVE_TIME = 400 attached++ spawn(MAX_IMPREGNATION_TIME) attached = 0 - if(M.getorgan(/obj/item/organ/internal/alien/hivenode)) + if(M.getorgan(/obj/item/organ/alien/hivenode)) return 0 - if(M.getorgan(/obj/item/organ/internal/body_egg/alien_embryo)) + if(M.getorgan(/obj/item/organ/body_egg/alien_embryo)) return 0 if(loc == M) return 0 @@ -179,8 +183,9 @@ var/const/MAX_ACTIVE_TIME = 400 Die() icon_state = "[initial(icon_state)]_impregnated" - if(!target.getlimb(/obj/item/organ/limb/robot/chest) && !target.getorgan(/obj/item/organ/internal/body_egg/alien_embryo)) - new /obj/item/organ/internal/body_egg/alien_embryo(target) + var/obj/item/bodypart/chest/LC = target.get_bodypart("chest") + if((!LC || LC.status != ORGAN_ROBOTIC) && !target.getorgan(/obj/item/organ/body_egg/alien_embryo)) + new /obj/item/organ/body_egg/alien_embryo(target) if(iscorgi(target)) var/mob/living/simple_animal/pet/dog/corgi/C = target @@ -223,7 +228,7 @@ var/const/MAX_ACTIVE_TIME = 400 return 0 if(M.stat == DEAD) return 0 - if(M.getorgan(/obj/item/organ/internal/alien/hivenode)) + if(M.getorgan(/obj/item/organ/alien/hivenode)) return 0 if(iscorgi(M) || ismonkey(M)) diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm new file mode 100644 index 00000000000..065dd0184a8 --- /dev/null +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -0,0 +1,14 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/living/carbon/alien/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_canmove() + else + // add some movement delay + move_delay_add = min(move_delay_add + round(amount / 2), 10) // a maximum delay of 10 diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index a9ef5f416b0..d5020b6dd6f 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -13,11 +13,11 @@ var/mob/living/carbon/brain/brainmob = null //The current occupant. var/mob/living/silicon/robot = null //Appears unused. var/obj/mecha = null //This does not appear to be used outside of reference in mecha.dm. - var/obj/item/organ/internal/brain/brain = null //The actual brain + var/obj/item/organ/brain/brain = null //The actual brain /obj/item/device/mmi/update_icon() if(brain) - if(istype(brain,/obj/item/organ/internal/brain/alien)) + if(istype(brain,/obj/item/organ/brain/alien)) if(brainmob && brainmob.stat == DEAD) icon_state = "mmi_alien_dead" else @@ -41,8 +41,8 @@ /obj/item/device/mmi/attackby(obj/item/O, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) - if(istype(O,/obj/item/organ/internal/brain)) //Time to stick a brain in it --NEO - var/obj/item/organ/internal/brain/newbrain = O + if(istype(O,/obj/item/organ/brain)) //Time to stick a brain in it --NEO + var/obj/item/organ/brain/newbrain = O if(brain) user << "There's already a brain in the MMI!" return @@ -119,7 +119,7 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L - var/obj/item/organ/internal/brain/newbrain = H.getorgan(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/newbrain = H.getorgan(/obj/item/organ/brain) newbrain.loc = src brain = newbrain else if(!brain) diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index dfb499b163c..b51044a221c 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -12,7 +12,7 @@ /mob/living/carbon/brain/New(loc) ..() if(isturf(loc)) //not spawned in an MMI or brain organ (most likely adminspawned) - var/obj/item/organ/internal/brain/OB = new(loc) //we create a new brain organ for it. + var/obj/item/organ/brain/OB = new(loc) //we create a new brain organ for it. src.loc = OB OB.brainmob = src @@ -38,7 +38,7 @@ /mob/living/carbon/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up. return -/mob/living/carbon/brain/blob_act() +/mob/living/carbon/brain/blob_act(obj/effect/blob/B) return /mob/living/carbon/brain/UnarmedAttack(atom/A)//Stops runtimes due to attack_animal being the default diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 81389febbcb..17584a81feb 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/brain +/obj/item/organ/brain name = "brain" desc = "A piece of juicy meat found in a person's head." icon_state = "brain" @@ -13,7 +13,7 @@ var/mob/living/carbon/brain/brainmob = null var/damaged_brain = 0 //whether the brain organ is damaged. -/obj/item/organ/internal/brain/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/brain/Insert(mob/living/carbon/M, special = 0) ..() name = "brain" if(brainmob) @@ -32,7 +32,7 @@ var/mob/living/carbon/human/H = M H.update_hair(0) -/obj/item/organ/internal/brain/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/brain/Remove(mob/living/carbon/M, special = 0) ..() if(!special) transfer_identity(M) @@ -40,10 +40,10 @@ var/mob/living/carbon/human/H = M H.update_hair(0) -/obj/item/organ/internal/brain/prepare_eat() +/obj/item/organ/brain/prepare_eat() return // Too important to eat. -/obj/item/organ/internal/brain/proc/transfer_identity(mob/living/L) +/obj/item/organ/brain/proc/transfer_identity(mob/living/L) name = "[L.name]'s brain" brainmob = new(src) brainmob.name = L.real_name @@ -58,12 +58,12 @@ L.mind.transfer_to(brainmob) brainmob << "You feel slightly disoriented. That's normal when you're just a brain." -/obj/item/organ/internal/brain/attackby(obj/item/O, mob/user, params) +/obj/item/organ/brain/attackby(obj/item/O, mob/user, params) user.changeNext_move(CLICK_CD_MELEE) if(brainmob) O.attack(brainmob, user) //Oh noooeeeee -/obj/item/organ/internal/brain/examine(mob/user) +/obj/item/organ/brain/examine(mob/user) ..() if(brainmob) @@ -77,7 +77,7 @@ else user << "This one is completely devoid of life." -/obj/item/organ/internal/brain/attack(mob/living/carbon/M, mob/user) +/obj/item/organ/brain/attack(mob/living/carbon/M, mob/user) if(!istype(M)) return ..() @@ -87,21 +87,22 @@ return ..() var/mob/living/carbon/human/H = M - if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) + if(istype(H) && ((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES))) user << "You're going to need to remove their head cover first!" return //since these people will be dead M != usr - if(!M.getorgan(/obj/item/organ/internal/brain)) + if(!M.getorgan(/obj/item/organ/brain)) + if(istype(H) && !H.get_bodypart("head")) + return user.drop_item() - for(var/mob/O in viewers(M, null)) - if(O == (user || M)) - continue - if(M == user) - O << "[user] inserts [src] into \his head!" - else - O << "[M] has [src] inserted into \his head by [user]." + var/msg = "[M] has [src] inserted into \his head by [user]." + if(M == user) + msg = "[user] inserts [src] into \his head!" + + M.visible_message("[msg]", + "[msg]") if(M != user) M << "[user] inserts [src] into your head." @@ -113,13 +114,13 @@ else ..() -/obj/item/organ/internal/brain/Destroy() //copypasted from MMIs. +/obj/item/organ/brain/Destroy() //copypasted from MMIs. if(brainmob) qdel(brainmob) brainmob = null return ..() -/obj/item/organ/internal/brain/alien +/obj/item/organ/brain/alien name = "alien brain" desc = "We barely understand the brains of terrestial animals. Who knows what we may find in the brain of such an advanced species?" icon_state = "brain-x" diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index b9672dbe833..67b700b2b08 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -11,10 +11,10 @@ return ..() -/mob/living/carbon/brain/gib(animation = 0) +/mob/living/carbon/brain/gib() if(container) qdel(container)//Gets rid of the MMI if there is one if(loc) - if(istype(loc,/obj/item/organ/internal/brain)) + if(istype(loc,/obj/item/organ/brain)) qdel(loc)//Gets rid of the brain item ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index f07c18fa13b..dc05ef62dbb 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -25,10 +25,10 @@ if(health <= config.health_threshold_dead) if(stat != DEAD) death() - var/obj/item/organ/internal/brain/BR + var/obj/item/organ/brain/BR if(container && container.brain) BR = container.brain - else if(istype(loc, /obj/item/organ/internal/brain)) + else if(istype(loc, /obj/item/organ/brain)) BR = loc if(BR) BR.damaged_brain = 1 //beaten to a pulp @@ -54,33 +54,6 @@ /mob/living/carbon/brain/handle_disabilities() return -/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal - return - -/mob/living/carbon/brain/adjustEarDamage() - return - -/mob/living/carbon/brain/blind_eyes() // no eyes to damage or heal - return - -/mob/living/carbon/brain/blur_eyes() - return - -/mob/living/carbon/brain/adjust_blindness() - return - -/mob/living/carbon/brain/adjust_blurriness() - return - -/mob/living/carbon/brain/set_blindness() - return - -/mob/living/carbon/brain/set_blurriness() - return - -/mob/living/carbon/brain/become_blind() - return - /mob/living/carbon/brain/handle_changeling() return diff --git a/code/modules/mob/living/carbon/brain/status_procs.dm b/code/modules/mob/living/carbon/brain/status_procs.dm new file mode 100644 index 00000000000..dc8ff6ffc1e --- /dev/null +++ b/code/modules/mob/living/carbon/brain/status_procs.dm @@ -0,0 +1,38 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/living/carbon/brain/adjustEarDamage() + return + +/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal + return + +/////////////////////////////////// EYE_BLIND //////////////////////////////////// + +/mob/living/carbon/brain/blind_eyes() // no eyes to damage or heal + return + +/mob/living/carbon/brain/adjust_blindness() + return + +/mob/living/carbon/brain/set_blindness() + return + +/////////////////////////////////// EYE_BLURRY //////////////////////////////////// + +/mob/living/carbon/brain/blur_eyes() + return + +/mob/living/carbon/brain/adjust_blurriness() + return + +/mob/living/carbon/brain/set_blurriness() + return + +/////////////////////////////////// BLIND DISABILITY //////////////////////////////////// + +/mob/living/carbon/brain/become_blind() + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 260f981cf55..34d64e5dc01 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -2,24 +2,14 @@ create_reagents(1000) ..() -/mob/living/carbon/prepare_huds() - ..() - prepare_data_huds() - -/mob/living/carbon/proc/prepare_data_huds() - ..() - med_hud_set_health() - med_hud_set_status() - -/mob/living/carbon/updatehealth() - ..() - med_hud_set_health() - /mob/living/carbon/Destroy() for(var/atom/movable/guts in internal_organs) qdel(guts) for(var/atom/movable/food in stomach_contents) qdel(food) + for(var/BP in bodyparts) + qdel(BP) + bodyparts = list() remove_from_all_data_huds() if(dna) qdel(dna) @@ -37,9 +27,9 @@ var/d = rand(round(I.force / 4), I.force) if(istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/H = src - var/organ = H.get_organ("chest") - if (istype(organ, /obj/item/organ/limb)) - var/obj/item/organ/limb/temp = organ + var/organ = H.get_bodypart("chest") + if (istype(organ, /obj/item/bodypart)) + var/obj/item/bodypart/temp = organ if(temp.take_damage(d, 0)) H.update_damage_overlays(0) H.updatehealth() @@ -55,23 +45,6 @@ stomach_contents.Remove(A) src.gib() -/mob/living/carbon/gib(animation = 1, var/no_brain = 0) - death(1) - for(var/obj/item/organ/internal/I in internal_organs) - if(no_brain && istype(I, /obj/item/organ/internal/brain)) - continue - if(I) - I.Remove(src) - I.loc = get_turf(src) - I.throw_at_fast(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) - - for(var/mob/M in src) - if(M in stomach_contents) - stomach_contents.Remove(M) - M.loc = loc - visible_message("[M] bursts out of [src]!") - . = ..() - /mob/living/carbon/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, override = 0, tesla_shock = 0) shock_damage *= siemens_coeff @@ -341,7 +314,7 @@ /mob/living/carbon/is_muzzled() return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) -/mob/living/carbon/blob_act() +/mob/living/carbon/blob_act(obj/effect/blob/B) if (stat == DEAD) return else @@ -528,13 +501,13 @@ I.throw_at(target,I.throw_range,I.throw_speed,src) /mob/living/carbon/emp_act(severity) - for(var/obj/item/organ/internal/O in internal_organs) + for(var/obj/item/organ/O in internal_organs) O.emp_act(severity) ..() /mob/living/carbon/check_eye_prot() var/number = ..() - for(var/obj/item/organ/internal/cyberimp/eyes/EFP in internal_organs) + for(var/obj/item/organ/cyberimp/eyes/EFP in internal_organs) number += EFP.flash_protect return number @@ -558,7 +531,7 @@ /mob/living/carbon/Stat() ..() if(statpanel("Status")) - var/obj/item/organ/internal/alien/plasmavessel/vessel = getorgan(/obj/item/organ/internal/alien/plasmavessel) + var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel) if(vessel) stat(null, "Plasma Stored: [vessel.storedPlasma]/[vessel.max_plasma]") if(locate(/obj/item/device/assembly/health) in src) @@ -627,7 +600,7 @@ if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. return - for(var/obj/item/organ/internal/cyberimp/eyes/E in internal_organs) + for(var/obj/item/organ/cyberimp/eyes/E in internal_organs) sight |= E.sight_flags if(E.dark_view) see_in_dark = max(see_in_dark,E.dark_view) @@ -742,7 +715,7 @@ if(status_flags & GODMODE) return if(stat != DEAD) - if(health<= config.health_threshold_dead || !getorgan(/obj/item/organ/internal/brain)) + if(health<= config.health_threshold_dead || !getorgan(/obj/item/organ/brain)) death() return if(paralysis || sleeping || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= config.health_threshold_crit) @@ -776,7 +749,7 @@ /mob/living/carbon/fully_heal(admin_revive = 0) if(reagents) reagents.clear_reagents() - var/obj/item/organ/internal/brain/B = getorgan(/obj/item/organ/internal/brain) + var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain) if(B) B.damaged_brain = 0 if(admin_revive) @@ -793,14 +766,14 @@ /mob/living/carbon/can_be_revived() . = ..() - if(!getorgan(/obj/item/organ/internal/brain)) + if(!getorgan(/obj/item/organ/brain)) return 0 /mob/living/carbon/harvest(mob/living/user) if(qdeleted(src)) return var/organs_amt = 0 - for(var/obj/item/organ/internal/O in internal_organs) + for(var/obj/item/organ/O in internal_organs) if(prob(50)) organs_amt++ O.Remove(src) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 544a023160b..5baebc33aec 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -1,8 +1,7 @@ /mob/living/carbon gender = MALE - hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) var/list/stomach_contents = list() - var/list/internal_organs = list() //List of /obj/item/organ/internal in the mob. They don't go in the contents for some reason I don't want to know. + var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know. var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access. var/silent = 0 //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU. @@ -31,3 +30,5 @@ var/rotate_on_lying = 1 var/tinttotal = 0 // Total level of visualy impairing items + + var/list/bodyparts = list() //Gets filled up in the constructor (New() proc in human.dm and monkey.dm) diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 1bd1210c2f7..2e77a20baa8 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -20,7 +20,7 @@ var/const/GALOSHES_DONT_HELP = 4 return 0 // Do we have a jetpack implant (and is it on)? - var/obj/item/organ/internal/cyberimp/chest/thrusters/T = getorganslot("thrusters") + var/obj/item/organ/cyberimp/chest/thrusters/T = getorganslot("thrusters") if(istype(T) && movement_dir && T.allow_thrust(0.01)) return 1 diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 127aafc8f77..3db1d738a96 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -1,6 +1,21 @@ /mob/living/carbon/death(gibbed) silent = 0 losebreath = 0 - med_hud_set_health() - med_hud_set_status() ..() + +/mob/living/carbon/gib(no_brain, no_organs) + for(var/mob/M in src) + if(M in stomach_contents) + stomach_contents.Remove(M) + M.loc = loc + visible_message("[M] bursts out of [src]!") + ..() + +/mob/living/carbon/spill_organs(no_brain) + for(var/obj/item/organ/I in internal_organs) + if(no_brain && istype(I, /obj/item/organ/brain)) + continue + if(I) + I.Remove(src) + I.loc = get_turf(src) + I.throw_at_fast(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 1da6b212e10..21f8bdb6cb4 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -53,7 +53,7 @@ if(digitalcamo) msg += "It is moving its body in an unnatural and blatantly unsimian manner.\n" - if(!getorgan(/obj/item/organ/internal/brain)) + if(!getorgan(/obj/item/organ/brain)) msg += "It appears that it's brain is missing...\n" msg += "*---------*" diff --git a/code/modules/mob/living/carbon/human/blood.dm b/code/modules/mob/living/carbon/human/blood.dm index b80c8ffdc34..f67b3a4008f 100644 --- a/code/modules/mob/living/carbon/human/blood.dm +++ b/code/modules/mob/living/carbon/human/blood.dm @@ -111,12 +111,13 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 //Bleeding out blood_max = 0 - for(var/obj/item/organ/limb/org in organs) - var/brutedamage = org.brute_dam + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + var/brutedamage = BP.brute_dam //We want an accurate reading of .len - listclearnulls(org.embedded_objects) - blood_max += 0.5*org.embedded_objects.len + listclearnulls(BP.embedded_objects) + blood_max += 0.5*BP.embedded_objects.len if(brutedamage > 30) blood_max += 0.5 @@ -223,10 +224,10 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 var/datum/reagent/blood/our = get_blood(vessel) - if (!injected || !our) + if (!injected || !our || !dna) return - if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]) ) + if(blood_incompatible(injected.data["blood_type"], dna.blood_type,injected.data["species"], dna.species.id) ) reagents.add_reagent("toxin",amount * 0.5) our.on_merge(injected.data) //still transfer viruses and such, even if incompatibles bloods reagents.update_total() diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 33ac914b274..3b8bb513a9e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -1,11 +1,8 @@ -/mob/living/carbon/human/gib_animation(animate) - ..(animate, "gibbed-h") +/mob/living/carbon/human/gib_animation() + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-h") -/mob/living/carbon/human/dust_animation(animate) - ..(animate, "dust-h") - -/mob/living/carbon/human/dust(animation = 1) - ..() +/mob/living/carbon/human/dust_animation() + new /obj/effect/overlay/temp/dust_animation(loc, "dust-h") /mob/living/carbon/human/spawn_gibs() hgibs(loc, viruses, dna) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 5227981c056..68c786f3d10 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -94,7 +94,9 @@ else msg += "[t_He] [t_has] \icon[gloves] \a [gloves] on [t_his] hands.\n" else if(blood_DNA) - msg += "[t_He] [t_has] blood-stained hands!\n" + var/hand_number = get_num_arms() + if(hand_number) + msg += "[t_He] [t_has] [hand_number > 1 ? "" : "a"] blood-stained hand[hand_number > 1 ? "s" : ""]!\n" //handcuffed? @@ -169,7 +171,7 @@ var/appears_dead = 0 if(stat == DEAD || (status_flags & FAKEDEATH)) appears_dead = 1 - if(getorgan(/obj/item/organ/internal/brain))//Only perform these checks if there is no brain + if(getorgan(/obj/item/organ/brain))//Only perform these checks if there is no brain if(suiciding) msg += "[t_He] appears to have commited suicide... there is no hope of recovery.\n" msg += "[t_He] [t_is] limp and unresponsive; there are no signs of life" @@ -185,13 +187,26 @@ if(!foundghost) msg += " and [t_his] soul has departed" msg += "...\n" - else//Brain is gone, doesn't matter if they are AFK or present + else if(get_bodypart("head")) //Brain is gone, doesn't matter if they are AFK or present. Check for head first tho. Decapitation has similar message. msg += "It appears that [t_his] brain is missing...\n" var/temp = getBruteLoss() //no need to calculate each of these twice msg += "" + var/list/missing = list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg") + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + missing -= BP.body_zone + for(var/obj/item/I in BP.embedded_objects) + msg += "[t_He] [t_has] \a \icon[I] [I] embedded in [t_his] [BP.name]!\n" + + for(var/t in missing) + if(t=="head") + msg += "[capitalize(t_his)] [parse_zone(t)] is missing!\n" + continue + msg += "[capitalize(t_his)] [parse_zone(t)] is missing!\n" + if(temp) if(temp < 30) msg += "[t_He] [t_has] minor bruising.\n" @@ -213,11 +228,6 @@ msg += "[t_He] [t_has] severe cellular damage.\n" - for(var/obj/item/organ/limb/L in organs) - for(var/obj/item/I in L.embedded_objects) - msg += "[t_He] [t_has] \a \icon[I] [I] embedded in [t_his] [L.getDisplayName()]!\n" - - if(fire_stacks > 0) msg += "[t_He] [t_is] covered in something flammable.\n" if(fire_stacks < 0) @@ -269,7 +279,7 @@ else if(getBrainLoss() >= 60) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" - if(getorgan(/obj/item/organ/internal/brain)) + if(getorgan(/obj/item/organ/brain)) if(istype(src,/mob/living/carbon/human/interactive)) msg += "[t_He] [t_is] appears to be some sort of sick automaton, [t_his] eyes are glazed over and [t_his] mouth is slightly agape.\n" else if(!key) @@ -285,7 +295,7 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - var/obj/item/organ/internal/cyberimp/eyes/hud/CIH = H.getorgan(/obj/item/organ/internal/cyberimp/eyes/hud) + var/obj/item/organ/cyberimp/eyes/hud/CIH = H.getorgan(/obj/item/organ/cyberimp/eyes/hud) if(istype(H.glasses, /obj/item/clothing/glasses/hud) || CIH) var/perpname = get_face_name(get_id_name("")) if(perpname) @@ -294,9 +304,9 @@ msg += "Rank: [R.fields["rank"]]
" msg += "\[Front photo\] " msg += "\[Side photo\]
" - if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH,/obj/item/organ/cyberimp/eyes/hud/medical)) var/implant_detect - for(var/obj/item/organ/internal/cyberimp/CI in internal_organs) + for(var/obj/item/organ/cyberimp/CI in internal_organs) if(CI.status == ORGAN_ROBOTIC) implant_detect += "[name] is modified with a [CI.name].
" if(implant_detect) @@ -312,7 +322,7 @@ msg += "\[Medical evaluation\]
" - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/security)) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH,/obj/item/organ/cyberimp/eyes/hud/security)) if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. var/criminal = "None" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 00ecdd0ff92..9ae245d91b8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -17,6 +17,13 @@ verbs += /mob/living/proc/mob_sleep verbs += /mob/living/proc/lay_down + //initialize limbs first + bodyparts = newlist(/obj/item/bodypart/chest, /obj/item/bodypart/head, /obj/item/bodypart/l_arm, + /obj/item/bodypart/r_arm, /obj/item/bodypart/r_leg, /obj/item/bodypart/l_leg) + for(var/X in bodyparts) + var/obj/item/bodypart/O = X + O.owner = src + //initialize dna. for spawned humans; overwritten by other code create_dna(src) randomize_human(src) @@ -26,18 +33,14 @@ set_species(dna.species.type) //initialise organs - organs = newlist(/obj/item/organ/limb/chest, /obj/item/organ/limb/head, /obj/item/organ/limb/l_arm, - /obj/item/organ/limb/r_arm, /obj/item/organ/limb/r_leg, /obj/item/organ/limb/l_leg) - for(var/obj/item/organ/limb/O in organs) - O.owner = src - internal_organs += new /obj/item/organ/internal/appendix - internal_organs += new /obj/item/organ/internal/lungs - internal_organs += new /obj/item/organ/internal/heart - internal_organs += new /obj/item/organ/internal/brain + internal_organs += new /obj/item/organ/appendix + internal_organs += new /obj/item/organ/lungs + internal_organs += new /obj/item/organ/heart + internal_organs += new /obj/item/organ/brain //Note: Additional organs are generated/replaced on the dna.species level - for(var/obj/item/organ/internal/I in internal_organs) + for(var/obj/item/organ/I in internal_organs) I.Insert(src) make_blood() @@ -56,12 +59,6 @@ //...and display them. add_to_all_human_data_huds() -/mob/living/carbon/human/Destroy() - for(var/atom/movable/organelle in organs) - qdel(organelle) - organs = list() - return ..() - /mob/living/carbon/human/Stat() ..() @@ -113,10 +110,12 @@ /mob/living/carbon/human/ex_act(severity, ex_target) var/b_loss = null var/f_loss = null + var/bomb_armor = getarmor(null, "bomb") + switch (severity) if (1) b_loss += 500 - if (prob(getarmor(null, "bomb"))) + if (prob(bomb_armor)) shred_clothing(1,150) var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) throw_at(target, 200, 4) @@ -128,7 +127,7 @@ b_loss += 60 f_loss += 60 - if (prob(getarmor(null, "bomb"))) + if (prob(bomb_armor)) b_loss = b_loss/1.5 f_loss = f_loss/1.5 shred_clothing(1,25) @@ -142,7 +141,7 @@ if(3) b_loss += 30 - if (prob(getarmor(null, "bomb"))) + if (prob(bomb_armor)) b_loss = b_loss/2 if (!istype(ears, /obj/item/clothing/ears/earmuffs)) adjustEarDamage(15,60) @@ -150,15 +149,24 @@ Paralyse(10) take_overall_damage(b_loss,f_loss) - + //attempt to dismember bodyparts + if(severity >= 2 || !bomb_armor) + var/max_limb_loss = round(4/severity) //so you don't lose four limbs at severity 3. + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if(prob(50/severity) && !prob(getarmor(BP, "bomb")) && BP.body_zone != "head" && BP.body_zone != "chest") + BP.dismember() + max_limb_loss-- + if(!max_limb_loss) + break ..() -/mob/living/carbon/human/blob_act() +/mob/living/carbon/human/blob_act(obj/effect/blob/B) if(stat == DEAD) return show_message("The blob attacks you!") var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) apply_damage(5, BRUTE, affecting, run_armor_check(affecting, "melee")) return @@ -172,6 +180,11 @@ return 0 ..() +/mob/living/carbon/human/attack_ui(slot) + if(!get_bodypart(hand ? "l_arm" : "r_arm")) + return 0 + return ..() + /mob/living/carbon/human/show_inv(mob/user) user.set_machine(src) var/has_breathable_mask = istype(wear_mask, /obj/item/clothing/mask) @@ -304,11 +317,11 @@ if(href_list["embedded_object"]) var/obj/item/I = locate(href_list["embedded_object"]) - var/obj/item/organ/limb/L = locate(href_list["embedded_limb"]) + var/obj/item/bodypart/L = locate(href_list["embedded_limb"]) if(!I || !L || I.loc != src || !(I in L.embedded_objects)) //no item, no limb, or item is not in limb or in the person anymore return var/time_taken = I.embedded_unsafe_removal_time*I.w_class - usr.visible_message("[usr] attempts to remove [I] from their [L.getDisplayName()].","You attempt to remove [I] from your [L.getDisplayName()]... (It will take [time_taken/10] seconds.)") + usr.visible_message("[usr] attempts to remove [I] from their [L.name].","You attempt to remove [I] from your [L.name]... (It will take [time_taken/10] seconds.)") if(do_after(usr, time_taken, needhand = 1, target = src)) if(!I || !L || I.loc != src || !(I in L.embedded_objects)) return @@ -317,7 +330,7 @@ I.loc = get_turf(src) usr.put_in_hands(I) usr.emote("scream") - usr.visible_message("[usr] successfully rips [I] out of their [L.getDisplayName()]!","You successfully remove [I] from your [L.getDisplayName()].") + usr.visible_message("[usr] successfully rips [I] out of their [L.name]!","You successfully remove [I] from your [L.name].") if(!has_embedded_objects()) clear_alert("embeddedobject") return @@ -415,8 +428,9 @@ var/status = "" if(getBruteLoss()) usr << "Physical trauma analysis:" - for(var/obj/item/organ/limb/org in organs) - var/brutedamage = org.brute_dam + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + var/brutedamage = BP.brute_dam if(brutedamage > 0) status = "received minor physical injuries." span = "notice" @@ -427,11 +441,12 @@ status = "sustained major trauma!" span = "userdanger" if(brutedamage) - usr << "The [org.getDisplayName()] appears to have [status]" + usr << "[BP] appears to have [status]" if(getFireLoss()) usr << "Analysis of skin burns:" - for(var/obj/item/organ/limb/org in organs) - var/burndamage = org.burn_dam + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + var/burndamage = BP.burn_dam if(burndamage > 0) status = "signs of minor burns." span = "notice" @@ -442,7 +457,7 @@ status = "major burns!" span = "userdanger" if(burndamage) - usr << "The [org.getDisplayName()] appears to have [status]" + usr << "[BP] appears to have [status]" if(getOxyLoss()) usr << "Patient has signs of suffocation, emergency treatment may be required!" if(getToxLoss() > 20) @@ -576,7 +591,7 @@ . = 1 // Default to returning true. if(user && !target_zone) target_zone = user.zone_selected - if(dna && PIERCEIMMUNE in dna.species.specflags) + if(dna && (PIERCEIMMUNE in dna.species.specflags)) . = 0 // If targeting the head, see if the head item is thin enough. // If targeting anything else, see if the wear suit is thin enough. @@ -736,10 +751,13 @@ "[src] examines \himself.", \ "You check yourself for injuries.") - for(var/obj/item/organ/limb/org in organs) + var/list/missing = list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg") + for(var/X in bodyparts) + var/obj/item/bodypart/LB = X + missing -= LB.body_zone var/status = "" - var/brutedamage = org.brute_dam - var/burndamage = org.burn_dam + var/brutedamage = LB.brute_dam + var/burndamage = LB.burn_dam if(hallucination) if(prob(30)) brutedamage += rand(30,40) @@ -763,10 +781,13 @@ status += "numb" if(status == "") status = "OK" - src << "\t [status == "OK" ? "\blue" : "\red"] Your [org.getDisplayName()] is [status]." + src << "\t [status == "OK" ? "\blue" : "\red"] Your [LB.name] is [status]." - for(var/obj/item/I in org.embedded_objects) - src << "\t \red There is \a [I] embedded in your [org.getDisplayName()]!" + for(var/obj/item/I in LB.embedded_objects) + src << "\t \red There is \a [I] embedded in your [LB.name]!" + + for(var/t in missing) + src << "Your [parse_zone(t)] is missing!" if(blood_max) src << "You are bleeding!" @@ -857,16 +878,9 @@ /mob/living/carbon/human/proc/electrocution_animation(anim_duration) //Handle mutant parts if possible if(dna && dna.species) - dna.species.handle_mutant_bodyparts(src,"black") - dna.species.handle_hair(src,"black") - dna.species.update_color(src,"black") overlays += "electrocuted_base" spawn(anim_duration) if(src) - if(dna && dna.species) - dna.species.handle_mutant_bodyparts(src) - dna.species.handle_hair(src) - dna.species.update_color(src) overlays -= "electrocuted_base" else //or just do a generic animation @@ -936,9 +950,10 @@ hud_used.healthdoll.overlays.Cut() if(stat != DEAD) hud_used.healthdoll.icon_state = "healthdoll_OVERLAY" - for(var/obj/item/organ/limb/L in organs) - var/damage = L.burn_dam + L.brute_dam - var/comparison = (L.max_damage/5) + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + var/damage = BP.burn_dam + BP.brute_dam + var/comparison = (BP.max_damage/5) var/icon_num = 0 if(damage) icon_num = 1 @@ -953,16 +968,20 @@ if(hal_screwyhud == 5) icon_num = 0 if(icon_num) - hud_used.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[L.name][icon_num]") + hud_used.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[BP.body_zone][icon_num]") + for(var/t in get_missing_limbs()) //Missing limbs + hud_used.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[t]6") else hud_used.healthdoll.icon_state = "healthdoll_DEAD" /mob/living/carbon/human/fully_heal(admin_revive = 0) + if(admin_revive) + regenerate_limbs() if(!getorganslot("lungs")) - var/obj/item/organ/internal/lungs/L = new() + var/obj/item/organ/lungs/L = new() L.Insert(src) if(!getorganslot("tongue")) - var/obj/item/organ/internal/tongue/T = new() + var/obj/item/organ/tongue/T = new() T.Insert(src) restore_blood() remove_all_embedded_objects() diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm index 10e19dfd198..3f7acda2524 100644 --- a/code/modules/mob/living/carbon/human/human_attackalien.dm +++ b/code/modules/mob/living/carbon/human/human_attackalien.dm @@ -13,7 +13,7 @@ visible_message("[M] has lunged at [src]!", \ "[M] has lunged at [src]!") return 0 - var/obj/item/organ/limb/affecting = get_organ(ran_zone(M.zone_selected)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(M.zone_selected)) var/armor_block = run_armor_check(affecting, "melee","","",10) playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm index 54c47761514..63dcd230169 100644 --- a/code/modules/mob/living/carbon/human/human_attackpaw.dm +++ b/code/modules/mob/living/carbon/human/human_attackpaw.dm @@ -1,6 +1,6 @@ /mob/living/carbon/human/attack_paw(mob/living/carbon/monkey/M) var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) if(M.a_intent == "help") ..() //shaking diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index f7e020147e1..ca45f109c58 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -1,15 +1,16 @@ -//Updates the mob's health from organs and mob damage variables +//Updates the mob's health from bodyparts and mob damage variables /mob/living/carbon/human/updatehealth() if(status_flags & GODMODE) return var/total_burn = 0 var/total_brute = 0 - for(var/obj/item/organ/limb/O in organs) //hardcoded to streamline things a bit - total_brute += O.brute_dam - total_burn += O.burn_dam + for(var/X in bodyparts) //hardcoded to streamline things a bit + var/obj/item/bodypart/BP = X + total_brute += BP.brute_dam + total_burn += BP.burn_dam health = maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute update_stat() - if( ((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD ) + if(((maxHealth - total_burn) < config.health_threshold_dead) && stat == DEAD ) ChangeToHusk() if(on_fire) shred_clothing() @@ -17,17 +18,19 @@ med_hud_set_status() -//These procs fetch a cumulative total damage from all organs +//These procs fetch a cumulative total damage from all bodyparts /mob/living/carbon/human/getBruteLoss() var/amount = 0 - for(var/obj/item/organ/limb/O in organs) - amount += O.brute_dam + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + amount += BP.brute_dam return amount /mob/living/carbon/human/getFireLoss() var/amount = 0 - for(var/obj/item/organ/limb/O in organs) - amount += O.burn_dam + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + amount += BP.burn_dam return amount @@ -59,30 +62,32 @@ //////////////////////////////////////////// -//Returns a list of damaged organs -/mob/living/carbon/human/proc/get_damaged_organs(brute, burn) - var/list/obj/item/organ/limb/parts = list() - for(var/obj/item/organ/limb/O in organs) - if((brute && O.brute_dam) || (burn && O.burn_dam)) - parts += O +//Returns a list of damaged bodyparts +/mob/living/carbon/human/proc/get_damaged_bodyparts(brute, burn) + var/list/obj/item/bodypart/parts = list() + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if((brute && BP.brute_dam) || (burn && BP.burn_dam)) + parts += BP return parts -//Returns a list of damageable organs -/mob/living/carbon/human/proc/get_damageable_organs() - var/list/obj/item/organ/limb/parts = list() - for(var/obj/item/organ/limb/O in organs) - if(O.brute_dam + O.burn_dam < O.max_damage) - parts += O +//Returns a list of damageable bodyparts +/mob/living/carbon/human/proc/get_damageable_bodyparts() + var/list/obj/item/bodypart/parts = list() + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if(BP.brute_dam + BP.burn_dam < BP.max_damage) + parts += BP return parts //Heals ONE external organ, organ gets randomly selected from damaged ones. //It automatically updates damage overlays if necesary //It automatically updates health status /mob/living/carbon/human/heal_organ_damage(brute, burn) - var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) + var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute,burn) if(!parts.len) return - var/obj/item/organ/limb/picked = pick(parts) + var/obj/item/bodypart/picked = pick(parts) if(picked.heal_damage(brute,burn,0)) update_damage_overlays(0) updatehealth() @@ -91,22 +96,22 @@ //It automatically updates damage overlays if necesary //It automatically updates health status /mob/living/carbon/human/take_organ_damage(brute, burn) - var/list/obj/item/organ/limb/parts = get_damageable_organs() + var/list/obj/item/bodypart/parts = get_damageable_bodyparts() if(!parts.len) return - var/obj/item/organ/limb/picked = pick(parts) + var/obj/item/bodypart/picked = pick(parts) if(picked.take_damage(brute,burn)) update_damage_overlays(0) updatehealth() -//Heal MANY external organs, in random order +//Heal MANY bodyparts, in random order /mob/living/carbon/human/heal_overall_damage(brute, burn, updating_health=1) - var/list/obj/item/organ/limb/parts = get_damaged_organs(brute,burn) + var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute,burn) var/update = 0 while(parts.len && (brute>0 || burn>0) ) - var/obj/item/organ/limb/picked = pick(parts) + var/obj/item/bodypart/picked = pick(parts) var/brute_was = picked.brute_dam var/burn_was = picked.burn_dam @@ -122,15 +127,15 @@ if(update) update_damage_overlays(0) -// damage MANY external organs, in random order +// damage MANY bodyparts, in random order /mob/living/carbon/human/take_overall_damage(brute, burn) if(status_flags & GODMODE) return //godmode - var/list/obj/item/organ/limb/parts = get_damageable_organs() + var/list/obj/item/bodypart/parts = get_damageable_bodyparts() var/update = 0 while(parts.len && (brute>0 || burn>0) ) - var/obj/item/organ/limb/picked = pick(parts) + var/obj/item/bodypart/picked = pick(parts) var/brute_per_part = brute/parts.len var/burn_per_part = burn/parts.len @@ -156,15 +161,6 @@ //////////////////////////////////////////// -/mob/living/carbon/human/proc/get_organ(zone) - if(!zone) - zone = "chest" - for(var/obj/item/organ/limb/O in organs) - if(O.name == zone) - return O - return null - - /mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = 0) // depending on the species, it will run the corresponding apply_damage code there return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index db6e21f3ad5..7eab6c1d4f0 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -5,18 +5,19 @@ if(def_zone) if(islimb(def_zone)) return checkarmor(def_zone, type) - var/obj/item/organ/limb/affecting = get_organ(ran_zone(def_zone)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(def_zone)) return checkarmor(affecting, type) //If a specific bodypart is targetted, check how that bodypart is protected and return the value. //If you don't specify a bodypart, it checks ALL your bodyparts for protection, and averages out the values - for(var/obj/item/organ/limb/organ in organs) - armorval += checkarmor(organ, type) + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + armorval += checkarmor(BP, type) organnum++ return (armorval/max(organnum, 1)) -/mob/living/carbon/human/proc/checkarmor(obj/item/organ/limb/def_zone, type) +/mob/living/carbon/human/proc/checkarmor(obj/item/bodypart/def_zone, type) if(!type) return 0 var/protection = 0 @@ -94,23 +95,21 @@ return 0 -/mob/living/carbon/human/attacked_by(obj/item/I, mob/living/user, def_zone) +/mob/living/carbon/human/attacked_by(obj/item/I, mob/living/user) if(!I || !user) return 0 - var/obj/item/organ/limb/target_limb = get_organ(check_zone(user.zone_selected)) - var/obj/item/organ/limb/affecting = get_organ(ran_zone(user.zone_selected)) - var/hit_area = parse_zone(affecting.name) - var/target_area = parse_zone(target_limb.name) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(user.zone_selected)) + var/target_area = parse_zone(check_zone(user.zone_selected)) feedback_add_details("item_used_for_combat","[I.type]|[I.force]") feedback_add_details("zone_targeted","[target_area]") // the attacked_by code varies among species - return dna.species.spec_attacked_by(I, user, def_zone, affecting, hit_area, a_intent, target_limb, target_area, src) + return dna.species.spec_attacked_by(I, user, affecting, a_intent, target_area, src) /mob/living/carbon/human/emp_act(severity) var/informed = 0 - for(var/obj/item/organ/limb/L in src.organs) + for(var/obj/item/bodypart/L in src.bodyparts) if(L.status == ORGAN_ROBOTIC) if(!informed) src << "You feel a sharp pain as your robotic limbs overload." @@ -149,7 +148,7 @@ else src << "Your [head_clothes.name] protects your head and face from the acid!" else - . = get_organ("head") + . = get_bodypart("head") if(.) damaged += . if(ears) @@ -170,7 +169,7 @@ else src << "Your [chest_clothes.name] protects your body from the acid!" else - . = get_organ("chest") + . = get_bodypart("chest") if(.) damaged += . if(wear_id) @@ -201,10 +200,10 @@ else src << "Your [arm_clothes.name] protects your arms and hands from the acid!" else - . = get_organ("r_arm") + . = get_bodypart("r_arm") if(.) damaged += . - . = get_organ("l_arm") + . = get_bodypart("l_arm") if(.) damaged += . @@ -227,16 +226,16 @@ else src << "Your [leg_clothes.name] protects your legs and feet from the acid!" else - . = get_organ("r_leg") + . = get_bodypart("r_leg") if(.) damaged += . - . = get_organ("l_leg") + . = get_bodypart("l_leg") if(.) damaged += . //DAMAGE// - for(var/obj/item/organ/limb/affecting in damaged) + for(var/obj/item/bodypart/affecting in damaged) affecting.take_damage(acidity, 2*acidity) if(affecting.name == "head") @@ -277,7 +276,7 @@ if(check_shields(damage, "the [M.name]", null, MELEE_ATTACK, M.armour_penetration)) return 0 var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) var/armor = run_armor_check(affecting, "melee") apply_damage(damage, M.melee_damage_type, affecting, armor, "", "", M.armour_penetration) updatehealth() @@ -291,7 +290,7 @@ return 0 if(stat != DEAD) L.amount_grown = min(L.amount_grown + damage, L.max_grown) - var/obj/item/organ/limb/affecting = get_organ(ran_zone(L.zone_selected)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(L.zone_selected)) var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) updatehealth() @@ -308,16 +307,17 @@ var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin") - var/obj/item/organ/limb/affecting = get_organ(ran_zone(dam_zone)) + var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone)) var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) /mob/living/carbon/human/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == "harm") + M.do_attack_animation(src) if(M.damtype == "brute") step_away(src,M,15) - var/obj/item/organ/limb/temp = get_organ(pick("chest", "chest", "chest", "head")) + var/obj/item/bodypart/temp = get_bodypart(pick("chest", "chest", "chest", "head")) if(temp) var/update = 0 switch(M.damtype) @@ -359,12 +359,12 @@ if(can_embed(I)) if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.specflags))) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) - var/obj/item/organ/limb/L = pick(organs) + var/obj/item/bodypart/L = pick(bodyparts) L.embedded_objects |= I I.add_blood(src)//it embedded itself in you, of course it's bloody! I.loc = src L.take_damage(I.w_class*I.embedded_impact_pain_multiplier) - visible_message("\the [I.name] embeds itself in [src]'s [L.getDisplayName()]!","\the [I.name] embeds itself in your [L.getDisplayName()]!") + visible_message("\the [I.name] embeds itself in [src]'s [L.name]!","\the [I.name] embeds itself in your [L.name]!") hitpush = 0 skipcatch = 1 //can't catch the now embedded item diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index af9cdb04fb0..150dfeca61b 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -47,8 +47,6 @@ var/global/default_martial_art = new/datum/martial_art var/blood_max = 0 //how much are we bleeding var/bleedsuppress = 0 //for stopping bloodloss, eventually this will be limb-based like bleeding - var/list/organs = list() //Gets filled up in the constructor (human.dm, New() proc. - var/datum/martial_art/martial_art = null var/name_override //For temporary visible name changes diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index ce5ba1cba23..642f86d9903 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -55,7 +55,7 @@ return if_no_face if( head && (head.flags_inv&HIDEFACE) ) return if_no_face //Likewise for hats - var/obj/item/organ/limb/O = get_organ("head") + var/obj/item/bodypart/O = get_bodypart("head") if( !O || (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible return if_no_face return real_name diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 6fb70500d4d..10b12f5425b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -214,7 +214,7 @@ if(dna.check_mutation(COLDRES)) return 1 //Fully protected from the cold. - if(dna && COLDRES in dna.species.specflags) + if(dna && (RESISTCOLD in dna.species.specflags)) return 1 temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. @@ -289,17 +289,18 @@ . = 1 return . /mob/living/carbon/human/proc/handle_embedded_objects() - for(var/obj/item/organ/limb/L in organs) - for(var/obj/item/I in L.embedded_objects) + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + for(var/obj/item/I in BP.embedded_objects) if(prob(I.embedded_pain_chance)) - L.take_damage(I.w_class*I.embedded_pain_multiplier) - src << "\the [I] embedded in your [L.getDisplayName()] hurts!" + BP.take_damage(I.w_class*I.embedded_pain_multiplier) + src << "\the [I] embedded in your [BP.name] hurts!" if(prob(I.embedded_fall_chance)) - L.take_damage(I.w_class*I.embedded_fall_pain_multiplier) - L.embedded_objects -= I + BP.take_damage(I.w_class*I.embedded_fall_pain_multiplier) + BP.embedded_objects -= I I.loc = get_turf(src) - visible_message("\the [I] falls out of [name]'s [L.getDisplayName()]!","\the [I] falls out of your [L.getDisplayName()]!") + visible_message("\the [I] falls out of [name]'s [BP.name]!","\the [I] falls out of your [BP.name]!") if(!has_embedded_objects()) clear_alert("embeddedobject") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 5d9f35689fc..a9bfdce73cb 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -41,7 +41,7 @@ var/say_mod = "says" // affects the speech message var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have. var/list/mutant_bodyparts = list() // Parts of the body that are diferent enough from the standard human model that they cause clipping with some equipment - var/list/mutant_organs = list(/obj/item/organ/internal/tongue) //Internal organs that are unique to this race. + var/list/mutant_organs = list(/obj/item/organ/tongue) //Internal organs that are unique to this race. var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster var/armor = 0 // overall defense for the race... or less defense, if it's negative. var/brutemod = 1 // multiplier for brute damage @@ -71,7 +71,7 @@ var/safe_co2_min = 0 var/safe_co2_max = 10 // Yes it's an arbitrary value who cares? var/safe_toxins_min = 0 - var/safe_toxins_max = 0.005 + var/safe_toxins_max = 0.05 var/SA_para_min = 1 //Sleeping agent var/SA_sleep_min = 5 //Sleeping agent @@ -83,6 +83,8 @@ var/tox_breath_dam_min = MIN_PLASMA_DAMAGE var/tox_breath_dam_max = MAX_PLASMA_DAMAGE + var/has_dismemberment = 1 //Whether or not this species uses dismemberment for its limbs + /////////// // PROCS // /////////// @@ -125,10 +127,12 @@ var/obj/item/thing = C.get_item_by_slot(slot_id) if(thing) C.unEquip(thing) + if(!has_dismemberment) + C.regenerate_limbs() //if we don't handle dismemberment, we grow our missing limbs back if(exotic_blood) C.reagents.add_reagent(exotic_blood, 80) for(var/path in mutant_organs) - var/obj/item/organ/internal/I = new path() + var/obj/item/organ/I = new path() I.Insert(C) /datum/species/proc/on_species_loss(mob/living/carbon/C) @@ -148,6 +152,8 @@ return "[id]" /datum/species/proc/update_color(mob/living/carbon/human/H, forced_colour) + if(has_dismemberment) //only species without dismemberment still use base icon states. + return H.remove_overlay(SPECIES_LAYER) var/image/standing @@ -185,6 +191,11 @@ /datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour) H.remove_overlay(HAIR_LAYER) + + var/obj/item/bodypart/head/HD = H.get_bodypart("head") + if(!HD) //Decapitated + return + if(H.disabilities & HUSK) return var/datum/sprite_accessory/S @@ -204,9 +215,7 @@ if(H.facial_hair_style && (FACEHAIR in specflags) && !facialhair_hidden) S = facial_hair_styles_list[H.facial_hair_style] if(S) - var/image/img_facial_s - - img_facial_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER) + var/image/img_facial_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER) if(!forced_colour) if(hair_color) @@ -233,7 +242,7 @@ if(M.flags_inv & HIDEHAIR) hair_hidden = 1 if(!hair_hidden) - if(!H.getorgan(/obj/item/organ/internal/brain)) //Applies the debrained overlay if there is no brain + if(!H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER) else if(H.hair_style && (HAIR in specflags)) @@ -267,16 +276,24 @@ var/list/standing = list() + if(!has_dismemberment) //Legacy support + H.update_base_icon_state() + if(!(H.disabilities & HUSK)) + update_color(H) + + handle_mutant_bodyparts(H) + var/obj/item/bodypart/head/HD = H.get_bodypart("head") + // lipstick - if(H.lip_style && LIPS in specflags) + if(H.lip_style && (LIPS in specflags) && HD) var/image/lips = image("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[H.lip_style]_s", "layer" = -BODY_LAYER) lips.color = H.lip_color standing += lips // eyes - if(EYECOLOR in specflags) + if((EYECOLOR in specflags) && HD) var/image/img_eyes_s = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[eyes]_s", "layer" = -BODY_LAYER) img_eyes_s.color = "#" + H.eye_color standing += img_eyes_s @@ -295,7 +312,7 @@ else standing += image("icon"=U2.icon, "icon_state"="[U2.icon_state]_s", "layer"=-BODY_LAYER) - if(H.socks) + if(H.socks && H.get_num_legs() >= 2) var/datum/sprite_accessory/socks/U3 = socks_list[H.socks] if(U3) standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER) @@ -319,6 +336,8 @@ if(!mutant_bodyparts) return + var/obj/item/bodypart/head/HD = H.get_bodypart("head") + if("tail_lizard" in mutant_bodyparts) if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) bodyparts_to_add -= "tail_lizard" @@ -351,19 +370,19 @@ bodyparts_to_add -= "waggingspines" if("snout" in mutant_bodyparts) //Take a closer look at that snout! - if((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) || (H.head && (H.head.flags_inv & HIDEFACE))) + if((H.wear_mask && (H.wear_mask.flags_inv & HIDEFACE)) || (H.head && (H.head.flags_inv & HIDEFACE)) || !HD || HD.status == ORGAN_ROBOTIC) bodyparts_to_add -= "snout" if("frills" in mutant_bodyparts) - if(!H.dna.features["frills"] || H.dna.features["frills"] == "None" || H.head && (H.head.flags_inv & HIDEEARS)) + if(!H.dna.features["frills"] || H.dna.features["frills"] == "None" || H.head && (H.head.flags_inv & HIDEEARS) || !HD || HD.status == ORGAN_ROBOTIC) bodyparts_to_add -= "frills" if("horns" in mutant_bodyparts) - if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR))) + if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == ORGAN_ROBOTIC) bodyparts_to_add -= "horns" if("ears" in mutant_bodyparts) - if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR))) + if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)) || !HD || HD.status == ORGAN_ROBOTIC) bodyparts_to_add -= "ears" if(!bodyparts_to_add) @@ -469,20 +488,31 @@ if(!(type in I.species_exception)) return 0 + var/R = H.has_right_hand() + var/L = H.has_left_hand() + var/num_arms = H.get_num_arms() + var/num_legs = H.get_num_legs() + switch(slot) if(slot_l_hand) if(H.l_hand) return 0 + if(!L) + return 0 return 1 if(slot_r_hand) if(H.r_hand) return 0 + if(!R) + return 0 return 1 if(slot_wear_mask) if(H.wear_mask) return 0 if( !(I.slot_flags & SLOT_MASK) ) return 0 + if(!H.get_bodypart("head")) + return 0 return 1 if(slot_back) if(H.back) @@ -501,12 +531,16 @@ return 0 if( !(I.slot_flags & SLOT_GLOVES) ) return 0 + if(num_arms < 2) + return 0 return 1 if(slot_shoes) if(H.shoes) return 0 if( !(I.slot_flags & SLOT_FEET) ) return 0 + if(num_legs < 2) + return 0 return 1 if(slot_belt) if(H.belt) @@ -523,18 +557,24 @@ return 0 if( !(I.slot_flags & SLOT_EYES) ) return 0 + if(!H.get_bodypart("head")) + return 0 return 1 if(slot_head) if(H.head) return 0 if( !(I.slot_flags & SLOT_HEAD) ) return 0 + if(!H.get_bodypart("head")) + return 0 return 1 if(slot_ears) if(H.ears) return 0 if( !(I.slot_flags & SLOT_EARS) ) return 0 + if(!H.get_bodypart("head")) + return 0 return 1 if(slot_w_uniform) if(H.w_uniform) @@ -604,12 +644,16 @@ return 0 if(!istype(I, /obj/item/weapon/restraints/handcuffs)) return 0 + if(num_arms < 2) + return 0 return 1 if(slot_legcuffed) if(H.legcuffed) return 0 if(!istype(I, /obj/item/weapon/restraints/legcuffs)) return 0 + if(num_legs < 2) + return 0 return 1 if(slot_in_backpack) if (H.back && istype(H.back, /obj/item/weapon/storage/backpack)) @@ -712,7 +756,7 @@ if(A.update_remote_sight(H)) //returns 1 if we override all other sight updates. return - for(var/obj/item/organ/internal/cyberimp/eyes/E in H.internal_organs) + for(var/obj/item/organ/cyberimp/eyes/E in H.internal_organs) H.sight |= E.sight_flags if(E.dark_view) H.see_in_dark = E.dark_view @@ -757,7 +801,7 @@ H << "You feel weak." H.emote("collapse") if(prob(15)) - if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || HAIR in specflags) + if(!( H.hair_style == "Shaved") || !(H.hair_style == "Bald") || (HAIR in specflags)) H << "Your hair starts to fall out in clumps..." spawn(50) H.facial_hair_style = "Shaved" @@ -796,7 +840,7 @@ if(istype(J) && J.allow_thrust(0.01, H)) . -= 2 else - var/obj/item/organ/internal/cyberimp/chest/thrusters/T = H.getorganslot("thrusters") + var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot("thrusters") if(istype(T) && T.allow_thrust(0.01, H)) . -= 2 @@ -825,6 +869,12 @@ if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR + var/leg_amount = H.get_num_legs() + . += 6 - 3*leg_amount //the fewer the legs, the slower the mob + if(!leg_amount) + . += 6 - 3*H.get_num_arms() //crawling is harder with fewer arms + + . += speedmod ////////////////// @@ -870,13 +920,14 @@ var/damage = rand(M.dna.species.punchdamagelow, M.dna.species.punchdamagehigh) - if(!damage) + var/obj/item/bodypart/affecting = H.get_bodypart(ran_zone(M.zone_selected)) + + if(!damage || !affecting) playsound(H.loc, M.dna.species.miss_sound, 25, 1, -1) H.visible_message("[M] has attempted to [atk_verb] [H]!") return 0 - var/obj/item/organ/limb/affecting = H.get_organ(ran_zone(M.zone_selected)) var/armor_block = H.run_armor_check(affecting, "melee") playsound(H.loc, M.dna.species.attack_sound, 25, 1, -1) @@ -902,7 +953,7 @@ if(H.w_uniform) H.w_uniform.add_fingerprint(M) - var/obj/item/organ/limb/affecting = H.get_organ(ran_zone(M.zone_selected)) + var/obj/item/bodypart/affecting = H.get_bodypart(ran_zone(M.zone_selected)) var/randn = rand(1, 100) if(randn <= 25) playsound(H, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) @@ -951,23 +1002,45 @@ "[M] attemped to disarm [H]!") return -/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, def_zone, obj/item/organ/limb/affecting, hit_area, intent, obj/item/organ/limb/target_limb, target_area, mob/living/carbon/human/H) +/datum/species/proc/spec_attacked_by(obj/item/I, mob/living/user, obj/item/bodypart/affecting, intent, target_area, mob/living/carbon/human/H) // Allows you to put in item-specific reactions based on species if(user != H) user.do_attack_animation(H) if(H.check_shields(I.force, "the [I.name]", I, MELEE_ATTACK, I.armour_penetration)) return 0 - H.send_item_attack_message(I, user, hit_area) + var/hit_area + if(!affecting) //Something went wrong. Maybe the limb is missing? + H.visible_message("[user] has attempted to attack [H] with [I]!", \ + "[user] has attempted to attack [H] with [I]!") + playsound(H, 'sound/weapons/punchmiss.ogg', 25, 1, -1) + return 0 - if(!I.force) - return 0 //item force is zero + hit_area = affecting.name + var/def_zone = affecting.body_zone var/armor_block = H.run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].",I.armour_penetration) armor_block = min(90,armor_block) //cap damage reduction at 90% var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords) - apply_damage(I.force, I.damtype, affecting, armor_block, H) + apply_damage(I.force, I.damtype, def_zone, armor_block, H) + + H.send_item_attack_message(I, user, hit_area) + + if(!I.force) + return 0 //item force is zero + + //dismemberment + if(affecting.get_damage() >= affecting.max_damage) + if(I.can_dismember() && prob(I.force*(I.w_class-1))) + if(affecting.dismember()) + I.add_blood(H) + playsound(get_turf(H), pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg'), 80, 1) + affecting.add_blood(H) + var/turf/location = H.loc + if(istype(location)) + location.add_blood(H) + return var/bloody = 0 if(((I.damtype == BRUTE) && I.force && prob(25 + (I.force * 2)))) @@ -1039,12 +1112,13 @@ if(!damage || blocked <= 0) return 0 - var/obj/item/organ/limb/organ = null + var/obj/item/bodypart/organ = null if(islimb(def_zone)) organ = def_zone else - if(!def_zone) def_zone = ran_zone(def_zone) - organ = H.get_organ(check_zone(def_zone)) + if(!def_zone) + def_zone = ran_zone(def_zone) + organ = H.get_bodypart(check_zone(def_zone)) if(!organ) return 0 @@ -1265,7 +1339,7 @@ if(200 to 260) H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head") - if(!(HEATRES in specflags)) // HEAT DAMAGE + if(!(RESISTHEAT in specflags)) // HEAT DAMAGE switch(breath.temperature) if(360 to 400) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head") @@ -1300,7 +1374,7 @@ H.bodytemperature += min((1-thermal_protection) * ((loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. - if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(HEATRES in specflags)) + if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHEAT in specflags)) //Body temperature is too hot. switch(H.bodytemperature) if(360 to 400) @@ -1339,7 +1413,7 @@ var/adjusted_pressure = H.calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. switch(adjusted_pressure) if(HAZARD_HIGH_PRESSURE to INFINITY) - if(!(HEATRES in specflags)) + if(!(RESISTHEAT in specflags)) H.adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) H.throw_alert("pressure", /obj/screen/alert/highpressure, 2) else @@ -1351,7 +1425,7 @@ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1) else - if(H.dna.check_mutation(COLDRES) || (COLDRES in specflags)) + if(H.dna.check_mutation(COLDRES) || (RESISTCOLD in specflags)) H.clear_alert("pressure") else H.adjustBruteLoss( LOW_PRESSURE_DAMAGE ) @@ -1362,11 +1436,11 @@ ////////// /datum/species/proc/handle_fire(mob/living/carbon/human/H) - if((HEATRES in specflags) || (NOFIRE in specflags)) + if((RESISTHEAT in specflags) || (NOFIRE in specflags)) return 1 /datum/species/proc/IgniteMob(mob/living/carbon/human/H) - if((HEATRES in specflags) || (NOFIRE in specflags)) + if((RESISTHEAT in specflags) || (NOFIRE in specflags)) return 1 /datum/species/proc/ExtinguishMob(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index df97e03d43b..a7beebc5857 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -56,7 +56,7 @@ default_color = "00FF00" specflags = list(MUTCOLORS,EYECOLOR,LIPS) mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings") - mutant_organs = list(/obj/item/organ/internal/tongue/lizard) + mutant_organs = list(/obj/item/organ/tongue/lizard) default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' @@ -182,6 +182,7 @@ specflags = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE) meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "slimejelly" + has_dismemberment = 0 /datum/species/jelly/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely @@ -319,7 +320,7 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "golem" - specflags = list(NOBREATH,HEATRES,COLDRES,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) + specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) speedmod = 2 armor = 55 siemens_coeff = 0 @@ -330,6 +331,7 @@ nojumpsuit = 1 sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem + has_dismemberment = 0 /datum/species/golem/adamantine name = "Adamantine Golem" @@ -376,7 +378,7 @@ name = "Human?" id = "fly" say_mod = "buzzes" - mutant_organs = list(/obj/item/organ/internal/tongue/fly) + mutant_organs = list(/obj/item/organ/tongue/fly) meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/fly /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) @@ -410,7 +412,7 @@ blacklisted = 1 sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) + specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) var/list/myspan = null /datum/species/skeleton/New() @@ -433,8 +435,8 @@ sexes = 0 blacklisted = 1 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE) - mutant_organs = list(/obj/item/organ/internal/tongue/zombie) + specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOBLOOD,RADIMMUNE) + mutant_organs = list(/obj/item/organ/tongue/zombie) /datum/species/cosmetic_zombie name = "Human" @@ -450,7 +452,7 @@ say_mod = "gibbers" sexes = 0 specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE) - mutant_organs = list(/obj/item/organ/internal/tongue/abductor) + mutant_organs = list(/obj/item/organ/tongue/abductor) var/scientist = 0 // vars to not pollute spieces list with castes var/agent = 0 var/team = 1 @@ -473,20 +475,6 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_ burnmod = 2 heatmod = 2 speedmod = 1 - var/skin = 0 - -/datum/species/plasmaman/skin - name = "Skinbone" - skin = 1 - roundstart = 0 - -/datum/species/plasmaman/update_base_icon_state(mob/living/carbon/human/H) - var/base = ..() - if(base == id && !skin) - base = "[base]_m" - else - base = "skinbone_m" - return base /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() @@ -510,6 +498,8 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_ /datum/species/plasmaman/before_equip_job(datum/job/J, mob/living/carbon/human/H, visualsOnly = FALSE) var/datum/outfit/plasmaman/O = new /datum/outfit/plasmaman H.equipOutfit(O, visualsOnly) + H.internal = H.r_hand + H.update_internals_hud_icon(1) return 0 /datum/species/plasmaman/qualifies_for_rank(rank, list/features) @@ -544,7 +534,7 @@ var/global/list/synth_flesh_disguises = list() var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/image/damaged_synth_flesh = null //an image to display when we're below disguise_fail_health var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged - + has_dismemberment = 0 /datum/species/synth/military name = "Military Synth" @@ -663,7 +653,10 @@ var/global/list/synth_flesh_disguises = list() H.updatehealth() if(H.health > disguise_fail_health) if(fake_species) - return fake_species.update_base_icon_state(H) + if(fake_species.has_dismemberment) + return fake_species.handle_body(H) + else + return fake_species.update_base_icon_state(H) else return ..() else @@ -672,7 +665,7 @@ var/global/list/synth_flesh_disguises = list() /datum/species/synth/update_color(mob/living/carbon/human/H, forced_colour) H.updatehealth() if(H.health > disguise_fail_health) - if(fake_species) + if(fake_species && fake_species.has_dismemberment) fake_species.update_color(H, forced_colour) @@ -739,4 +732,4 @@ SYNDICATE BLACK OPS use_skintones = 0 specflags = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR) sexes = 0 - + has_dismemberment = 0 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 8a44cd032a1..6cb5cda6feb 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -50,6 +50,7 @@ There are several things that need to be remembered: If you have any questions/constructive-comments/bugs-to-report Please contact me on #coderbus IRC. ~Carnie x //Carn can sometimes be hard to reach now. However IRC is still your best bet for getting help. + */ /mob/living/carbon/human/proc/update_base_icon_state() @@ -65,11 +66,12 @@ Please contact me on #coderbus IRC. ~Carnie x var/image/standing = image("icon"='icons/mob/dam_human.dmi', "icon_state"="blank", "layer"=-DAMAGE_LAYER) overlays_standing[DAMAGE_LAYER] = standing - for(var/obj/item/organ/limb/O in organs) - if(O.brutestate) - standing.overlays += "[O.icon_state]_[O.brutestate]0" //we're adding icon_states of the base image as overlays - if(O.burnstate) - standing.overlays += "[O.icon_state]_0[O.burnstate]" + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if(BP.brutestate) + standing.overlays += "[BP.icon_state]_[BP.brutestate]0" //we're adding icon_states of the base image as overlays + if(BP.burnstate) + standing.overlays += "[BP.icon_state]_0[BP.burnstate]" apply_overlay(DAMAGE_LAYER) @@ -78,10 +80,6 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_hair() dna.species.handle_hair(src) -/mob/living/carbon/human/proc/update_mutcolor() - if(!(disabilities & HUSK)) - dna.species.update_color(src) - //used when putting/removing clothes that hide certain mutant body parts to just update those and not update the whole body. /mob/living/carbon/human/proc/update_mutant_bodyparts() dna.species.handle_mutant_bodyparts(src) @@ -89,39 +87,53 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/proc/update_body() remove_overlay(BODY_LAYER) - update_base_icon_state() dna.species.handle_body(src) + update_body_parts() /mob/living/carbon/human/update_fire() ..("Standing") +/mob/living/carbon/human/proc/update_body_parts() + if(!dna.species.has_dismemberment) //Species don't have no dismemberment going for 'em! + remove_overlay(BODYPARTS_LAYER) + return -/mob/living/carbon/human/proc/update_augments() - remove_overlay(AUGMENTS_LAYER) + icon_state = ""//Reset here as apposed to having a null one due to some getFlatIcon calls at roundstart. - var/list/standing = list() - var/g = (gender == FEMALE) ? "f" : "m" + remove_overlay(SPECIES_LAYER)//if we switch from a species w/o dismemberment to one with it, we must clear that layer. + //CHECK FOR UPDATE + var/oldkey = icon_render_key + icon_render_key = generate_icon_render_key() + if(oldkey == icon_render_key) + return - if(getlimb(/obj/item/organ/limb/robot/r_arm)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="r_arm_s", "layer"=-AUGMENTS_LAYER) - if(getlimb(/obj/item/organ/limb/robot/l_arm)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="l_arm_s", "layer"=-AUGMENTS_LAYER) + remove_overlay(BODYPARTS_LAYER) - if(getlimb(/obj/item/organ/limb/robot/r_leg)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="r_leg_s", "layer"=-AUGMENTS_LAYER) - if(getlimb(/obj/item/organ/limb/robot/l_leg)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="l_leg_s", "layer"=-AUGMENTS_LAYER) + //LOAD ICONS + if(limb_icon_cache[icon_render_key]) + load_limb_from_cache() + update_damage_overlays() + update_mutant_bodyparts() + update_hair() + return - if(getlimb(/obj/item/organ/limb/robot/chest)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="chest_[g]_s", "layer"=-AUGMENTS_LAYER) - if(getlimb(/obj/item/organ/limb/robot/head)) - standing += image("icon"='icons/mob/augments.dmi', "icon_state"="head_s", "layer"=-AUGMENTS_LAYER) + //GENERATE NEW LIMBS + var/list/new_limbs = list() + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + if(!BP.no_update) + BP.update_limb() + var/image/temp = BP.get_limb_icon() + if(temp) + new_limbs += temp + if(new_limbs.len) + overlays_standing[BODYPARTS_LAYER] = new_limbs + limb_icon_cache[icon_render_key] = new_limbs - if(standing.len) - overlays_standing[AUGMENTS_LAYER] = standing + apply_overlay(BODYPARTS_LAYER) + update_damage_overlays() - apply_overlay(AUGMENTS_LAYER) /* --------------------------------------- */ //For legacy support. @@ -144,10 +156,10 @@ Please contact me on #coderbus IRC. ~Carnie x update_inv_wear_suit() update_inv_pockets() update_transform() - // Mutantrace colors - update_mutcolor() //mutations update_mutations_overlay() + //damage overlays + update_damage_overlays() /* --------------------------------------- */ //vvvvvv UPDATE_INV PROCS vvvvvv @@ -216,6 +228,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_gloves() remove_overlay(GLOVES_LAYER) + if(get_num_arms() <2) + return + if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_gloves] inv.update_icon() @@ -245,6 +260,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_glasses() remove_overlay(GLASSES_LAYER) + if(!get_bodypart("head")) //decapitated + return + if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_glasses] inv.update_icon() @@ -266,6 +284,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_ears() remove_overlay(EARS_LAYER) + if(!get_bodypart("head")) //decapitated + return + if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_ears] inv.update_icon() @@ -285,6 +306,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_shoes() remove_overlay(SHOES_LAYER) + if(get_num_legs() <2) + return + if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_shoes] inv.update_icon() @@ -323,6 +347,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_head() + remove_overlay(HEAD_LAYER) + if(!get_bodypart("head")) //Decapitated + return ..() if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_head] @@ -402,6 +429,9 @@ Please contact me on #coderbus IRC. ~Carnie x /mob/living/carbon/human/update_inv_wear_mask() + remove_overlay(FACEMASK_LAYER) + if(!get_bodypart("head")) //Decapitated + return ..() if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_mask] @@ -523,3 +553,64 @@ generate/load female uniform sprites matching all previously decided variables return standing + + + + + + + + +///////////////////// +// Limb Icon Cache // +///////////////////// +/* + Called from update_body_parts() these procs handle the limb icon cache. + the limb icon cache adds an icon_render_key to a human mob, it represents: + - skin_tone (if applicable) + - gender + - limbs (stores as the limb name and whether it is removed/fine, organic/robotic) + These procs only store limbs as to increase the number of matching icon_render_keys + This cache exists because drawing 6/7 icons for humans constantly is quite a waste + See RemieRichards on irc.rizon.net #coderbus +*/ + +var/global/list/limb_icon_cache = list() + +/mob/living/carbon/human + var/icon_render_key = "" + + +//produces a key based on the human's limbs +/mob/living/carbon/human/proc/generate_icon_render_key() + . = "[dna.species.id]" + + if(dna.check_mutation(HULK)) + . += "-coloured-hulk" + else if(dna.species.use_skintones) + . += "-coloured-[skin_tone]" + else if(dna.features["mcolor"]) + . += "-coloured-[dna.features["mcolor"]]" + else + . += "-not_coloured" + + . += "-[gender]" + + for(var/X in bodyparts) + var/obj/item/bodypart/BP = X + . += "-[BP.body_zone]" + if(BP.status == ORGAN_ORGANIC) + . += "-organic" + else + . += "-robotic" + + if(disabilities & HUSK) + . += "-husk" + + +//change the human's icon to the one matching it's key +/mob/living/carbon/human/proc/load_limb_from_cache() + if(limb_icon_cache[icon_render_key]) + remove_overlay(BODYPARTS_LAYER) + overlays_standing[BODYPARTS_LAYER] = limb_icon_cache[icon_render_key] + apply_overlay(BODYPARTS_LAYER) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index bc3c607c8b4..77c3a6c6d0d 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -14,7 +14,7 @@ if(..()) . = 1 - for(var/obj/item/organ/internal/O in internal_organs) + for(var/obj/item/organ/O in internal_organs) O.on_life() //grab processing @@ -218,7 +218,7 @@ hud_used.lingchemdisplay.invisibility = 0 hud_used.lingchemdisplay.maptext = "
[round(mind.changeling.chem_charges)]
" else - hud_used.lingchemdisplay.invisibility = 101 + hud_used.lingchemdisplay.invisibility = INVISIBILITY_ABSTRACT /mob/living/carbon/handle_mutations_and_radiation() diff --git a/code/modules/mob/living/carbon/monkey/death.dm b/code/modules/mob/living/carbon/monkey/death.dm index 7884e7064b5..5a1f10e92df 100644 --- a/code/modules/mob/living/carbon/monkey/death.dm +++ b/code/modules/mob/living/carbon/monkey/death.dm @@ -1,11 +1,8 @@ -/mob/living/carbon/monkey/gib_animation(animate) - ..(animate, "gibbed-m") +/mob/living/carbon/monkey/gib_animation() + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-m") -/mob/living/carbon/monkey/dust_animation(animate) - ..(animate, "dust-m") - -/mob/living/carbon/monkey/dust(var/animation = 1) - ..() +/mob/living/carbon/monkey/dust_animation() + new /obj/effect/overlay/temp/dust_animation(loc, "dust-m") /mob/living/carbon/monkey/death(gibbed) if(stat == DEAD) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 7cae78192ea..e9a142ce5a3 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -20,16 +20,24 @@ if(unique_name) //used to exclude pun pun gender = pick(MALE, FEMALE) real_name = name + + //initialize limbs, currently only used to handle cavity implant surgery, no dismemberment. + bodyparts = newlist(/obj/item/bodypart/chest, /obj/item/bodypart/head, /obj/item/bodypart/l_arm, + /obj/item/bodypart/r_arm, /obj/item/bodypart/r_leg, /obj/item/bodypart/l_leg) + for(var/X in bodyparts) + var/obj/item/bodypart/O = X + O.owner = src + if(good_mutations.len) //genetic mutations have been set up. initialize() - internal_organs += new /obj/item/organ/internal/appendix - internal_organs += new /obj/item/organ/internal/lungs - internal_organs += new /obj/item/organ/internal/heart - internal_organs += new /obj/item/organ/internal/brain - internal_organs += new /obj/item/organ/internal/tongue + internal_organs += new /obj/item/organ/appendix + internal_organs += new /obj/item/organ/lungs + internal_organs += new /obj/item/organ/heart + internal_organs += new /obj/item/organ/brain + internal_organs += new /obj/item/organ/tongue - for(var/obj/item/organ/internal/I in internal_organs) + for(var/obj/item/organ/I in internal_organs) I.Insert(src) ..() @@ -38,13 +46,6 @@ create_dna(src) dna.initialize_dna(random_blood_type()) -/mob/living/carbon/monkey/prepare_data_huds() - //Prepare our med HUD... - ..() - //...and display it. - for(var/datum/atom_hud/data/human/medical/hud in huds) - hud.add_to_hud(src) - /mob/living/carbon/monkey/movement_delay() if(reagents) if(reagents.has_reagent("morphine")) @@ -305,10 +306,10 @@ /mob/living/carbon/monkey/fully_heal(admin_revive = 0) if(!getorganslot("lungs")) - var/obj/item/organ/internal/lungs/L = new() + var/obj/item/organ/lungs/L = new() L.Insert(src) if(!getorganslot("tongue")) - var/obj/item/organ/internal/tongue/T = new() + var/obj/item/organ/tongue/T = new() T.Insert(src) ..() diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 726fbd8d126..9f940c4e5ce 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -1,6 +1,6 @@ /mob/living/carbon/treat_message(message) message = ..(message) - var/obj/item/organ/internal/tongue/T = getorganslot("tongue") + var/obj/item/organ/tongue/T = getorganslot("tongue") if(!T) //hoooooouaah! var/regex/tongueless_lower = new("\[gdntke]+", "g") var/regex/tongueless_upper = new("\[GDNTKE]+", "g") diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm new file mode 100644 index 00000000000..24c9305aa15 --- /dev/null +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -0,0 +1,79 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/mob/living/carbon/damage_eyes(amount) + if(amount>0) + eye_damage = amount + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + +/mob/living/carbon/set_eye_damage(amount) + eye_damage = max(amount,0) + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + else + clear_fullscreen("eye_damage") + +/mob/living/carbon/adjust_eye_damage(amount) + eye_damage = max(eye_damage+amount, 0) + if(eye_damage > 20) + if(eye_damage > 30) + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) + else + overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) + else + clear_fullscreen("eye_damage") + +/mob/living/carbon/adjust_drugginess(amount) + var/old_druggy = druggy + if(amount>0) + druggy += amount + if(!old_druggy) + overlay_fullscreen("high", /obj/screen/fullscreen/high) + throw_alert("high", /obj/screen/alert/high) + else if(old_druggy) + druggy = max(druggy+amount, 0) + if(!druggy) + clear_fullscreen("high") + clear_alert("high") +/mob/living/carbon/set_drugginess(amount) + var/old_druggy = druggy + druggy = amount + if(amount>0) + if(!old_druggy) + overlay_fullscreen("high", /obj/screen/fullscreen/high) + throw_alert("high", /obj/screen/alert/high) + else if(old_druggy) + clear_fullscreen("high") + clear_alert("high") + + +/mob/living/carbon/cure_blind() + if(disabilities & BLIND) + disabilities &= ~BLIND + adjust_blindness(-1) + return 1 +/mob/living/carbon/become_blind() + if(!(disabilities & BLIND)) + disabilities |= BLIND + blind_eyes(1) + return 1 + +/mob/living/carbon/cure_nearsighted() + if(disabilities & NEARSIGHT) + disabilities &= ~NEARSIGHT + clear_fullscreen("nearsighted") + return 1 + +/mob/living/carbon/become_nearsighted() + if(!(disabilities & NEARSIGHT)) + disabilities |= NEARSIGHT + overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 18d6cc56f2b..e4c1500e632 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -1,4 +1,4 @@ -/mob/living/gib(animation = 1) +/mob/living/gib(no_brain, no_organs) var/prev_lying = lying if(stat != DEAD) death(1) @@ -6,34 +6,39 @@ if(buckled) buckled.unbuckle_mob(src,force=1) //to update alien nest overlay, forced because we don't exist anymore - var/atom/movable/overlay/animate = setup_animation(animation, prev_lying) - if(animate) - gib_animation(animate) - + if(!prev_lying) + gib_animation() + if(!no_organs) + spill_organs(no_brain) spawn_gibs() + qdel(src) - end_animation(animate) // Will qdel(src) +/mob/living/proc/gib_animation() + return /mob/living/proc/spawn_gibs() gibs(loc, viruses) -/mob/living/proc/gib_animation(animate, flick_name = "gibbed") - flick(flick_name, animate) +/mob/living/proc/spill_organs(no_brain) + return -/mob/living/dust(animation = 0) + +/mob/living/dust() death(1) - var/atom/movable/overlay/animate = setup_animation(animation, 0) - if(animate) - dust_animation(animate) + if(buckled) + buckled.unbuckle_mob(src,force=1) + + dust_animation() spawn_dust() - end_animation(animate) + qdel(src) + +/mob/living/proc/dust_animation() + return /mob/living/proc/spawn_dust() new /obj/effect/decal/cleanable/ash(loc) -/mob/living/proc/dust_animation(animate, flick_name = "") - flick(flick_name, animate) /mob/living/death(gibbed) unset_machine() @@ -49,7 +54,8 @@ paralysis = 0 stunned = 0 weakened = 0 - sleeping = 0 + set_drugginess(0) + SetSleeping(0, 0) blind_eyes(1) reset_perspective(null) hide_fullscreens() @@ -57,29 +63,5 @@ update_damage_hud() update_health_hud() update_canmove() - - -/mob/living/proc/setup_animation(animation, prev_lying) - var/atom/movable/overlay/animate = null - notransform = 1 - canmove = 0 - icon = null - invisibility = 101 - alpha = 0 - - if(!prev_lying && animation) - animate = new(loc) - animate.icon_state = "blank" - animate.icon = 'icons/mob/mob.dmi' - animate.master = src - return animate - -/mob/living/proc/end_animation(animate) - if(!animate) - qdel(src) - else - spawn(15) - if(animate) - qdel(animate) - if(src) - qdel(src) + med_hud_set_health() + med_hud_set_status() diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 70fdee24d9c..8145741e009 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -2,6 +2,8 @@ //Things like airguitar can be done without arms, and the flap thing makes so little sense it's a keeper. //Intended to be called by a higher up emote proc if the requested emote isn't in the custom emotes. + + /mob/living/emote(act, m_type=1, message = null) if(stat) return @@ -13,6 +15,7 @@ param = copytext(act, t1 + 1, length(act) + 1) act = copytext(act, 1, t1) + act = lowertext(act) switch(act)//Hello, how would you like to order? Alphabetically! if ("aflap") if (!src.restrained()) @@ -47,6 +50,10 @@ message = "[src] chokes!" m_type = 2 + if ("cross","crosses") + message = "[src] crosses their arms." + m_type = 2 + if ("chuckle","chuckles") message = "[src] chuckles." m_type = 2 @@ -94,6 +101,10 @@ message = "[src] frowns." m_type = 1 + if ("gag","gags") + message = "[src] gags!" + m_type = 2 + if ("gasp","gasps") message = "[src] gasps!" m_type = 2 @@ -120,10 +131,33 @@ message = "[src] grins." m_type = 1 + if ("groan","groans") + message = "[src] groans!" + m_type = 1 + + + if ("grimace","grimaces") + message = "[src] grimaces." + m_type = 1 + if ("jump","jumps") message = "[src] jumps!" m_type = 1 + if ("kiss","kisses") //S-so forward uwa~ + var/M = null + if (param) + for (var/mob/A in view(1, src)) + if (param == A.name) + M = A + break + if (!M) + param = null + if (param) + message = "[src] blows a kiss to [param]." //I was gonna make this [src] kisses [param] but then I imagined dealing with an ahelp about someone spamming it and following certain players around and I had a miniature stroke. + else + message = "[src] blows a kiss." + if ("laugh","laughs") message = "[src] laughs." m_type = 2 @@ -175,11 +209,18 @@ else pointed(M) m_type = 1 - + if ("pout","pouts") + message = "[src] pouts." + m_type = 2 + if ("scream","screams") message = "[src] screams!" m_type = 2 + if ("scowl","scowls") + message = "[src] scowls." + m_type = 1 + if ("shake","shakes") message = "[src] shakes its head." m_type = 1 @@ -200,6 +241,10 @@ message = "[src] sneezes." m_type = 2 + if ("smug","smugs") + message = "[src] grins smugly." + m_type = 2 + if ("sniff","sniffs") message = "[src] sniffs." m_type = 2 @@ -222,10 +267,29 @@ else message = "[src] stares." + if ("stretch","stretches") + message = "[src] stretches their arms." + m_type = 2 + if ("sulk","sulks") message = "[src] sulks down sadly." m_type = 1 + if ("surrender","surrenders") + message = "[src] puts their hands on their head and falls to the ground, they surrender!" + if(sleeping) + return //Can't surrender while asleep. + Weaken(20) //So you can't resist. + m_type = 1 + + if ("faint","faints") + message = "[src] faints." + if(sleeping) + return //Can't faint while asleep + SetSleeping(10) //Short-short nap + m_type = 1 + + if ("sway","sways") message = "[src] sways around dizzily." m_type = 1 @@ -250,12 +314,16 @@ message = "[src] whimpers." m_type = 2 + if ("wsmile","wsmiles") + message = "[src] smiles weakly." + m_type = 2 + if ("yawn","yawns") message = "[src] yawns." m_type = 2 if ("help") - src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, jump, laugh, look, me, nod, point-atom, scream, shake, sigh, sit, smile, sneeze, sniff, snore, stare-(none)/mob, sulk, sway, tremble, twitch, twitch_s, wave, whimper, yawn" + src << "Help for emotes. You can use these emotes with say \"*emote\":\n\naflap, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough, cross, dance, deathgasp, drool, flap, frown, gasp, giggle, glare-(none)/mob, grin, grimace, groan, jump, kiss, laugh, look, me, nod, point-atom, scream, shake, sigh, sit, smile, sneeze, sniff, snore, stare-(none)/mob, stretch, sulk, surrender, sway, tremble, twitch, twitch_s, wave, whimper, wsmile, yawn" else src << "Unusable emote '[act]'. Say *help for a list." diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index be63fc849a6..7584716e394 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -86,9 +86,9 @@ if(paralysis) AdjustParalysis(-1) if(stunned) - AdjustStunned(-1) + AdjustStunned(-1, 1, 1) if(weakened) - AdjustWeakened(-1, ignore_canweaken=1) + AdjustWeakened(-1, 1, 1) /mob/living/proc/handle_disabilities() //Eyes diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 64351823b7c..06f6492e9ae 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -23,10 +23,19 @@ Sorry Giacom. Please don't be mad :( if(unique_name) name = "[name] ([rand(1, 1000)])" real_name = name - + var/datum/atom_hud/data/human/medical/advanced/medhud = huds[DATA_HUD_MEDICAL_ADVANCED] + medhud.add_to_hud(src) faction |= "\ref[src]" +/mob/living/prepare_huds() + ..() + prepare_data_huds() + +/mob/living/proc/prepare_data_huds() + med_hud_set_health() + med_hud_set_status() + /mob/living/Destroy() ..() @@ -36,7 +45,7 @@ Sorry Giacom. Please don't be mad :( D.client.images.Remove(I) qdel(I) staticOverlays.len = 0 - + remove_from_all_data_huds() return QDEL_HINT_HARDDEL_NOW @@ -210,7 +219,7 @@ Sorry Giacom. Please don't be mad :( return health = maxHealth - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() update_stat() - + med_hud_set_health() //This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually //affects them once clothing is factored in. ~Errorage @@ -426,21 +435,9 @@ Sorry Giacom. Please don't be mad :( var/t = shooter.zone_selected if ((t in list( "eyes", "mouth" ))) t = "head" - var/obj/item/organ/limb/def_zone = ran_zone(t) + var/def_zone = ran_zone(t) return def_zone -//damage/heal the mob ears and adjust the deaf amount -/mob/living/adjustEarDamage(damage, deaf) - ear_damage = max(0, ear_damage + damage) - ear_deaf = max(0, ear_deaf + deaf) - -//pass a negative argument to skip one of the variable -/mob/living/setEarDamage(damage, deaf) - if(damage >= 0) - ear_damage = damage - if(deaf >= 0) - ear_deaf = deaf - // heal ONE external organ, organ gets randomly selected from damaged ones. /mob/living/proc/heal_organ_damage(brute, burn, updating_health=1) adjustBruteLoss(-brute, updating_health) @@ -455,14 +452,14 @@ Sorry Giacom. Please don't be mad :( if(updating_health) updatehealth() -// heal MANY external organs, in random order +// heal MANY bodyparts, in random order /mob/living/proc/heal_overall_damage(brute, burn, updating_health=1) adjustBruteLoss(-brute, updating_health) adjustFireLoss(-burn, updating_health) if(updating_health) updatehealth() -// damage MANY external organs, in random order +// damage MANY bodyparts, in random order /mob/living/proc/take_overall_damage(brute, burn, updating_health=1) adjustBruteLoss(brute, updating_health) adjustFireLoss(burn, updating_health) @@ -998,174 +995,3 @@ Sorry Giacom. Please don't be mad :( /mob/proc/update_sight() return - -/mob/proc/blind_eyes(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = max(eye_blind, amount) - if(!old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - -/mob/proc/adjust_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind += amount - if(!old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if(stat != CONSCIOUS || (disabilities & BLIND)) - blind_minimum = 1 - eye_blind = max(eye_blind+amount, blind_minimum) - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - -/mob/proc/set_blindness(amount) - if(amount>0) - var/old_eye_blind = eye_blind - eye_blind = amount - if(client && !old_eye_blind) - throw_alert("blind", /obj/screen/alert/blind) - overlay_fullscreen("blind", /obj/screen/fullscreen/blind) - else if(eye_blind) - var/blind_minimum = 0 - if(stat != CONSCIOUS || (disabilities & BLIND)) - blind_minimum = 1 - eye_blind = blind_minimum - if(!eye_blind) - clear_alert("blind") - clear_fullscreen("blind") - -/mob/proc/blur_eyes(amount) - if(amount>0) - var/old_eye_blurry = eye_blurry - eye_blurry = max(amount, eye_blurry) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - -/mob/proc/adjust_blurriness(amount) - var/old_eye_blurry = eye_blurry - eye_blurry = max(eye_blurry+amount, 0) - if(amount>0) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - else if(old_eye_blurry && !eye_blurry) - clear_fullscreen("blurry") - -/mob/proc/set_blurriness(amount) - var/old_eye_blurry = eye_blurry - eye_blurry = max(amount, 0) - if(amount>0) - if(!old_eye_blurry) - overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) - else if(old_eye_blurry) - clear_fullscreen("blurry") - - -/mob/proc/damage_eyes(amount) - return - -/mob/living/carbon/damage_eyes(amount) - if(amount>0) - eye_damage = amount - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - - -/mob/proc/set_eye_damage(amount) - return - -/mob/living/carbon/set_eye_damage(amount) - eye_damage = max(amount,0) - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - -/mob/proc/adjust_eye_damage(amount) - return - -/mob/living/carbon/adjust_eye_damage(amount) - eye_damage = max(eye_damage+amount, 0) - if(eye_damage > 20) - if(eye_damage > 30) - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 2) - else - overlay_fullscreen("eye_damage", /obj/screen/fullscreen/impaired, 1) - else - clear_fullscreen("eye_damage") - -/mob/proc/adjust_drugginess(amount) - return - -/mob/living/carbon/adjust_drugginess(amount) - var/old_druggy = druggy - if(amount>0) - druggy += amount - if(!old_druggy) - overlay_fullscreen("high", /obj/screen/fullscreen/high) - throw_alert("high", /obj/screen/alert/high) - else if(old_druggy) - druggy = max(druggy+amount, 0) - if(!druggy) - clear_fullscreen("high") - clear_alert("high") - -/mob/proc/set_drugginess(amount) - return - -/mob/living/carbon/set_drugginess(amount) - var/old_druggy = druggy - druggy = amount - if(amount>0) - if(!old_druggy) - overlay_fullscreen("high", /obj/screen/fullscreen/high) - throw_alert("high", /obj/screen/alert/high) - else if(old_druggy) - clear_fullscreen("high") - clear_alert("high") - -/mob/proc/cure_blind() //when we want to cure the BLIND disability only. - return - -/mob/living/carbon/cure_blind() - if(disabilities & BLIND) - disabilities &= ~BLIND - adjust_blindness(-1) - return 1 - -/mob/proc/cure_nearsighted() - return - -/mob/living/carbon/cure_nearsighted() - if(disabilities & NEARSIGHT) - disabilities &= ~NEARSIGHT - clear_fullscreen("nearsighted") - return 1 - -/mob/proc/become_nearsighted() - return - -/mob/living/carbon/become_nearsighted() - if(!(disabilities & NEARSIGHT)) - disabilities |= NEARSIGHT - overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - return 1 - -/mob/proc/become_blind() - return - -/mob/living/carbon/become_blind() - if(!(disabilities & BLIND)) - disabilities |= BLIND - blind_eyes(1) - return 1 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 4c1c0581d91..773931c8d7d 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -78,6 +78,7 @@ /mob/living/mech_melee_attack(obj/mecha/M) if(M.occupant.a_intent == "harm") + M.do_attack_animation(src) if(M.damtype == "brute") step_away(src,M,15) switch(M.damtype) @@ -101,8 +102,6 @@ add_logs(M.occupant, src, "pushed", M) visible_message("[M] pushes [src] out of the way.") - return - //Mobs on Fire /mob/living/proc/IgniteMob() diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 85ab36335ad..2406a5ba0ed 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -3,6 +3,7 @@ languages = HUMAN sight = 0 see_in_dark = 2 + hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) //Health and life related vars var/maxHealth = 100 //Maximum health that should be possible. diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 91b5b987139..58d25079b3e 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -350,7 +350,7 @@ var/list/ai_list = list() SSshuttle.cancelEvac(src) return -/mob/living/silicon/ai/blob_act() +/mob/living/silicon/ai/blob_act(obj/effect/blob/B) if (stat != DEAD) adjustBruteLoss(60) updatehealth() diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index d03587fd26d..03cbf964dea 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -6,7 +6,7 @@ /mob/camera/aiEye name = "Inactive AI Eye" - invisibility = 100 + invisibility = INVISIBILITY_MAXIMUM var/list/visibleCameraChunks = list() var/mob/living/silicon/ai/ai = null var/relay_speech = FALSE diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm index 4c01e8724d5..02fb54012b1 100644 --- a/code/modules/mob/living/silicon/death.dm +++ b/code/modules/mob/living/silicon/death.dm @@ -1,9 +1,6 @@ /mob/living/silicon/spawn_gibs() robogibs(loc, viruses) -/mob/living/silicon/gib(animation = 0) // Please don't remove this thinking this proc does nothing, it is changing the default value for animation. - ..() - /mob/living/silicon/spawn_dust() new /obj/effect/decal/remains/robot(loc) diff --git a/code/modules/mob/living/silicon/login.dm b/code/modules/mob/living/silicon/login.dm index fd1e5cf1701..08bfb5e6455 100644 --- a/code/modules/mob/living/silicon/login.dm +++ b/code/modules/mob/living/silicon/login.dm @@ -1,6 +1,6 @@ /mob/living/silicon/Login() if(mind && ticker && ticker.mode) - ticker.mode.remove_cultist(mind, 0) + ticker.mode.remove_cultist(mind, 0, 0) ticker.mode.remove_revolutionary(mind, 0) ticker.mode.remove_gangster(mind, remove_bosses=1) ticker.mode.remove_thrall(mind,0) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7533a4233bb..ec801c34740 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -92,7 +92,7 @@ else stat(null, text("Systems nonfunctional")) -/mob/living/silicon/pai/blob_act() +/mob/living/silicon/pai/blob_act(obj/effect/blob/B) return 0 /mob/living/silicon/pai/restrained() diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index e586bbd8b0e..571176ae586 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -1,13 +1,12 @@ -/mob/living/silicon/robot/gib(animation = 1) - ..() /mob/living/silicon/robot/spawn_gibs() robogibs(loc, viruses) -/mob/living/silicon/robot/gib_animation(animate) - ..(animate, "gibbed-r") +/mob/living/silicon/robot/gib_animation() + new /obj/effect/overlay/temp/gib_animation(loc, "gibbed-r") -/mob/living/silicon/robot/dust(animation = 1) + +/mob/living/silicon/robot/dust() if(mmi) qdel(mmi) ..() @@ -15,8 +14,8 @@ /mob/living/silicon/robot/spawn_dust() new /obj/effect/decal/remains/robot(loc) -/mob/living/silicon/robot/dust_animation(animate) - ..(animate, "dust-r") +/mob/living/silicon/robot/dust_animation() + new /obj/effect/overlay/temp/dust_animation(loc, "dust-r") /mob/living/silicon/robot/death(gibbed) if(stat == DEAD) diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 02bbd168dc1..91413e2e1ad 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -198,25 +198,25 @@ //cycle_modules() - Cycles through the list of selected modules. /mob/living/silicon/robot/proc/cycle_modules() var/slot_start = get_selected_module() - if(slot_start) deselect_module(slot_start) //Only deselect if we have a selected slot. + if(slot_start) + deselect_module(slot_start) //Only deselect if we have a selected slot. var/slot_num if(slot_start == 0) slot_num = 1 - slot_start = 2 + slot_start = 4 else slot_num = slot_start + 1 - while(slot_start != slot_num) //If we wrap around without finding any free slots, just give up. + while(slot_num != slot_start) //If we wrap around without finding any free slots, just give up. if(module_active(slot_num)) select_module(slot_num) return slot_num++ - if(slot_num > 3) slot_num = 1 //Wrap around. + if(slot_num > 4) // not >3 otherwise cycling with just one item on module 3 wouldn't work + slot_num = 1 //Wrap around. - return /mob/living/silicon/robot/swap_hand() cycle_modules() - return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 76874621d33..2c3db69ef8e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -116,7 +116,7 @@ //MMI stuff. Held togheter by magic. ~Miauw if(!mmi || !mmi.brainmob) mmi = new (src) - mmi.brain = new /obj/item/organ/internal/brain(mmi) + mmi.brain = new /obj/item/organ/brain(mmi) mmi.brain.name = "[real_name]'s brain" mmi.icon_state = "mmi_full" mmi.name = "Man-Machine Interface: [real_name]" @@ -353,7 +353,7 @@ if(thruster_button) thruster_button.icon_state = "ionpulse[ionpulse_on]" -/mob/living/silicon/robot/blob_act() +/mob/living/silicon/robot/blob_act(obj/effect/blob/B) if (stat != 2) adjustBruteLoss(60) updatehealth() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ef48c295882..0f4ecdb8946 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -130,6 +130,7 @@ modules += new /obj/item/weapon/wrench/cyborg(src) modules += new /obj/item/weapon/crowbar/cyborg(src) modules += new /obj/item/device/healthanalyzer(src) + modules += new /obj/item/toy/crayon/spraycan/borg(src) emag = new /obj/item/weapon/melee/energy/sword/cyborg(src) fix_modules() @@ -179,6 +180,7 @@ modules += new /obj/item/device/multitool/cyborg(src) modules += new /obj/item/device/t_scanner(src) modules += new /obj/item/device/analyzer(src) + modules += new /obj/item/areaeditor/blueprints/cyborg(src) add_module(new /obj/item/stack/sheet/metal/cyborg()) add_module(new /obj/item/stack/sheet/glass/cyborg()) @@ -260,6 +262,8 @@ modules += new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) modules += new /obj/item/weapon/pen(src) + modules += new /obj/item/toy/crayon/spraycan/borg(src) + modules += new /obj/item/weapon/hand_labeler/borg(src) modules += new /obj/item/weapon/razor(src) modules += new /obj/item/device/instrument/violin(src) modules += new /obj/item/device/instrument/guitar(src) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index f25becac68c..208bd2da166 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -41,6 +41,12 @@ diag_hud_set_status() diag_hud_set_health() +/mob/living/silicon/med_hud_set_health() + return //we use a different hud + +/mob/living/silicon/med_hud_set_status() + return //we use a different hud + /mob/living/silicon/Destroy() radio = null aicamera = null @@ -457,12 +463,6 @@ "[M] punches [src], but doesn't leave a dent.") return 0 -/mob/living/silicon/adjustEarDamage() - return - -/mob/living/silicon/setEarDamage() - return - /mob/living/silicon/proc/GetPhoto() if (aicamera) return aicamera.selectpicture(aicamera) @@ -489,33 +489,3 @@ animate(src, transform = ntransform, time = 2,easing = EASE_IN|EASE_OUT) return ..() - -/mob/living/silicon/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - update_stat() - -/mob/living/silicon/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - update_stat() - -/mob/living/silicon/AdjustStunned(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - update_stat() - -/mob/living/silicon/Weaken(amount, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(max(weakened,amount),0) - update_stat() - -/mob/living/silicon/SetWeakened(amount) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - update_stat() - -/mob/living/silicon/AdjustWeakened(amount, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(weakened + amount,0) - update_stat() diff --git a/code/modules/mob/living/silicon/status_procs.dm b/code/modules/mob/living/silicon/status_procs.dm new file mode 100644 index 00000000000..b3e0a088f36 --- /dev/null +++ b/code/modules/mob/living/silicon/status_procs.dm @@ -0,0 +1,52 @@ + +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/living/silicon/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_stat() + +/mob/living/silicon/AdjustStunned(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(stunned + amount,0) + if(updating) + update_stat() + +/mob/living/silicon/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(amount,0) + if(updating) + update_stat() + +/////////////////////////////////// WEAKENED //////////////////////////////////// + +/mob/living/silicon/Weaken(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(max(weakened,amount),0) + if(updating) + update_stat() + +/mob/living/silicon/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(weakened + amount,0) + if(updating) + update_stat() + +/mob/living/silicon/SetWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN || ignore_canweaken) + weakened = max(amount,0) + if(updating) + update_stat() + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/living/silicon/adjustEarDamage() + return + +/mob/living/silicon/setEarDamage() + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 43bb2e55a25..a21e2bd2bf5 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -188,6 +188,12 @@ ..() diag_hud_set_bothealth() +/mob/living/simple_animal/bot/med_hud_set_health() + return //we use a different hud + +/mob/living/simple_animal/bot/med_hud_set_status() + return //we use a different hud + /mob/living/simple_animal/bot/handle_automated_action() //Master process which handles code common across most bots. set background = BACKGROUND_ENABLED diag_hud_set_botmode() diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index f7efbc7c198..5c00a4fc3bf 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -174,7 +174,7 @@ /mob/living/simple_animal/bot/cleanbot/proc/clean(obj/effect/decal/cleanable/target) anchored = 1 icon_state = "cleanbot-c" - visible_message("[src] begins to clean up [target]") + visible_message("[src] begins to clean up [target].") mode = BOT_CLEANING spawn(50) if(mode == BOT_CLEANING) diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 6e9cef8a147..0aef48fdc9f 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -20,7 +20,7 @@ minbodytemp = 200 maxbodytemp = 400 unsuitable_atmos_damage = 1 - species = /mob/living/simple_animal/pet/cat + animal_species = /mob/living/simple_animal/pet/cat childtype = list(/mob/living/simple_animal/pet/cat/kitten) butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 2) response_help = "pets" @@ -115,7 +115,7 @@ var/savefile/S = new /savefile("data/npc_saves/Runtime.sav") family = list() for(var/mob/living/simple_animal/pet/cat/C in mob_list) - if(istype(C,type) || C.stat || !C.butcher_results) //That last one is a work around for hologram cats + if(istype(C,type) || C.stat || !C.z || !C.butcher_results) //That last one is a work around for hologram cats continue if(C.type in family) family[C.type] += 1 @@ -125,11 +125,11 @@ memory_saved = 1 /mob/living/simple_animal/pet/cat/Runtime/proc/Deploy_The_Cats() + cats_deployed = 1 for(var/cat_type in family) if(family[cat_type] > 0) for(var/i in 1 to min(family[cat_type],100)) //Limits to about 500 cats, you wouldn't think this would be needed (BUT IT IS) new cat_type(loc) - cats_deployed = 1 /mob/living/simple_animal/pet/cat/Proc name = "Proc" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index bd928eb762c..b0df6fbc666 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -24,7 +24,7 @@ gender = MALE butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) childtype = list(/mob/living/simple_animal/pet/dog/corgi/puppy = 95, /mob/living/simple_animal/pet/dog/corgi/puppy/void = 5) - species = /mob/living/simple_animal/pet/dog + animal_species = /mob/living/simple_animal/pet/dog var/shaved = 0 var/obj/item/inventory_head var/obj/item/inventory_back @@ -164,7 +164,7 @@ usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!" return - if(istype(item_to_add,/obj/item/weapon/c4)) // last thing he ever wears, I guess + if(istype(item_to_add,/obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess item_to_add.afterattack(src,usr,1) return @@ -200,7 +200,7 @@ /mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user) - if(istype(item_to_add,/obj/item/weapon/c4)) // last thing he ever wears, I guess + if(istype(item_to_add,/obj/item/weapon/grenade/plastic)) // last thing he ever wears, I guess item_to_add.afterattack(src,user,1) return diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 4d6632dec56..bb635bb1425 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -42,6 +42,7 @@ has_unlimited_silicon_privilege = 1 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) staticOverlays = list() + hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) var/staticChoice = "static" var/list/staticChoices = list("static", "blank", "letter", "animal") var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) @@ -85,6 +86,22 @@ var/datum/action/generic/drone/select_filter/SF = new(src) SF.Grant(src) + var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] + diag_hud.add_to_hud(src) + + +/mob/living/simple_animal/drone/med_hud_set_health() + var/image/holder = hud_list[DIAG_HUD] + holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" + +/mob/living/simple_animal/drone/med_hud_set_status() + var/image/holder = hud_list[DIAG_STAT_HUD] + if(stat == DEAD) + holder.icon_state = "huddead2" + else if(incapacitated()) + holder.icon_state = "hudoffline" + else + holder.icon_state = "hudstat" /mob/living/simple_animal/drone/Destroy() diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 8578e0cc078..66a10c95760 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -25,7 +25,7 @@ melee_damage_upper = 2 environment_smash = 0 stop_automated_movement_when_pulled = 1 - var/obj/udder/udder = null + var/obj/item/udder/udder = null /mob/living/simple_animal/hostile/retaliate/goat/New() udder = new() @@ -98,7 +98,7 @@ attacktext = "kicks" attack_sound = 'sound/weapons/punch1.ogg' health = 50 - var/obj/udder/udder = null + var/obj/item/udder/udder = null gold_core_spawnable = 2 /mob/living/simple_animal/cow/New() @@ -274,28 +274,30 @@ var/global/chicken_count = 0 else SSobj.processing.Remove(src) -/obj/udder -/obj/udder/New() +/obj/item/udder + name = "udder" + +/obj/item/udder/New() reagents = new(50) reagents.my_atom = src reagents.add_reagent("milk", 20) -/obj/udder/proc/generateMilk() +/obj/item/udder/proc/generateMilk() if(prob(5)) reagents.add_reagent("milk", rand(5, 10)) -/obj/udder/proc/milkAnimal(obj/O, mob/user) +/obj/item/udder/proc/milkAnimal(obj/O, mob/user) var/obj/item/weapon/reagent_containers/glass/G = O if(G.reagents.total_volume >= G.volume) user << "[O] is full." return - var/transfered = reagents.trans_id_to(G, "milk", rand(5,10)) + var/transfered = reagents.trans_to(O, rand(5,10)) if(transfered) user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].") else user << "The udder is dry. Wait a bit longer..." -/obj/udder/Destroy() +/obj/item/udder/Destroy() qdel(reagents) - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 377b89d6e7c..546e4b3a4e2 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -48,6 +48,19 @@ var/global/list/parasites = list() //all currently existing/living guardians ..() +/mob/living/simple_animal/hostile/guardian/med_hud_set_health() + if(summoner) + var/image/holder = hud_list[HEALTH_HUD] + holder.icon_state = "hud[RoundHealth(summoner)]" + +/mob/living/simple_animal/hostile/guardian/med_hud_set_status() + if(summoner) + var/image/holder = hud_list[STATUS_HUD] + if(summoner.stat == DEAD) + holder.icon_state = "huddead" + else + holder.icon_state = "hudhealthy" + /mob/living/simple_animal/hostile/guardian/Destroy() parasites -= src return ..() @@ -103,8 +116,9 @@ var/global/list/parasites = list() //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies ..() - update_health_hud() //we need to update our health display to match our summoner and we can't practically give the summoner a hook to do it - + update_health_hud() //we need to update all of our health displays to match our summoner and we can't practically give the summoner a hook to do it + med_hud_set_health() + med_hud_set_status() if(summoner) if(summoner.stat == DEAD) src << "Your summoner has died!" diff --git a/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm b/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm index db04e530481..662a3853878 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardiannaming.dm @@ -17,6 +17,30 @@ /datum/guardianname/carp/New() prefixname = pick(carp_names) +/datum/guardianname/carp/sand + suffixcolour = "Sand" + colour = "#C2B280" + +/datum/guardianname/carp/seashell + suffixcolour = "Seashell" + colour = "#FFF5EE" + +/datum/guardianname/carp/coral + suffixcolour = "Coral" + colour = "#FF7F50" + +/datum/guardianname/carp/salmon + suffixcolour = "Salmon" + colour = "#FA8072" + +/datum/guardianname/carp/sunset + suffixcolour = "Sunset" + colour = "#FAD6A5" + +/datum/guardianname/carp/riptide + suffixcolour = "Riptide" + colour = "#89D9C8" + /datum/guardianname/carp/seagreen suffixcolour = "Sea Green" colour = "#2E8B57" diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index 4aea0048075..3e5756baa6a 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -95,7 +95,7 @@ name = "snare" desc = "You shouldn't be seeing this!" var/mob/living/simple_animal/hostile/guardian/spawner - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT /obj/item/effect/snare/Crossed(AM as mob|obj) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 59fa99f35b3..e3bc381f209 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -38,6 +38,10 @@ var/obj/effect/overlay/temp/heal/H = PoolOrNew(/obj/effect/overlay/temp/heal, get_turf(C)) if(namedatum) H.color = namedatum.colour + if(C == summoner) + update_health_hud() + med_hud_set_health() + med_hud_set_status() /mob/living/simple_animal/hostile/guardian/healer/ToggleMode() if(src.loc == summoner) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index d8350a4bab9..e1b8695c437 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -31,6 +31,8 @@ see_invisible = SEE_INVISIBLE_MINIMUM unique_name = 1 gold_core_spawnable = 0 + death_sound = 'sound/voice/hiss6.ogg' + deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." /mob/living/simple_animal/hostile/alien/drone name = "alien drone" @@ -140,11 +142,6 @@ damage = 30 icon_state = "toxin" -/mob/living/simple_animal/hostile/alien/death(gibbed) - ..(gibbed) - visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...") - playsound(src, 'sound/voice/hiss6.ogg', 100, 1) - /mob/living/simple_animal/hostile/alien/handle_temperature_damage() if(bodytemperature < minbodytemp) adjustBruteLoss(2) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 01d04dc084f..7c33ecbe6c4 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -49,7 +49,7 @@ see_invisible = SEE_INVISIBLE_MINIMUM see_in_dark = 4 var/playable_spider = FALSE - + /mob/living/simple_animal/hostile/poison/giant_spider/Topic(href, href_list) if(href_list["activate"]) var/mob/dead/observer/ghost = usr @@ -57,18 +57,20 @@ humanize_spider(ghost) /mob/living/simple_animal/hostile/poison/giant_spider/attack_ghost(mob/user) - humanize_spider(user) + if(!humanize_spider(user)) + return ..() /mob/living/simple_animal/hostile/poison/giant_spider/proc/humanize_spider(mob/user) if(key || !playable_spider)//Someone is in it or the fun police are shutting it down - return + return 0 var/spider_ask = alert("Become a spider?", "Are you australian?", "Yes", "No") if(spider_ask == "No" || !src || qdeleted(src)) - return + return 1 if(key) user << "Someone else already took this spider." - return + return 1 key = user.key + return 1 //nursemaids - these create webs and eggs /mob/living/simple_animal/hostile/poison/giant_spider/nurse diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index d1a829a5483..60e9d09b387 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -23,13 +23,13 @@ gold_core_spawnable = 1 //are you sure about this?? /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) - var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim) + var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) egg.Insert(victim) if(origin) egg.origin = origin else if(mind) // Let's make this a feature egg.origin = mind - for(var/obj/item/organ/internal/I in src) + for(var/obj/item/organ/I in src) I.loc = egg visible_message("[src] plants something in [victim]'s flesh!", \ "We inject our egg into [victim]'s body!") @@ -56,14 +56,14 @@ -/obj/item/organ/internal/body_egg/changeling_egg +/obj/item/organ/body_egg/changeling_egg name = "changeling egg" desc = "Twitching and disgusting." origin_tech = "biotech=7" // You need to be really lucky to obtain it. var/datum/mind/origin var/time -/obj/item/organ/internal/body_egg/changeling_egg/egg_process() +/obj/item/organ/body_egg/changeling_egg/egg_process() // Changeling eggs grow in dead people time++ if(time >= EGG_INCUBATION_TIME) @@ -71,11 +71,11 @@ Remove(owner) qdel(src) -/obj/item/organ/internal/body_egg/changeling_egg/proc/Pop() +/obj/item/organ/body_egg/changeling_egg/proc/Pop() var/mob/living/carbon/monkey/M = new(owner) owner.stomach_contents += M - for(var/obj/item/organ/internal/I in src) + for(var/obj/item/organ/I in src) I.Insert(M, 1) if(origin && origin.current && (origin.current.stat == DEAD)) diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm index 0afa18e866b..63d3bd82565 100644 --- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm +++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm @@ -43,7 +43,20 @@ ..() wanted_objects = subtypesof(/obj/mecha/combat) +/mob/living/simple_animal/hostile/syndicate/mecha_pilot/nanotrasen //nanotrasen are syndies! no it's just a weird path. + name = "Nanotrasen Mecha Pilot" + desc = "Death to the Syndicate. This variant comes in MECHA DEATH flavour." + icon_living = "nanotrasen" + icon_state = "nanotrasen" + faction = list("nanotrasen") + spawn_mecha_type = /obj/mecha/combat/marauder/loaded +/mob/living/simple_animal/hostile/syndicate/mecha_pilot/no_mech/nanotrasen + name = "Nanotrasen Mecha Pilot" + desc = "Death to the Syndicate. This variant comes in MECHA DEATH flavour." + icon_living = "nanotrasen" + icon_state = "nanotrasen" + faction = list("nanotrasen") /mob/living/simple_animal/hostile/syndicate/mecha_pilot/New() @@ -99,6 +112,7 @@ ranged = 0 minimum_distance = 1 + walk(M,0)//end any lingering movement loops, to prevent the haunted mecha bug //Checks if a mecha is valid for theft /mob/living/simple_animal/hostile/syndicate/mecha_pilot/proc/is_valid_mecha(obj/mecha/M) @@ -253,6 +267,10 @@ else //we're not in a mecha, so we check if we can steal it instead. if(is_valid_mecha(M)) return 1 + else if (M.occupant && CanAttack(M.occupant)) + return 1 + else + return 0 . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm new file mode 100644 index 00000000000..0267d112d90 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -0,0 +1,332 @@ +/mob/living/simple_animal/hostile/megafauna/dragon + name = "ash drake" + desc = "Guardians of the necropolis." + health = 2500 + maxHealth = 2500 + attacktext = "chomps" + attack_sound = 'sound/magic/demon_attack1.ogg' + icon_state = "dragon" + icon_living = "dragon" + icon_dead = "dragon_dead" + friendly = "stares down" + icon = 'icons/mob/lavaland/dragon.dmi' + faction = list("mining") + speak_emote = list("roars") + armour_penetration = 40 + melee_damage_lower = 40 + melee_damage_upper = 40 + speed = 1 + move_to_delay = 10 + ranged = 1 + flying = 1 + mob_size = MOB_SIZE_LARGE + pixel_x = -16 + aggro_vision_range = 18 + idle_vision_range = 5 + loot = list(/obj/structure/closet/crate/necropolis/dragon) + butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) + var/anger_modifier = 0 + var/obj/item/device/gps/internal + var/swooping = 0 + deathmessage = "collapes into a pile of bones, it's flesh sloughing away." + death_sound = 'sound/magic/demon_dies.ogg' + damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + +/mob/living/simple_animal/hostile/megafauna/dragon/New() + ..() + internal = new/obj/item/device/gps/internal/dragon(src) + +/mob/living/simple_animal/hostile/megafauna/dragon/AttackingTarget() + if(swooping) + return + else + ..() + +/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) + return 1 + +/obj/effect/overlay/temp/fireball + icon = 'icons/obj/projectiles.dmi' + icon_state = "fireball" + name = "fireball" + desc = "Get out of the way!" + layer = 6 + dir = SOUTH + pixel_z = 500 + anchored = 1 + +/obj/effect/overlay/temp/target + icon = 'icons/mob/actions.dmi' + icon_state = "sniper_zoom" + layer = MOB_LAYER - 0.1 + anchored = 1 + luminosity = 2 + +/obj/effect/overlay/temp/target/ex_act() + return + +/obj/effect/overlay/temp/target/New() + ..() + spawn() + var/turf/T = get_turf(src) + playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) + var/obj/effect/overlay/temp/fireball/F = new(src.loc) + animate(F, pixel_z = 0, time = 12) + sleep(12) + explosion(T, 0, 0, 1, 0, 0, 0, 1) + qdel(F) + qdel(src) + +/mob/living/simple_animal/hostile/megafauna/dragon/OpenFire() + anger_modifier = Clamp(((maxHealth - health)/50),0,20) + ranged_cooldown = world.time + ranged_cooldown_time + + if(prob(15 + anger_modifier)) + if(health < maxHealth/2 && !client) + swoop_attack(1) + else + fire_rain() + + else if(prob(10+anger_modifier) && !client && !swooping) + if(health > maxHealth/2) + swoop_attack() + else + swoop_attack() + swoop_attack() + swoop_attack() + else + fire_walls() + +/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_rain() + visible_message("Fire rains from the sky!") + for(var/turf/turf in range(12,get_turf(src))) + if(prob(10)) + new /obj/effect/overlay/temp/target(turf) + + +/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls() + var/list/attack_dirs = list(NORTH,EAST,SOUTH,WEST) + if(prob(50)) + attack_dirs = list(NORTH,WEST,SOUTH,EAST) + playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) + + spawn(0) + for(var/d in attack_dirs) + var/turf/E = get_edge_target_turf(src, d) + var/range = 10 + for(var/turf/open/J in getline(src,E)) + if(!range) + break + range-- + + PoolOrNew(/obj/effect/hotspot,J) + J.hotspot_expose(700,50,1) + for(var/mob/living/L in J) + if(L != src) + L.adjustFireLoss(20) + L << "You're hit by the drake's fire breath!" + +/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0) + if(stat) + return + var/mob/living/swoop_target = target + stop_automated_movement = TRUE + swooping = 1 + icon_state = "swoop" + visible_message("[src] swoops up high!") + if(prob(50)) + animate(src, pixel_x = 500, pixel_z = 500, time = 10) + else + animate(src, pixel_x = -500, pixel_z = 500, time = 10) + sleep(30) + + var/turf/tturf + if(fire_rain) + fire_rain() + + icon_state = "dragon" + if(swoop_target) + tturf = get_turf(swoop_target) + else + tturf = get_turf(src) + src.loc = tturf + animate(src, pixel_x = 0, pixel_z = 0, time = 10) + sleep(10) + playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1) + for(var/mob/living/L in range(1,tturf)) + if(L == src) + continue + if(L.stat) + visible_message("[src] slams down on [L], crushing them!") + L.gib() + else + var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) + L.adjustBruteLoss(75) + L.throw_at_fast(throwtarget) + visible_message("[L] is thrown clear of [src]!") + for(var/mob/M in range(7,src)) + shake_camera(M, 15, 1) + + stop_automated_movement = FALSE + swooping = 0 + density = 1 + +/obj/item/device/gps/internal/dragon + icon_state = null + gpstag = "Fiery Signal" + desc = "Here there be dragons." + invisibility = 100 + + +//The part you've all been waiting for: Loot + +/obj/item/weapon/melee/ghost_sword + name = "spectral blade" + desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly." + icon_state = "cultblade" + item_state = "cultblade" + flags = CONDUCT + sharpness = IS_SHARP + w_class = 4 + force = 1 + throwforce = 1 + hitsound = 'sound/effects/ghost2.ogg' + attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended") + var/summon_cooldown = 0 + +/obj/item/weapon/melee/ghost_sword/attack_self(mob/user) + if(summon_cooldown > world.time) + user << "You just recently called out for aid. You don't want to annoy the spirits." + return + user << "You call out for aid, attempting to summon spirits to your side." + notify_ghosts("[user] is raising their [src], calling for your help!", source = user) + summon_cooldown = world.time + 600 + +/obj/item/weapon/melee/ghost_sword/proc/ghost_check(mob/user) + var/ghost_counter = 0 + for(var/mob/dead/observer/G in dead_mob_list) + if(G.orbiting == user) + ghost_counter++ + G.invisibility = 0 + spawn(30) + G.invisibility = initial(G.invisibility) + return ghost_counter + +/obj/item/weapon/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user) + force = 0 + var/ghost_counter = ghost_check(user) + + force = Clamp((ghost_counter * 4), 0, 75) + user.visible_message("[user] strikes with the force of [ghost_counter] vengeful spirits!") + ..() + +/obj/item/weapon/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type) + var/ghost_counter = ghost_check(owner) + final_block_chance += Clamp((ghost_counter * 5), 0, 75) + owner.visible_message("[owner] is protected by a ring of [ghost_counter] ghosts!") + return ..() + +/mob/living/simple_animal/hostile/megafauna/dragon/lesser + name = "lesser ash drake" + maxHealth = 500 + health = 500 + melee_damage_upper = 30 + melee_damage_lower = 30 + damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + loot = list() + +//Blood + +/obj/item/weapon/dragons_blood + name = "bottle of dragons blood" + desc = "You're not actually going to drink this, are you?" + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + +/obj/item/weapon/dragons_blood/attack_self(mob/living/carbon/human/user) + if(!istype(user)) + return + + var/mob/living/carbon/human/H = user + var/random = rand(1,5) + + switch(random) + if(1) + user << "The blood sears your insides! What the hell were you thinking?" + user.reagents.add_reagent("hellwater", 50) + if(2) + user << "Other than tasting terrible, nothing really happens." + if(3) + user << "Your flesh begins to melt! Miraculously, you seem fine otherwise." + H.set_species(/datum/species/skeleton) + if(4) + user << "The blood mixes with your own, filling your veins with a pulsing fire." + H.dna.species.coldmod = 0 + if(5) + user << "You don't feel so good..." + H.ForceContractDisease(new /datum/disease/transformation/dragon(0)) + playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1) + qdel(src) + +/datum/disease/transformation/dragon + name = "dragon transformation" + cure_text = "nothing" + cures = list("adminordrazine") + agent = "dragon's blood" + desc = "What do dragons have to do with Space Station 13?" + stage_prob = 20 + severity = BIOHAZARD + visibility_flags = 0 + stage1 = list("Your bones ache.") + stage2 = list("Your skin feels scaley.") + stage3 = list("You have an overwhelming urge to terrorize some peasants.", "Your teeth feel sharper.") + stage4 = list("Your blood burns.") + stage5 = list("You're a fucking dragon.") + new_form = /mob/living/simple_animal/hostile/megafauna/dragon/lesser + + +//Lava Staff + +/obj/item/weapon/lava_staff + name = "staff of lava" + desc = "The ability to fill the emergency shuttle with lava. What more could you want out of life?" + icon_state = "staffofstorms" + item_state = "staffofstorms" + icon = 'icons/obj/guns/magic.dmi' + slot_flags = SLOT_BACK + item_state = "staffofstorms" + w_class = 4 + force = 25 + damtype = BURN + burn_state = LAVA_PROOF + hitsound = 'sound/weapons/sear.ogg' + var/lava_cooldown = 0 + +/obj/item/weapon/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + ..() + if(lava_cooldown > world.time) + return + if(target && istype(target, /turf/open)) + var/turf/open/O = target + user.visible_message("[user] turns \the [O] into lava!") + O.ChangeTurf(/turf/open/floor/plating/lava/smooth) + playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) + lava_cooldown = world.time + 200 + +/obj/structure/closet/crate/necropolis/dragon + name = "dragon chest" + +/obj/structure/closet/crate/necropolis/dragon/New() + ..() + var/loot = rand(1,4) + switch(loot) + if(1) + for(var/i in 1 to 10) + new /obj/item/weapon/ore/diamond(src) + new /obj/item/weapon/ore/gold(src) + if(2) + new /obj/item/weapon/melee/ghost_sword(src) + if(3) + new /obj/item/weapon/dragons_blood(src) + if(4) + new /obj/item/weapon/lava_staff(src) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm new file mode 100644 index 00000000000..8a6ac9c33ca --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -0,0 +1,140 @@ +/mob/living/simple_animal/hostile/megafauna/legion + name = "legion" + health = 800 + maxHealth = 800 + icon_state = "legion" + icon_living = "legion" + desc = "One of many." + icon = 'icons/mob/lavaland/legion.dmi' + attacktext = "chomps" + attack_sound = 'sound/magic/demon_attack1.ogg' + faction = list("mining") + speak_emote = list("echoes") + armour_penetration = 50 + melee_damage_lower = 25 + melee_damage_upper = 25 + speed = 2 + ranged = 1 + flying = 1 + del_on_death = 1 + retreat_distance = 5 + minimum_distance = 5 + ranged_cooldown_time = 20 + var/size = 10 + var/charging = 0 + pixel_y = -90 + pixel_x = -75 + loot = list(/obj/item/stack/sheet/bone = 3) + vision_range = 13 + aggro_vision_range = 18 + idle_vision_range = 13 + +/mob/living/simple_animal/hostile/megafauna/legion/New() + ..() + new/obj/item/device/gps/internal/legion(src) + +/mob/living/simple_animal/hostile/megafauna/legion/OpenFire(the_target) + if(world.time >= ranged_cooldown && !charging) + if(prob(75)) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new(src.loc) + A.GiveTarget(target) + A.friends = friends + A.faction = faction + ranged_cooldown = world.time + ranged_cooldown_time + else + visible_message("[src] charges!") + SpinAnimation(speed = 20, loops = 5) + ranged = 0 + retreat_distance = 0 + minimum_distance = 0 + speed = 0 + charging = 1 + spawn(50) + ranged = 1 + retreat_distance = 5 + minimum_distance = 5 + speed = 2 + charging = 0 + +/mob/living/simple_animal/hostile/megafauna/legion/death() + if(size > 2) + for(var/i in 1 to 2) + var/mob/living/simple_animal/hostile/megafauna/legion/L = new(src.loc) + L.health = src.maxHealth * 0.6 + L.maxHealth = L.health + L.size = size - 2 + var/size_multiplier = L.size * 0.08 + L.resize = size_multiplier + L.pixel_y = L.pixel_y * size_multiplier + L.pixel_x = L.pixel_x * size_multiplier + + L.update_transform() + visible_message("[src] splits!") + qdel(src) + else + var/last_legion = TRUE + for(var/mob/living/simple_animal/hostile/megafauna/legion/other in mob_list) + if(other != src) + last_legion = FALSE + break + if(last_legion) + src.loot = list(/obj/item/weapon/staff_of_storms) + else if(prob(5)) + src.loot = list(/obj/structure/closet/crate/necropolis/tendril) + ..() + +/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0) + return 1 + +/obj/item/device/gps/internal/legion + icon_state = null + gpstag = "Echoing Signal" + desc = "The message repeats." + invisibility = 100 + + +//Loot + +/obj/item/weapon/staff_of_storms + name = "staff of storms" + desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it." + icon_state = "staffofstorms" + item_state = "staffofstorms" + icon = 'icons/obj/guns/magic.dmi' + slot_flags = SLOT_BACK + item_state = "staffofstorms" + w_class = 4 + force = 25 + damtype = BURN + hitsound = 'sound/weapons/sear.ogg' + var/obj/machinery/lavaland_controller/linked_machine + var/storm_cooldown = 0 + +/obj/item/weapon/staff_of_storms/attack_self(mob/user) + if(storm_cooldown > world.time) + user << "The staff is still recharging." + return + + if(!linked_machine || linked_machine.z != user.z) + for(var/obj/machinery/lavaland_controller/controller in machines) + if(controller.z == user.z) + linked_machine = controller + break + + if(linked_machine && linked_machine.ongoing_weather) + if(linked_machine.ongoing_weather.stage == WIND_DOWN_STAGE || linked_machine.ongoing_weather.stage == END_STAGE) + user << "The storm is already ending. It would be a waste to use the staff now." + return + linked_machine.ongoing_weather.duration = 0 + user << "With an appropriately dramatic flourish, you dispell the storm." + playsound(get_turf(src),'sound/magic/Staff_Change.ogg', 200, 1) + storm_cooldown = world.time + 600 + + else if (linked_machine && !linked_machine.ongoing_weather) + user << "You lift the staff towards the heavens, calling down a terrible storm." + linked_machine.weather_cooldown = 0 + playsound(get_turf(src),'sound/magic/Staff_Change.ogg', 200, 1) + storm_cooldown = world.time + 600 + + else + user << "You can't seem to control the weather here." \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm new file mode 100644 index 00000000000..6a273d83b3e --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -0,0 +1,33 @@ +/mob/living/simple_animal/hostile/megafauna + name = "boss of this gym" + desc = "Attack the weak point for massive damage." + health = 1000 + maxHealth = 1000 + sentience_type = SENTIENCE_BOSS + environment_smash = 4 + robust_searching = 1 + stat_attack = 1 + 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 + maxbodytemp = INFINITY + layer = 6 //Looks weird with them slipping under mineral walls and cameras and shit otherwise + +/mob/living/simple_animal/hostile/megafauna/death(gibbed) + if(health > 0) + return + else + feedback_set_details("megafauna_kills","[initial(name)]") + ..() + +/mob/living/simple_animal/hostile/megafauna/gib() + if(health > 0) + return + else + ..() + +/mob/living/simple_animal/hostile/megafauna/dust() + if(health > 0) + return + else + ..() + diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index a7186efb514..d66f5fe2aae 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -49,7 +49,7 @@ /mob/living/simple_animal/hostile/asteroid/basilisk name = "basilisk" desc = "A territorial beast, covered in a thick shell that absorbs energy. Its stare causes victims to freeze from the inside." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Basilisk" icon_living = "Basilisk" icon_aggro = "Basilisk_alert" @@ -91,10 +91,7 @@ /mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) if(..()) //we have a target if(isliving(target)) - var/mob/living/L = target - if(L.bodytemperature > 200) - L.bodytemperature = 200 - visible_message("The [src.name]'s stare chills [L.name] to the bone!") + OpenFire(target) /mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) switch(severity) @@ -108,7 +105,7 @@ /mob/living/simple_animal/hostile/asteroid/goldgrub name = "goldgrub" desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Goldgrub" icon_living = "Goldgrub" icon_aggro = "Goldgrub_alert" @@ -186,7 +183,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelord name = "hivelord" desc = "A truly alien creature, it is a mass of unknown organic material, constantly fluctuating. When attacking, pieces of it split off and attack in tandem with the original." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Hivelord" icon_living = "Hivelord" icon_aggro = "Hivelord_alert" @@ -214,7 +211,7 @@ retreat_distance = 3 minimum_distance = 3 pass_flags = PASSTABLE - loot = list(/obj/item/organ/internal/hivelord_core) + loot = list(/obj/item/organ/hivelord_core) var/brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) @@ -233,17 +230,19 @@ mouse_opacity = 1 ..(gibbed) -/obj/item/organ/internal/hivelord_core +/obj/item/organ/hivelord_core name = "hivelord remains" desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly." icon_state = "roro core 2" flags = NOBLUDGEON slot = "hivecore" force = 0 + actions_types = list(/datum/action/item_action/organ_action/use) var/inert = 0 var/preserved = 0 + var/list/spawned_brood = list() -/obj/item/organ/internal/hivelord_core/New() +/obj/item/organ/hivelord_core/New() ..() spawn(2400) if(!owner && !preserved) @@ -252,7 +251,24 @@ else preserved = 1 -/obj/item/organ/internal/hivelord_core/on_life() +/obj/item/organ/hivelord_core/ui_action_click() + var/spawn_amount = 1 + if(!inert) + spawn_amount++ + + for(var/a in spawned_brood) + if(!istype(a, /mob/living/simple_animal/hostile/asteroid/hivelordbrood) || qdeleted(a)) + spawned_brood -= a + continue + spawn_amount -= spawned_brood.len + + for(var/i = 1 to spawn_amount) + var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/B = new (owner.loc) + B.link_host(owner) + spawned_brood |= B + + +/obj/item/organ/hivelord_core/on_life() ..() if(owner) owner.adjustBruteLoss(-1) @@ -265,7 +281,7 @@ if(B && blood_volume < 560 && blood_volume) B.volume += 2 // Fast blood regen -/obj/item/organ/internal/hivelord_core/afterattack(atom/target, mob/user, proximity_flag) +/obj/item/organ/hivelord_core/afterattack(atom/target, mob/user, proximity_flag) if(proximity_flag && ishuman(target)) var/mob/living/carbon/human/H = target if(inert) @@ -283,13 +299,13 @@ qdel(src) ..() -/obj/item/organ/internal/hivelord_core/prepare_eat() +/obj/item/organ/hivelord_core/prepare_eat() return null /mob/living/simple_animal/hostile/asteroid/hivelordbrood name = "hivelord brood" desc = "A fragment of the original Hivelord, rallying behind its original. One isn't much of a threat, but..." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Hivelordbrood" icon_living = "Hivelordbrood" icon_aggro = "Hivelordbrood" @@ -302,6 +318,7 @@ speed = 3 maxHealth = 1 health = 1 + flying = 1 harm_intent_damage = 5 melee_damage_lower = 2 melee_damage_upper = 2 @@ -316,12 +333,94 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/New() ..() spawn(100) - qdel(src) + death() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood + name = "blood brood" + desc = "A living string of blood and alien materials." + icon_state = "bloodbrood" + icon_living = "bloodbrood" + icon_aggro = "bloodbrood" + attacktext = "pierces" + color = "#C80000" + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/death() + if(loc) // Splash the turf we are on with blood + reagents.reaction(get_turf(src)) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/New() + create_reagents(30) + ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/AttackingTarget() + ..() + if(iscarbon(target)) + transfer_reagents(target, 1) + + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_hand(mob/living/carbon/human/M) + if("\ref[M]" in faction) + reabsorb_host(M) + else + return ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_paw(mob/living/carbon/monkey/M) + if("\ref[M]" in faction) + reabsorb_host(M) + else + return ..() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/attack_alien(mob/living/carbon/alien/humanoid/M) + if("\ref[M]" in faction) + reabsorb_host(M) + else + return ..() + + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/reabsorb_host(mob/living/carbon/C) + C.visible_message("[src] is reabsorbed by [C]'s body.", \ + "[src] is reabsorbed by your body.") + transfer_reagents(C) + death() + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/transfer_reagents(mob/living/carbon/C, var/volume = 30) + if(!reagents.total_volume) + return + + volume = min(volume, reagents.total_volume) + + var/fraction = min(volume/reagents.total_volume, 1) + reagents.reaction(C, INJECT, fraction) + + var/datum/reagent/blood/B + for(var/datum/reagent/blood/d in reagents.reagent_list) + B = d + break + if(B) + C.inject_blood(src, min(B.volume, volume)) + + reagents.trans_to(C, volume) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/proc/link_host(mob/living/carbon/C) + faction = list("\ref[src]", "\ref[C]") // Hostile to everyone except the host. + var/datum/reagent/B = C.take_blood(src, 30) + if(!B) + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(H.dna.species.exotic_blood && H.reagents.total_volume) + H.reagents.trans_to(src, 10) + + else + reagents.reagent_list += B + reagents.update_total() + + color = mix_color_from_reagents(reagents.reagent_list) /mob/living/simple_animal/hostile/asteroid/goliath name = "goliath" desc = "A massive beast that uses long tentacles to ensare its prey, threatening them is not advised under any conditions." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Goliath" icon_living = "Goliath" icon_aggro = "Goliath_alert" @@ -398,7 +497,7 @@ /obj/effect/goliath_tentacle/ name = "Goliath tentacle" - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Goliath_tentacle" var/latched = 0 anchored = 1 @@ -489,7 +588,7 @@ /mob/living/simple_animal/hostile/asteroid/fugu name = "wumborian fugu" desc = "The wumborian fugu rapidly increases its body mass in order to ward off its prey. Great care should be taken to avoid it while it's in this state as it is nearly invincible, but it cannot maintain its form forever." - icon = 'icons/mob/animal.dmi' + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' icon_state = "Fugu" icon_living = "Fugu" icon_aggro = "Fugu" @@ -635,7 +734,7 @@ stat_attack = 1 robust_searching = 1 loot = list() - butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 1, /obj/item/stack/sheet/bone = 1) + butcher_results = list(/obj/item/weapon/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) //Goliath @@ -673,7 +772,7 @@ speak_emote = list("echoes") attack_sound = 'sound/weapons/pierce.ogg' throw_message = "bounces harmlessly off of" - loot = list(/obj/item/organ/internal/hivelord_core/legion) + loot = list(/obj/item/organ/hivelord_core/legion) brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion del_on_death = 1 stat_attack = 1 @@ -727,14 +826,135 @@ qdel(src) ..() -/obj/item/organ/internal/hivelord_core/legion +/obj/item/organ/hivelord_core/legion name = "legion's heart" desc = "A demonic, still beating heart... its healing properties will soon become inert if not used quickly." icon = 'icons/obj/surgery.dmi' icon_state = "demon_heart" -//Nests +/obj/item/weapon/legion_skull + name = "legion's head" + desc = "The once living, now empty eyes of the former human's skull cut deep into your soul." + icon = 'icons/obj/mining.dmi' + icon_state = "skull" + +//Gutlunches + +/mob/living/simple_animal/hostile/asteroid/gutlunch + name = "gutlunch" + desc = "A scavenger that eats raw meat, often found alongside ash walkers. Produces a thick, nutritious milk." + icon = 'icons/mob/lavaland/lavaland_monsters.dmi' + icon_state = "gutlunch" + icon_living = "gutlunch" + icon_dead = "gutlunch" + speak_emote = list("warbles", "quavers") + emote_hear = list("trills.") + emote_see = list("sniffs.", "burps.") + density = 0 + speak_chance = 1 + turns_per_move = 8 + environment_smash = 0 + move_to_delay = 15 + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "squishes" + friendly = "pinches" + a_intent = "help" + ventcrawler = 2 + gold_core_spawnable = 2 + stat_attack = 1 + gender = NEUTER + stop_automated_movement = FALSE + stop_automated_movement_when_pulled = TRUE + stat_exclusive = TRUE + robust_searching = TRUE + search_objects = TRUE + del_on_death = TRUE + loot = list(/obj/effect/decal/cleanable/blood/gibs) + + animal_species = /mob/living/simple_animal/hostile/asteroid/gutlunch + childtype = list(/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck = 45, /mob/living/simple_animal/hostile/asteroid/gutlunch/guthen = 55) + + wanted_objects = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/blood/gibs/) + var/obj/item/udder/gutlunch/udder = null + + +/mob/living/simple_animal/hostile/asteroid/gutlunch/New() + udder = new() + deathmessage = "[src] is pulped into bugmash." + ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/Destroy() + qdel(udder) + udder = null + return ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/regenerate_icons() + overlays.Cut() + if(udder.reagents.total_volume == udder.reagents.maximum_volume) + overlays += "gl_full" + ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/attackby(obj/item/O, mob/user, params) + if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass)) + udder.milkAnimal(O, user) + regenerate_icons() + else + ..() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/AttackingTarget() + if(is_type_in_list(target,wanted_objects)) //we eats + udder.generateMilk() + regenerate_icons() + visible_message("[src] slurps up [target].") + qdel(target) + ..() + + +/obj/item/udder/gutlunch + name = "nutrient sac" + +/obj/item/udder/gutlunch/New() + reagents = new(50) + reagents.my_atom = src + +/obj/item/udder/gutlunch/generateMilk() + if(prob(60)) + reagents.add_reagent("cream", rand(2, 5)) + if(prob(45)) + reagents.add_reagent("salglu_solution", rand(2,5)) + + +//Male gutlunch. They're smaller and more colorful! +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck + name = "gubbuck" + gender = MALE + +/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck/New() + ..() + color = pick("#E39FBB", "#D97D64", "#CF8C4A") + resize = 0.85 + update_transform() + + +//Lady gutlunch. They make the babby. +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen + name = "guthen" + gender = FEMALE + +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/Life() + ..() + if(udder.reagents.total_volume == udder.reagents.maximum_volume) //Only breed when we're full. + make_babies() + +/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen/make_babies() + if(..()) + udder.reagents.clear_reagents() + regenerate_icons() + + +//Nests /mob/living/simple_animal/hostile/spawner/lavaland name = "necropolis tendril" desc = "A vile tendril of corruption, originating deep underground. Terrible monsters are pouring out of it." diff --git a/code/modules/mob/living/simple_animal/hostile/statue.dm b/code/modules/mob/living/simple_animal/hostile/statue.dm index 52425659a45..42aad52c0e4 100644 --- a/code/modules/mob/living/simple_animal/hostile/statue.dm +++ b/code/modules/mob/living/simple_animal/hostile/statue.dm @@ -133,8 +133,8 @@ // Turn to dust when gibbed -/mob/living/simple_animal/hostile/statue/gib(animation = 0) - dust(animation) +/mob/living/simple_animal/hostile/statue/gib() + dust() // Stop attacking clientless mobs diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 2ee585ae7cb..a71f5fe68e9 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -168,4 +168,4 @@ /mob/living/simple_animal/hostile/viscerator/New() ..() - deathmessage = "[src] is smashed into pieces!" + deathmessage = "[src] is smashed into pieces!" diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index 069e80adda0..8d96e162f1e 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -55,11 +55,13 @@ if(istype(target, /obj/machinery/door/airlock)) if(!removingairlock) - src << "You start tearing apart the airlock..." - playsound(src.loc, 'sound/hallucinations/growl3.ogg', 50, 1) var/obj/machinery/door/airlock/A = target removingairlock = 1 - if(do_after(src, 200, 0, A, 1)) + src << "You start tearing apart the airlock..." + playsound(src.loc, 'sound/machines/airlock_alien_prying.ogg', 100, 1) + spawn(20) + playsound(src.loc, 'sound/hallucinations/growl3.ogg', 50, 1) + if(do_after(src, 160, 0, A, 1)) playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) var/obj/structure/door_assembly/door = new A.doortype(get_turf(A)) door.density = 0 @@ -173,7 +175,7 @@ icon_living = "none" icon_dead = "none" desc = "You shouldn't be seeing this." - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT unsuitable_atmos_damage = 0 stat_attack = 2 gold_core_spawnable = 0 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 02de34f15cd..fe8d46b2137 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -56,7 +56,7 @@ //Hot simple_animal baby making vars var/list/childtype = null var/scan_ready = 1 - var/species //Sorry, no spider+corgi buttbabies. + var/animal_species //Sorry, no spider+corgi buttbabies. //simple_animal access var/obj/item/weapon/card/id/access_card = null //innate access uses an internal ID card @@ -72,6 +72,7 @@ var/list/loot = list() //list of things spawned at mob's loc when it dies var/del_on_death = 0 //causes mob to be deleted on death, useful for mobs that spawn lootable corpses var/deathmessage = "" + var/death_sound = null //The sound played on death var/allow_movement_on_non_turfs = FALSE @@ -110,33 +111,8 @@ death() else stat = CONSCIOUS + med_hud_set_status() -/mob/living/simple_animal/blind_eyes() - return - -/mob/living/simple_animal/blur_eyes() - return - -/mob/living/simple_animal/adjust_blindness() - return - -/mob/living/simple_animal/adjust_blurriness() - return - -/mob/living/simple_animal/set_blindness() - return - -/mob/living/simple_animal/set_blurriness() - return - -/mob/living/simple_animal/become_blind() - return - -/mob/living/simple_animal/setEarDamage() - return - -/mob/living/simple_animal/adjustEarDamage() - return /mob/living/simple_animal/handle_status_effects() ..() @@ -251,17 +227,18 @@ else if(bodytemperature > maxbodytemp) adjustBruteLoss(3) -/mob/living/simple_animal/gib(animation = 0) - if(icon_gib) - flick(icon_gib, src) +/mob/living/simple_animal/gib() if(butcher_results) for(var/path in butcher_results) for(var/i = 1; i <= butcher_results[path];i++) new path(src.loc) ..() +/mob/living/simple_animal/gib_animation() + if(icon_gib) + new /obj/effect/overlay/temp/gib_animation/animal(loc, icon_gib) -/mob/living/simple_animal/blob_act() +/mob/living/simple_animal/blob_act(obj/effect/blob/B) adjustBruteLoss(20) return @@ -417,10 +394,13 @@ if(loot.len) for(var/i in loot) new i(loc) - if(deathmessage && !gibbed) - visible_message("[deathmessage]") - else if(!del_on_death) - visible_message("\the [src] stops moving...") + if(!gibbed) + if(death_sound) + playsound(get_turf(src),death_sound, 200, 1) + if(deathmessage) + visible_message("[deathmessage]") + else if(!del_on_death) + visible_message("\the [src] stops moving...") if(del_on_death) ghostize() qdel(src) @@ -482,8 +462,8 @@ ..() /mob/living/simple_animal/proc/make_babies() // <3 <3 <3 - if(gender != FEMALE || stat || !scan_ready || !childtype || !species || ticker.current_state != GAME_STATE_PLAYING) - return + if(gender != FEMALE || stat || !scan_ready || !childtype || !animal_species || ticker.current_state != GAME_STATE_PLAYING) + return 0 scan_ready = 0 spawn(400) scan_ready = 1 @@ -495,7 +475,7 @@ continue else if(istype(M, childtype)) //Check for children FIRST. children++ - else if(istype(M, species)) + else if(istype(M, animal_species)) if(M.ckey) continue else if(!istype(M, childtype) && M.gender == MALE) //Better safe than sorry ;_; @@ -506,6 +486,8 @@ if(alone && partner && children < 3) var/childspawn = pickweight(childtype) new childspawn(loc) + return 1 + return 0 /mob/living/simple_animal/stripPanelUnequip(obj/item/what, mob/who, where, child_override) if(!child_override) diff --git a/code/modules/mob/living/simple_animal/status_procs.dm b/code/modules/mob/living/simple_animal/status_procs.dm new file mode 100644 index 00000000000..fd90f825a3e --- /dev/null +++ b/code/modules/mob/living/simple_animal/status_procs.dm @@ -0,0 +1,34 @@ + +/mob/living/simple_animal/blind_eyes() + return + +/mob/living/simple_animal/adjust_blindness() + return + +/mob/living/simple_animal/set_blindness() + return + + + +/mob/living/simple_animal/blur_eyes() + return + +/mob/living/simple_animal/adjust_blurriness() + return + +/mob/living/simple_animal/set_blurriness() + return + + + +/mob/living/simple_animal/become_blind() + return + + + +/mob/living/simple_animal/adjustEarDamage() + return + +/mob/living/simple_animal/setEarDamage() + return + diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm new file mode 100644 index 00000000000..44c96f7f216 --- /dev/null +++ b/code/modules/mob/living/status_procs.dm @@ -0,0 +1,17 @@ +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +//damage/heal the mob ears and adjust the deaf amount +/mob/living/adjustEarDamage(damage, deaf) + ear_damage = max(0, ear_damage + damage) + ear_deaf = max(0, ear_deaf + deaf) + +//pass a negative argument to skip one of the variable +/mob/living/setEarDamage(damage, deaf) + if(damage >= 0) + ear_damage = damage + if(deaf >= 0) + ear_deaf = deaf \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index f8b1446ae7a..870064d2447 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -233,7 +233,7 @@ var/next_mob_id = 0 return 0 -//This is a SAFE proc. Use this instead of equip_to_splot()! +//This is a SAFE proc. Use this instead of equip_to_slot()! //set qdel_on_fail to have it delete W if it fails to equip //set disable_warning to disable the 'you are unable to equip that' warning. //unset redraw_mob to prevent the mob from being redrawn at the end. @@ -326,7 +326,7 @@ var/next_mob_id = 0 if (!tile) return 0 - PoolOrNew(/obj/effect/overlay/temp/point, list(tile,invisibility)) + PoolOrNew(/obj/effect/overlay/temp/point, list(A,invisibility)) return 1 @@ -676,21 +676,23 @@ var/next_mob_id = 0 /mob/proc/update_canmove() var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH) var/buckle_lying = !(buckled && !buckled.buckle_lying) + var/has_legs = get_num_legs() + var/has_arms = get_num_arms() if(ko || resting || stunned) drop_r_hand() drop_l_hand() unset_machine() if(pulling) stop_pulling() - else + else if(has_legs) lying = 0 - canmove = 1 + if(buckled) lying = 90*buckle_lying else - if((ko || resting) && !lying) + if((ko || resting || !has_legs) && !lying) fall(ko) - canmove = !(ko || resting || stunned || buckled) + canmove = !(ko || resting || stunned || buckled || (!has_legs && !has_arms)) density = !lying if(lying) if(layer == initial(layer)) //to avoid special cases like hiding larvas. @@ -753,120 +755,6 @@ var/next_mob_id = 0 /mob/proc/activate_hand(selhand) return -/mob/proc/Jitter(amount) - jitteriness = max(jitteriness,amount,0) - -/mob/proc/Dizzy(amount) - dizziness = max(dizziness,amount,0) - -/mob/proc/Stun(amount, updating_canmove = 1) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - if(updating_canmove) - update_canmove() - -/mob/proc/SetStunned(amount, updating_canmove = 1) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - if(updating_canmove) - update_canmove() - -/mob/proc/AdjustStunned(amount, updating_canmove = 1) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - if(updating_canmove) - update_canmove() - -/mob/proc/Weaken(amount, ignore_canweaken = 0, updating_canmove = 1) - if((status_flags & CANWEAKEN) || ignore_canweaken) - weakened = max(max(weakened,amount),0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/SetWeakened(amount, updating_canmove = 1) - if(status_flags & CANWEAKEN) - weakened = max(amount,0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/AdjustWeakened(amount, ignore_canweaken = 0, updating_canmove = 1) - if((status_flags & CANWEAKEN) || ignore_canweaken) - weakened = max(weakened + amount,0) - if(updating_canmove) - update_canmove() //updates lying, canmove and icons - -/mob/proc/Paralyse(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(max(paralysis,amount),0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/SetParalysis(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(amount,0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/AdjustParalysis(amount, updating_stat = 1) - if(status_flags & CANPARALYSE) - var/old_paralysis = paralysis - paralysis = max(paralysis + amount,0) - if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) - if(updating_stat) - update_stat() - -/mob/proc/Sleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(max(sleeping,amount),0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/SetSleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(amount,0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/AdjustSleeping(amount, updating_stat = 1) - var/old_sleeping = sleeping - sleeping = max(sleeping + amount,0) - if(!old_sleeping && sleeping) - throw_alert("asleep", /obj/screen/alert/asleep) - if(updating_stat) - update_stat() - else if(old_sleeping && !sleeping) - clear_alert("asleep") - if(updating_stat) - update_stat() - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - update_canmove() - -/mob/proc/SetResting(amount) - resting = max(amount,0) - update_canmove() - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - update_canmove() - /mob/proc/assess_threat() //For sec bot threat assessment return @@ -884,14 +772,6 @@ var/next_mob_id = 0 ghost.notify_cloning(message, sound, source) return ghost - - -/mob/proc/adjustEarDamage() - return - -/mob/proc/setEarDamage() - return - /mob/proc/AddSpell(obj/effect/proc_holder/spell/S) mob_spell_list += S S.action.Grant(src) @@ -1054,3 +934,4 @@ var/next_mob_id = 0 updatehealth() if("resize") update_transform() + ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 71ae1dddede..fb1553ba799 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -127,7 +127,7 @@ if(rand(1,2)==2) if(lowertext(newletter)=="o") newletter="u" - if(lowertext(newletter)=="s") + if(lowertext(newletter)=="t") newletter="ch" if(lowertext(newletter)=="a") newletter="ah" @@ -135,15 +135,15 @@ newletter="oo" if(lowertext(newletter)=="c") newletter=" NAR " - if(lowertext(newletter)=="t") + if(lowertext(newletter)=="s") newletter=" SIE " if(rand(1,4)==4) if(newletter==" ") - newletter=" GLORY " + newletter=" no hope... " if(newletter=="H") - newletter=" HAIL " + newletter=" IT COMES... " - switch(rand(1,10)) + switch(rand(1,15)) if(1) newletter="'" if(2) @@ -152,6 +152,8 @@ newletter="fth" if(4) newletter="nglu" + if(5) + newletter="glor" newphrase+="[newletter]";counter-=1 return newphrase @@ -414,7 +416,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp A.overlays += alert_overlay /proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute, burn) - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected)) + var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) var/dam //changes repair text based on how much brute/burn was supplied @@ -423,15 +425,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp else dam = 0 - if(affecting.status == ORGAN_ROBOTIC) - if(brute > 0 && affecting.brute_dam > 0 || burn > 0 && affecting.burn_dam > 0) + if(affecting && affecting.status == ORGAN_ROBOTIC) + if((brute > 0 && affecting.brute_dam > 0) || (burn > 0 && affecting.burn_dam > 0)) affecting.heal_damage(brute,burn,1) H.update_damage_overlays(0) H.updatehealth() - user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.getDisplayName()].", "You fix some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.getDisplayName()].") + user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting].", "You fix some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting].") return else - user << "[H]'s [affecting.getDisplayName()] is already in good condition!" + user << "[H]'s [affecting] is already in good condition!" return else return diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5ca261d34b0..1971867a5ae 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -6,7 +6,7 @@ flags = NONE - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT density = 0 stat = DEAD diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm new file mode 100644 index 00000000000..21fae144f2c --- /dev/null +++ b/code/modules/mob/status_procs.dm @@ -0,0 +1,255 @@ + +//Here are the procs used to modify status effects of a mob. +//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, +// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. + + +/////////////////////////////////// STUNNED //////////////////////////////////// + +/mob/proc/Stun(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + if(updating) + update_canmove() + +/mob/proc/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(amount,0) + if(updating) + update_canmove() + +/mob/proc/AdjustStunned(amount, updating = 1, ignore_canstun = 0) + if(status_flags & CANSTUN || ignore_canstun) + stunned = max(stunned + amount,0) + if(updating) + update_canmove() + +/////////////////////////////////// WEAKENED //////////////////////////////////// + +/mob/proc/Weaken(amount, updating = 1, ignore_canweaken = 0) + if((status_flags & CANWEAKEN) || ignore_canweaken) + weakened = max(max(weakened,amount),0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/mob/proc/SetWeakened(amount, updating = 1, ignore_canweaken = 0) + if(status_flags & CANWEAKEN) + weakened = max(amount,0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/mob/proc/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) + if((status_flags & CANWEAKEN) || ignore_canweaken) + weakened = max(weakened + amount,0) + if(updating) + update_canmove() //updates lying, canmove and icons + +/////////////////////////////////// PARALYSIS //////////////////////////////////// + +/mob/proc/Paralyse(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(max(paralysis,amount),0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/mob/proc/SetParalysis(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(amount,0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/mob/proc/AdjustParalysis(amount, updating = 1) + if(status_flags & CANPARALYSE) + var/old_paralysis = paralysis + paralysis = max(paralysis + amount,0) + if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) + if(updating) + update_stat() + +/////////////////////////////////// SLEEPING //////////////////////////////////// + +/mob/proc/Sleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(max(sleeping,amount),0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/mob/proc/SetSleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(amount,0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/mob/proc/AdjustSleeping(amount, updating = 1) + var/old_sleeping = sleeping + sleeping = max(sleeping + amount,0) + if(!old_sleeping && sleeping) + throw_alert("asleep", /obj/screen/alert/asleep) + if(updating) + update_stat() + else if(old_sleeping && !sleeping) + clear_alert("asleep") + if(updating) + update_stat() + +/////////////////////////////////// RESTING //////////////////////////////////// + +/mob/proc/Resting(amount) + resting = max(max(resting,amount),0) + update_canmove() + +/mob/proc/SetResting(amount) + resting = max(amount,0) + update_canmove() + +/mob/proc/AdjustResting(amount) + resting = max(resting + amount,0) + update_canmove() + +/////////////////////////////////// JITTERINESS //////////////////////////////////// + +/mob/proc/Jitter(amount) + jitteriness = max(jitteriness,amount,0) + +/////////////////////////////////// DIZZINESS //////////////////////////////////// + +/mob/proc/Dizzy(amount) + dizziness = max(dizziness,amount,0) + +/////////////////////////////////// EAR DAMAGE //////////////////////////////////// + +/mob/proc/adjustEarDamage() + return + +/mob/proc/setEarDamage() + return + +/////////////////////////////////// EYE DAMAGE //////////////////////////////////// + +/mob/proc/damage_eyes(amount) + return + +/mob/proc/adjust_eye_damage(amount) + return + +/mob/proc/set_eye_damage(amount) + return + +/////////////////////////////////// EYE_BLIND //////////////////////////////////// + +/mob/proc/blind_eyes(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind = max(eye_blind, amount) + if(!old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + +/mob/proc/adjust_blindness(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind += amount + if(!old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else if(eye_blind) + var/blind_minimum = 0 + if(stat != CONSCIOUS || (disabilities & BLIND)) + blind_minimum = 1 + eye_blind = max(eye_blind+amount, blind_minimum) + if(!eye_blind) + clear_alert("blind") + clear_fullscreen("blind") + +/mob/proc/set_blindness(amount) + if(amount>0) + var/old_eye_blind = eye_blind + eye_blind = amount + if(client && !old_eye_blind) + throw_alert("blind", /obj/screen/alert/blind) + overlay_fullscreen("blind", /obj/screen/fullscreen/blind) + else if(eye_blind) + var/blind_minimum = 0 + if(stat != CONSCIOUS || (disabilities & BLIND)) + blind_minimum = 1 + eye_blind = blind_minimum + if(!eye_blind) + clear_alert("blind") + clear_fullscreen("blind") + +/////////////////////////////////// EYE_BLURRY //////////////////////////////////// + +/mob/proc/blur_eyes(amount) + if(amount>0) + var/old_eye_blurry = eye_blurry + eye_blurry = max(amount, eye_blurry) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + +/mob/proc/adjust_blurriness(amount) + var/old_eye_blurry = eye_blurry + eye_blurry = max(eye_blurry+amount, 0) + if(amount>0) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + else if(old_eye_blurry && !eye_blurry) + clear_fullscreen("blurry") + +/mob/proc/set_blurriness(amount) + var/old_eye_blurry = eye_blurry + eye_blurry = max(amount, 0) + if(amount>0) + if(!old_eye_blurry) + overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry) + else if(old_eye_blurry) + clear_fullscreen("blurry") + +/////////////////////////////////// DRUGGY //////////////////////////////////// + +/mob/proc/adjust_drugginess(amount) + return + +/mob/proc/set_drugginess(amount) + return + +/////////////////////////////////// BLIND DISABILITY //////////////////////////////////// + +/mob/proc/cure_blind() //when we want to cure the BLIND disability only. + return + +/mob/proc/become_blind() + return + +/////////////////////////////////// NEARSIGHT DISABILITY //////////////////////////////////// + +/mob/proc/cure_nearsighted() + return + +/mob/proc/become_nearsighted() + return + + + + + + + + + + diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 9a5aae78ea7..fca202896d1 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -12,7 +12,7 @@ implants += W if (tr_flags & TR_KEEPORGANS) - for(var/obj/item/organ/internal/I in internal_organs) + for(var/obj/item/organ/I in internal_organs) int_organs += I I.Remove(src, 1) @@ -26,7 +26,7 @@ stunned = 1 icon = null overlays.Cut() - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM var/atom/movable/overlay/animation = new( loc ) animation.icon_state = "blank" @@ -80,10 +80,10 @@ //re-add organs to new mob if(tr_flags & TR_KEEPORGANS) - for(var/obj/item/organ/internal/I in O.internal_organs) + for(var/obj/item/organ/I in O.internal_organs) qdel(I) - for(var/obj/item/organ/internal/I in int_organs) + for(var/obj/item/organ/I in int_organs) I.Insert(O, 1) //transfer mind and delete old mob @@ -119,7 +119,7 @@ implants += W if (tr_flags & TR_KEEPORGANS) - for(var/obj/item/organ/internal/I in internal_organs) + for(var/obj/item/organ/I in internal_organs) int_organs += I I.Remove(src, 1) @@ -140,7 +140,7 @@ stunned = 1 icon = null overlays.Cut() - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM var/atom/movable/overlay/animation = new( loc ) animation.icon_state = "blank" animation.icon = 'icons/mob/mob.dmi' @@ -198,10 +198,10 @@ O.sec_hud_set_implants() if(tr_flags & TR_KEEPORGANS) - for(var/obj/item/organ/internal/I in O.internal_organs) + for(var/obj/item/organ/I in O.internal_organs) qdel(I) - for(var/obj/item/organ/internal/I in int_organs) + for(var/obj/item/organ/I in int_organs) I.Insert(O, 1) if(mind) @@ -230,7 +230,7 @@ /mob/living/carbon/human/AIize() if (notransform) return - for(var/t in organs) + for(var/t in bodyparts) qdel(t) return ..() @@ -244,7 +244,7 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM return ..() /mob/proc/AIize() @@ -314,8 +314,8 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 - for(var/t in organs) + invisibility = INVISIBILITY_MAXIMUM + for(var/t in bodyparts) qdel(t) var/mob/living/silicon/robot/R = new /mob/living/silicon/robot(loc) @@ -365,8 +365,8 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 - for(var/t in organs) + invisibility = INVISIBILITY_MAXIMUM + for(var/t in bodyparts) qdel(t) var/alien_caste = pick("Hunter","Sentinel","Drone") @@ -395,8 +395,8 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 - for(var/t in organs) + invisibility = INVISIBILITY_MAXIMUM + for(var/t in bodyparts) qdel(t) var/mob/living/simple_animal/slime/new_slime @@ -454,8 +454,8 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 - for(var/t in organs) //this really should not be necessary + invisibility = INVISIBILITY_MAXIMUM + for(var/t in bodyparts) //this really should not be necessary qdel(t) var/mob/living/simple_animal/pet/dog/corgi/new_corgi = new /mob/living/simple_animal/pet/dog/corgi (loc) @@ -484,9 +484,9 @@ notransform = 1 canmove = 0 icon = null - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM - for(var/t in organs) + for(var/t in bodyparts) qdel(t) var/mob/new_mob = new mobpath(src.loc) diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 26e3f2f5302..903a523d884 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -206,7 +206,7 @@ Contents: equip_to_slot_or_del(new /obj/item/clothing/glasses/night(src), slot_glasses) equip_to_slot_or_del(EK, slot_belt) equip_to_slot_or_del(new /obj/item/device/flashlight(src), slot_r_store) - equip_to_slot_or_del(new /obj/item/weapon/c4(src), slot_l_store) + equip_to_slot_or_del(new /obj/item/weapon/grenade/plastic/x4(src), slot_l_store) equip_to_slot_or_del(new /obj/item/weapon/tank/internals/emergency_oxygen(src), slot_s_store) equip_to_slot_or_del(new /obj/item/weapon/tank/jetpack/carbondioxide(src), slot_back) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index a2b9add6e23..eee99a59bd5 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -66,7 +66,7 @@ It is possible to destroy the net by the occupant or someone else. //No need to check for countdown here since while() broke, it's implicit that it finished. density = 0//Make the net pass-through. - invisibility = 101//Make the net invisible so all the animations can play out. + invisibility = INVISIBILITY_ABSTRACT//Make the net invisible so all the animations can play out. health = INFINITY//Make the net invincible so that an explosion/something else won't kill it while, spawn() is running. for(var/obj/item/W in M) if(istype(M,/mob/living/carbon/human)) @@ -121,7 +121,7 @@ It is possible to destroy the net by the occupant or someone else. if(3) take_damage(rand(10,25), BRUTE, 0) -/obj/effect/energy_net/blob_act() +/obj/effect/energy_net/blob_act(obj/effect/blob/B) qdel(src) /obj/effect/energy_net/hitby(atom/movable/AM) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 7af7f6c084d..ee9a41d6bf1 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -85,6 +85,7 @@ update_icon() /obj/item/weapon/folder/syndicate + icon_state = "folder_syndie" name = "folder- 'TOP SECRET'" desc = "A folder stamped \"Top Secret - Property of The Syndicate.\"" @@ -102,4 +103,9 @@ /obj/item/weapon/folder/syndicate/blue/New() ..() new /obj/item/documents/syndicate/blue(src) + update_icon() + +/obj/item/weapon/folder/syndicate/mining/New() + ..() + new /obj/item/documents/syndicate/mining(src) update_icon() \ No newline at end of file diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index d679df9e53a..963e094e845 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -1,5 +1,6 @@ /obj/item/weapon/hand_labeler name = "hand labeler" + desc = "A combined label printer and applicator in a portable device, designed to be easy to operate and use." icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler0" item_state = "flight" @@ -7,6 +8,33 @@ var/labels_left = 30 var/mode = 0 +/obj/item/weapon/hand_labeler/suicide_act(mob/user) + user.visible_message("[user] is pointing \the [src] \ + at \himself. They're going to label themselves as a suicide!") + labels_left = max(labels_left - 1, 0) + + var/old_real_name = user.real_name + user.real_name += " (suicide)" + // no conflicts with their identification card + for(var/atom/A in user.GetAllContents()) + if(istype(A, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/their_card = A + + // only renames their card, as opposed to tagging everyone's + if(their_card.registered_name != old_real_name) + continue + + their_card.registered_name = user.real_name + their_card.update_label() + + // NOT EVEN DEATH WILL TAKE AWAY THE STAIN + user.mind.name += " (suicide)" + + mode = 1 + icon_state = "labeler[mode]" + label = "suicide" + + return OXYLOSS /obj/item/weapon/hand_labeler/afterattack(atom/A, mob/user,proximity) if(!proximity) return @@ -63,10 +91,32 @@ labels_left = initial(labels_left) return +/obj/item/weapon/hand_labeler/borg + name = "cyborg-hand labeler" + +/obj/item/weapon/hand_labeler/borg/afterattack(atom/A, mob/user, proximity) + ..(A, user, proximity) + if(!isrobot(user)) + return + + var/mob/living/silicon/robot/borgy = user + + var/starting_labels = initial(labels_left) + var/diff = starting_labels - labels_left + if(diff) + labels_left = starting_labels + // 50 per label. Magical cyborg paper doesn't come cheap. + var/cost = diff * 50 + + // If the cyborg manages to use a module without a cell, they get the paper + // for free. + if(borgy.cell) + borgy.cell.use(cost) + /obj/item/hand_labeler_refill name = "hand labeler paper roll" icon = 'icons/obj/bureaucracy.dmi' desc = "A roll of paper. Use it on a hand labeler to refill it." icon_state = "labeler_refill" item_state = "electropack" - w_class = 1 \ No newline at end of file + w_class = 1 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 4f172ff20b5..bef437af32a 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -40,6 +40,7 @@ /obj/item/weapon/paper/update_icon() + if(burn_state == ON_FIRE) icon_state = "paper_onfire" return @@ -303,11 +304,11 @@ return else if(istype(P, /obj/item/weapon/stamp)) - if(!in_range(src, usr) && loc != user && !istype(loc, /obj/item/weapon/clipboard) && loc.loc != user && user.get_active_hand() != P) + + if(!in_range(src, user)) return stamps += "" - var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') stampoverlay.pixel_x = rand(-2, 2) stampoverlay.pixel_y = rand(-3, 2) @@ -338,7 +339,6 @@ fire_act() - add_fingerprint(user) /obj/item/weapon/paper/fire_act() @@ -402,6 +402,5 @@ /obj/item/weapon/paper/crumpled/update_icon() return - /obj/item/weapon/paper/crumpled/bloody icon_state = "scrap_bloodied" diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm new file mode 100644 index 00000000000..95d67cbdbc2 --- /dev/null +++ b/code/modules/paperwork/paperplane.dm @@ -0,0 +1,113 @@ +/obj/item/weapon/paperplane + name = "paper plane" + desc = "Paper, folded in the shape of a plane" + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "paperplane" + throw_range = 7 + throw_speed = 1 + throwforce = 0 + w_class = 1 + burn_state = FLAMMABLE + burntime = 4 + + var/obj/item/weapon/paper/internalPaper + var/list/stamped = list() + +/obj/item/weapon/paperplane/New(loc, obj/item/weapon/paper/newPaper) + ..() + pixel_y = rand(-8, 8) + pixel_x = rand(-9, 9) + if(newPaper) + internalPaper = newPaper + src.flags = newPaper.flags + stamped = internalPaper.stamped + newPaper.forceMove(src) + else + internalPaper = new /obj/item/weapon/paper(src) + update_icon() + +/obj/item/weapon/paperplane/suicide_act(mob/user) + user.Stun(10) + user.visible_message("[user] jams the [src] in their brains. It looks like \he's trying to commit suicide.") + user.adjust_blurriness(6) + user.adjust_eye_damage(rand(6,8)) + sleep(10) + return (BRUTELOSS) + +/obj/item/weapon/paperplane/update_icon() + overlays.Cut() + if(!stamped) + stamped = new + else if(stamped) + for(var/S in stamped) + var/obj/item/weapon/stamp/stamp = S + var/image/stampoverlay = image('icons/obj/bureaucracy.dmi', "paperplane_[initial(stamp.icon_state)]") + overlays += stampoverlay + +/obj/item/weapon/paperplane/attack_self(mob/user) + user << "You unfold [src]." + user.unEquip(src) + user.put_in_hands(internalPaper) + qdel(src) + +/obj/item/weapon/paperplane/attackby(obj/item/weapon/P, mob/living/carbon/human/user, params) + ..() + if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) + user << "You should unfold [src] before changing it." + return + + else if(istype(P, /obj/item/weapon/stamp)) //we don't randomize stamps on a paperplane + + if (!stamped) + stamped = new + + stamped += P.type + internalPaper.stamps += "" //stamps the paper inside! + internalPaper.stamped = stamped + internalPaper.attackby(P) //spoofed attack to update internal paper. + user << "You stamp [src] with your rubber stamp." + update_icon() + + else if(P.is_hot()) + if(user.disabilities & CLUMSY && prob(10)) + user.visible_message("[user] accidentally ignites themselves!", \ + "You miss the [src] and accidentally light yourself on fire!") + user.unEquip(P) + user.adjust_fire_stacks(1) + user.IgniteMob() + return + + if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper + return + internalPaper.burntime = 1 //its already pretty burnt out + user.unEquip(src) + user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!") + fire_act() + + add_fingerprint(user) + + +/obj/item/weapon/paperplane/throw_at(atom/target, range, speed, mob/thrower, spin=0) //prevent the paper plane from spinning + if(!..()) + return + +/obj/item/weapon/paperplane/throw_impact(atom/hit_atom) + if(..() || !ishuman(hit_atom))//if the plane is caught or it hits a nonhuman + return + var/mob/living/carbon/human/H = hit_atom + if(prob(2)) + if((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags_cover & GLASSESCOVERSEYES)) + return + visible_message("\The [src] hits [H] in the eye!") + H.adjust_blurriness(6) + H.adjust_eye_damage(rand(6,8)) + H.Weaken(2) + H.emote("scream") + +/obj/item/weapon/paper/AltClick(mob/living/carbon/user, obj/item/I,) + if((!in_range(src, user)) || usr.stat || usr.restrained()) + return + user << "You fold [src] into the shape of a plane!" + user.unEquip(src) + I = new /obj/item/weapon/paperplane(loc, src) + user.put_in_hands(I) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 337aee4034c..8247ce2ee37 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -309,7 +309,7 @@ toner = 0 -/obj/machinery/photocopier/blob_act() +/obj/machinery/photocopier/blob_act(obj/effect/blob/B) if(prob(50)) qdel(src) else diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 46b263aabc6..6bf97bb6cb2 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1095,7 +1095,7 @@ if(prob(25)) set_broken() -/obj/machinery/power/apc/blob_act() +/obj/machinery/power/apc/blob_act(obj/effect/blob/B) set_broken() /obj/machinery/power/apc/disconnect_terminal() diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 0b6631a9fda..341f7cf7e51 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -28,7 +28,7 @@ By design, d1 is the smallest direction and d2 is the highest on_blueprints = TRUE var/datum/powernet/powernet name = "power cable" - desc = "A flexible, superconducting cable for heavy-duty power transfer." + desc = "A flexible, superconducting insulated cable for heavy-duty power transfer." icon = 'icons/obj/power_cond/power_cond_red.dmi' icon_state = "0-1" var/d1 = 0 // cable direction 1 (see above) @@ -106,7 +106,7 @@ By design, d1 is the smallest direction and d2 is the highest /obj/structure/cable/hide(i) if(level == 1 && istype(loc, /turf)) - invisibility = i ? 101 : 0 + invisibility = i ? INVISIBILITY_MAXIMUM : 0 updateicon() /obj/structure/cable/proc/updateicon() @@ -151,10 +151,6 @@ By design, d1 is the smallest direction and d2 is the highest user << "The cable is not powered." shock(user, 5, 0.2) - else - if (W.flags & CONDUCT) - shock(user, 50, 0.7) - src.add_fingerprint(user) // shock the user with probability prb @@ -469,7 +465,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ amount = MAXCOIL merge_type = /obj/item/stack/cable_coil // This is here to let its children merge between themselves item_color = "red" - desc = "A coil of power cable." + desc = "A coil of insulated power cable." throwforce = 0 w_class = 2 throw_speed = 3 @@ -516,9 +512,9 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ if(!istype(H)) return ..() - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected)) - if(affecting.status == ORGAN_ROBOTIC) - user.visible_message("[user] starts to fix some of the wires in [H]'s [affecting.getDisplayName()].", "You start fixing some of the wires in [H]'s [affecting.getDisplayName()].") + var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) + if(affecting && affecting.status == ORGAN_ROBOTIC) + user.visible_message("[user] starts to fix some of the wires in [H]'s [affecting.name].", "You start fixing some of the wires in [H]'s [affecting.name].") if(!do_mob(user, H, 50)) return item_heal_robotic(H, user, 0, 5) @@ -529,8 +525,9 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ /obj/item/stack/cable_coil/update_icon() - if (!item_color) + if(!item_color) item_color = pick("red", "yellow", "blue", "green") + item_state = "coil_[item_color]" if(amount == 1) icon_state = "coil_[item_color]1" name = "cable piece" diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 65dfbadb407..f1b3d4ccbbc 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -37,6 +37,7 @@ SSobj.processing |= src else SSobj.processing -= src + ..() /obj/item/weapon/stock_parts/cell/process() if(self_recharge) @@ -155,7 +156,7 @@ corrupt() -/obj/item/weapon/stock_parts/cell/blob_act() +/obj/item/weapon/stock_parts/cell/blob_act(obj/effect/blob/B) ex_act(1) /obj/item/weapon/stock_parts/cell/proc/get_electrocute_damage() diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index caa7e9291be..a9780a6f25e 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -32,7 +32,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 if(severity == 1) // Very sturdy. set_broken() -/obj/machinery/gravity_generator/blob_act() +/obj/machinery/gravity_generator/blob_act(obj/effect/blob/B) if(prob(20)) set_broken() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 47b0d481de9..654614f7574 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -435,8 +435,8 @@ else user << "You try to remove the light [fitting], but you burn your hand on it!" - var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm") - if(affecting.take_damage( 0, 5 )) // 5 burn damage + var/obj/item/bodypart/affecting = H.get_bodypart("[user.hand ? "l" : "r" ]_arm") + if(affecting && affecting.take_damage( 0, 5 )) // 5 burn damage H.update_damage_overlays(0) H.updatehealth() return // if burned, don't remove the light diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index cb4d7e439f1..0ddbd973c4a 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -27,7 +27,7 @@ return 1 -/obj/machinery/field/containment/blob_act() +/obj/machinery/field/containment/blob_act(obj/effect/blob/B) return 0 diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 378d179e08b..1f0694daec7 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -138,7 +138,7 @@ field_generator power level display return 0 -/obj/machinery/field/generator/blob_act() +/obj/machinery/field/generator/blob_act(obj/effect/blob/B) if(active) return 0 else diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm index 490dfedd68a..eda28974f38 100644 --- a/code/modules/power/singularity/generator.dm +++ b/code/modules/power/singularity/generator.dm @@ -13,6 +13,7 @@ /obj/machinery/the_singularitygen/process() var/turf/T = get_turf(src) if(src.energy >= 200) + feedback_add_details("engine_started","[src.type]") var/obj/singularity/S = new creation_type(T, 50) transfer_fingerprints_to(S) qdel(src) diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index c7efcc2278e..333aa77cc3b 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -149,7 +149,7 @@ master.toggle_power() investigate_log("was moved whilst active; it powered down.","singulo") -/obj/structure/particle_accelerator/blob_act() +/obj/structure/particle_accelerator/blob_act(obj/effect/blob/B) if(prob(50)) qdel(src) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index ea7d03a694b..b83a1b34a96 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -320,7 +320,7 @@ ..() -/obj/machinery/particle_accelerator/control_box/blob_act() +/obj/machinery/particle_accelerator/control_box/blob_act(obj/effect/blob/B) if(prob(50)) qdel(src) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index ed16922795a..befe71b8071 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -63,7 +63,7 @@ /obj/singularity/Process_Spacemove() //The singularity stops drifting for no man! return 0 -/obj/singularity/blob_act(severity) +/obj/singularity/blob_act(obj/effect/blob/B) return /obj/singularity/ex_act(severity, target) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 9b953b22373..48553748ed3 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -537,7 +537,7 @@ if(3) take_damage(rand(10,20), BRUTE, 0) -/obj/machinery/power/solar_control/blob_act() +/obj/machinery/power/solar_control/blob_act(obj/effect/blob/B) if (prob(75)) set_broken() src.density = 0 diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 1a33fd56a1f..a2cf5498555 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -225,6 +225,19 @@ qdel(src) return(gain) +/obj/machinery/power/supermatter_shard/blob_act(obj/effect/blob/B) + if(B && !istype(loc, /turf/open/space)) //does nothing in space + playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1) + damage += B.health * 0.5 //take damage equal to 50% of remaining blob health before it tried to eat us + if(B.health > 100) + B.visible_message("\The [B] strikes at \the [src] and flinches away!",\ + "You hear a loud crack as you are washed with a wave of heat.") + B.take_damage(100, BURN, src) + else + B.visible_message("\The [B] strikes at \the [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + Consume(B) + /obj/machinery/power/supermatter_shard/attack_paw(mob/user) return attack_hand(user) @@ -293,7 +306,7 @@ investigate_log("has consumed [key_name(user)].", "supermatter") user.dust() power += 200 - else if(isobj(AM) && !istype(AM, /obj/effect)) + else if(isobj(AM) && (!istype(AM, /obj/effect) || istype(AM, /obj/effect/blob))) investigate_log("has consumed [AM].", "supermatter") qdel(AM) diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index bd469e1853b..229c59f9d03 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -27,7 +27,7 @@ /obj/machinery/power/terminal/hide(i) if(i) - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM icon_state = "term-f" else invisibility = 0 diff --git a/code/modules/procedural mapping/mapGenerators/lava_river.dm b/code/modules/procedural mapping/mapGenerators/lava_river.dm index 90f9a6c0949..336a7786acb 100644 --- a/code/modules/procedural mapping/mapGenerators/lava_river.dm +++ b/code/modules/procedural mapping/mapGenerators/lava_river.dm @@ -1,9 +1,17 @@ /datum/mapGenerator/lavaland var/start_z = 5 + var/min_x = 0 + var/min_y = 0 + var/max_x = 0 + var/max_y = 0 modules = list(/datum/mapGeneratorModule/river) /datum/mapGenerator/lavaland/defineRegion(turf/Start, turf/End, replace = 0) start_z = Start.z + min_x = min(Start.x,End.x) + min_y = min(Start.y,End.y) + max_x = max(Start.x,End.x) + max_y = max(Start.y,End.y) ..() /datum/mapGeneratorModule/river @@ -12,7 +20,8 @@ var/start_z = 5 /datum/mapGeneratorModule/river/generate() - if(istype(mother, /datum/mapGenerator/lavaland)) - var/datum/mapGenerator/lavaland/L = mother - start_z = L.start_z - spawn_rivers(start_z, river_nodes, river_type) + var/datum/mapGenerator/lavaland/L = mother + if(!istype(L)) + return + start_z = L.start_z + spawn_rivers(start_z, river_nodes, river_type, min_x = L.min_x, min_y = L.min_y, max_x = L.max_x, max_y = L.max_y) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index b2766731b3b..8f79ac1c510 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -163,3 +163,4 @@ SSobj.processing |= src else SSobj.processing -= src + ..() \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 8342edc0ce2..ddd2bab6064 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -21,10 +21,10 @@ fire_sound = 'sound/weapons/gunshot.ogg' e_cost = 200 select_name = "stun" - projectile_type = /obj/item/projectile/shock_revolver + projectile_type = /obj/item/projectile/energy/shock_revolver -/obj/item/projectile/shock_revolver +/obj/item/projectile/energy/shock_revolver name = "shock bolt" icon_state = "purple_laser" var/chain @@ -35,7 +35,7 @@ spawn(1) P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) -/obj/item/projectile/shock_revolver/on_hit(atom/target) +/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) . = ..() if(isliving(target)) tesla_zap(src, 3, 10000) diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index ec6f2fee6d9..128b4eac077 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -142,8 +142,10 @@ max_charges = 20 //20, 10, 10, 7 no_den_usage = 1 -/obj/item/weapon/gun/magic/wand/door/zap_self() - return +/obj/item/weapon/gun/magic/wand/door/zap_self(mob/living/user) + user << "You feel vaguely more open with your feelings." + charges-- + ..() ///////////////////////////////////// //WAND OF FIREBALL diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 68aeeebcd52..e064f90c85d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -248,12 +248,12 @@ var/obj/item/ammo_casing/AC = chambered if(AC.fire(user, user)) playsound(user, fire_sound, 50, 1) - var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_selected)) - var/limb_name = affecting.getDisplayName() - if(affecting.name == "head" || affecting.name == "eyes" || affecting.name == "mouth") + var/zone = check_zone(user.zone_selected) + var/obj/item/bodypart/affecting = H.get_bodypart(zone) + if(zone == "head" || zone == "eyes" || zone == "mouth") shoot_self(user, affecting) else - user.visible_message("[user.name] cowardly fires [src] at \his [limb_name]!", "You cowardly fire [src] at your [limb_name]!", "You hear a gunshot!") + user.visible_message("[user.name] cowardly fires [src] at \his [affecting.name]!", "You cowardly fire [src] at your [affecting.name]!", "You hear a gunshot!") return user.visible_message("*click*") diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index c3a3cedada1..4f9408f1f06 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -38,8 +38,7 @@ var/drowsy = 0 var/stamina = 0 var/jitter = 0 - var/forcedodge = 0 - // 1 to pass solid objects, 2 to pass solid turfs (results in bugs, bugs and tons of bugs) + var/forcedodge = 0 //to pass through everything /obj/item/projectile/New() permutated = list() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 82646434ca9..a7499d447a3 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -98,6 +98,7 @@ /obj/structure/mineral_door/gold,/obj/structure/mineral_door/uranium,/obj/structure/mineral_door/sandstone,/obj/structure/mineral_door/transparent/plasma,\ /obj/structure/mineral_door/transparent/diamond) + /obj/item/projectile/magic/door/on_hit(atom/target) . = ..() var/atom/T = target.loc @@ -105,12 +106,20 @@ CreateDoor(target) else if (isturf(T) && T.density) CreateDoor(T) + else if(istype(target, /obj/machinery/door)) + OpenDoor(target) /obj/item/projectile/magic/door/proc/CreateDoor(turf/T) var/door_type = pick(door_types) - new door_type(T) + var/obj/structure/mineral_door/D = new door_type(T) T.ChangeTurf(/turf/open/floor/plating) + D.Open() +/obj/item/projectile/magic/door/proc/OpenDoor(var/obj/machinery/door/D) + if(istype(D,/obj/machinery/door/airlock)) + var/obj/machinery/door/airlock/A = D + A.locked = 0 + D.open() /obj/item/projectile/magic/change name = "bolt of change" @@ -132,7 +141,7 @@ M.canmove = 0 M.icon = null M.overlays.Cut() - M.invisibility = 101 + M.invisibility = INVISIBILITY_ABSTRACT if(istype(M, /mob/living/silicon/robot)) var/mob/living/silicon/robot/Robot = M @@ -183,17 +192,6 @@ new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) new_mob.languages |= HUMAN - /*var/alien_caste = pick("Hunter","Sentinel","Drone","Larva") - switch(alien_caste) - if("Hunter") - new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) - if("Sentinel") - new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) - if("Drone") - new_mob = new /mob/living/carbon/alien/humanoid/drone(M.loc) - else - new_mob = new /mob/living/carbon/alien/larva(M.loc) - new_mob.languages |= HUMAN*/ if("animal") if(prob(50)) var/beast = pick("carp","bear","mushroom","statue", "bat", "goat","killertomato", "spiderbase", "spiderhunter", "blobbernaut", "magicarp", "chaosmagicarp") @@ -267,7 +265,7 @@ H.real_name = H.dna.species.random_name(H.gender,1) H.update_body() H.update_hair() - H.update_mutcolor() + H.update_body_parts() H.dna.update_dna_identity() else return @@ -322,4 +320,4 @@ else if(istype(change, /mob/living/simple_animal/hostile/mimic/copy)) // Change our allegiance! var/mob/living/simple_animal/hostile/mimic/copy/C = change - C.ChangeOwner(firer) \ No newline at end of file + C.ChangeOwner(firer) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 758a41d0d64..c36bcf88bc9 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -69,7 +69,7 @@ if(severity < 3) ..() -/obj/machinery/chem_dispenser/blob_act() +/obj/machinery/chem_dispenser/blob_act(obj/effect/blob/B) if(prob(50)) qdel(src) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 3343bee85cd..8aba55937ef 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -21,7 +21,7 @@ if(severity < 3) ..() -/obj/machinery/chem_master/blob_act() +/obj/machinery/chem_master/blob_act(obj/effect/blob/B) if (prob(50)) qdel(src) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 7537b9a67ec..46759d13382 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -709,7 +709,8 @@ All effects don't start immediately, but rather get worse over time; the rate is step_towards(O, get_turf(M)) return ..() -/datum/reagent/consumable/ethanol/hearty_punch //Another reference. Heals those in critical condition extremely quickly. If you die with it in your system, it will be removed and you will live! +// Another reference. Heals those in critical condition extremely quickly. +/datum/reagent/consumable/ethanol/hearty_punch name = "Hearty Punch" id = "hearty_punch" description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content." diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 5218b3c4f82..6f516dfa48a 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -416,7 +416,7 @@ if(isliving(cause)) B.visible_message("The blob retaliates, lashing out!") for(var/atom/A in range(1, B)) - A.blob_act() + A.blob_act(B) return ..() //does low burn damage and stamina damage and cools targets down diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 9e4c3901184..6e54b0a4329 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -62,7 +62,7 @@ M << "[high_message]" M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) ..() . = 1 @@ -160,7 +160,7 @@ M << "[high_message]" M.AdjustParalysis(-2, 0) M.AdjustStunned(-2, 0) - M.AdjustWeakened(-2, 0, 0) + M.AdjustWeakened(-2, 0) M.adjustStaminaLoss(-2, 0) M.status_flags |= GOTTAGOREALLYFAST M.Jitter(2) @@ -237,7 +237,7 @@ M << "[high_message]" M.AdjustParalysis(-3, 0) M.AdjustStunned(-3, 0) - M.AdjustWeakened(-3, 0, 0) + M.AdjustWeakened(-3, 0) M.adjustStaminaLoss(-5, 0) M.adjustBrainLoss(0.5) M.adjustToxLoss(0.1, 0) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 878e2c2ad0a..bca21857b2d 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -119,7 +119,7 @@ /datum/reagent/consumable/frostoil name = "Frost Oil" id = "frostoil" - description = "A special oil that noticably chills the body. Extraced from Icepeppers." + description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes." color = "#8BA6E9" // rgb: 139, 166, 233 /datum/reagent/consumable/frostoil/on_mob_life(mob/living/M) @@ -152,8 +152,11 @@ if(reac_volume >= 5) for(var/mob/living/simple_animal/slime/M in T) M.adjustToxLoss(rand(15,30)) - //if(istype(T)) - // T.atmos_spawn_air(SPAWN_COLD) + if(reac_volume >= 1) // Make Freezy Foam and anti-fire grenades! + if(istype(T, /turf/open)) + var/turf/open/OT = T + OT.MakeSlippery(TURF_WET_WATER) // Is less effective in high pressure/high heat capacity environments. More effective in low pressure. + OT.air.temperature -= MOLES_CELLSTANDARD*100*reac_volume/OT.air.heat_capacity() // reduces environment temperature by 5K per unit. /datum/reagent/consumable/condensedcapsaicin name = "Condensed Capsaicin" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2bed2f7f973..a12a1d56bfe 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -80,7 +80,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) if(holder.has_reagent("mindbreaker")) holder.remove_reagent("mindbreaker", 5) M.hallucination = max(0, M.hallucination - 10) @@ -406,7 +406,7 @@ /datum/reagent/medicine/pen_acid name = "Pentetic Acid" id = "pen_acid" - description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body. Has a chance of dealing brute damage." + description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body." reagent_state = LIQUID color = "#C8A5DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -493,7 +493,7 @@ M.status_flags |= GOTTAGOFAST M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) M.adjustStaminaLoss(-1*REM, 0) ..() . = 1 @@ -703,7 +703,7 @@ if(prob(20)) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) ..() /datum/reagent/medicine/epinephrine/overdose_process(mob/living/M) @@ -807,7 +807,7 @@ M.adjustFireLoss(-1*REM, 0) M.AdjustParalysis(-3, 0) M.AdjustStunned(-3, 0) - M.AdjustWeakened(-3, 0, 0) + M.AdjustWeakened(-3, 0) M.adjustStaminaLoss(-5*REM, 0) ..() . = 1 @@ -1036,7 +1036,7 @@ datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) /datum/reagent/medicine/changelingAdrenaline/on_mob_life(mob/living/M as mob) M.AdjustParalysis(-1, 0) M.AdjustStunned(-1, 0) - M.AdjustWeakened(-1, 0, 0) + M.AdjustWeakened(-1, 0) M.adjustStaminaLoss(-1, 0) . = 1 ..() @@ -1057,4 +1057,4 @@ datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) M.status_flags |= GOTTAGOREALLYFAST M.adjustToxLoss(2, 0) . = 1 - ..() \ No newline at end of file + ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 767f1521cac..f0020af71d8 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -147,16 +147,13 @@ // Monkey cube if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O - if(!cube.wrapped) - cube.Expand() + cube.Expand() // Dehydrated carp else if(istype(O,/obj/item/toy/carpplushie/dehy_carp)) var/obj/item/toy/carpplushie/dehy_carp/dehy = O dehy.Swell() // Makes a carp - return - /* * Water reaction to a mob */ @@ -191,7 +188,7 @@ M.confused = 1 M.confused += 3 if(iscultist(M) || (is_handofgod_cultist(M) && !is_handofgod_prophet(M))) - ticker.mode.remove_cultist(M.mind) + ticker.mode.remove_cultist(M.mind, 1, 1) ticker.mode.remove_hog_follower(M.mind) holder.remove_reagent(src.id, src.volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? M.jitteriness = 0 @@ -220,7 +217,7 @@ M.drowsyness = max(M.drowsyness-5, 0) M.AdjustParalysis(-2, 0) M.AdjustStunned(-2, 0) - M.AdjustWeakened(-2, 0, 0) + M.AdjustWeakened(-2, 0) else M.adjustToxLoss(2, 0) M.adjustFireLoss(2, 0) @@ -257,7 +254,7 @@ /datum/reagent/lube/reaction_turf(turf/open/T, reac_volume) if (!istype(T)) return if(reac_volume >= 1) - T.MakeSlippery(2) + T.MakeSlippery(TURF_WET_LUBE) /datum/reagent/spraytan name = "Spray Tan" @@ -369,7 +366,7 @@ ..() H << "You crumple in agony as your flesh wildly morphs into new forms!" H.visible_message("[H] falls to the ground and screams as their skin bubbles and froths!") //'froths' sounds painful when used with SKIN. - H.Weaken(3, 0, 0) + H.Weaken(3, 0) spawn(30) if(!H || qdeleted(H)) return diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 26082651ce2..5bfe942374d 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -145,7 +145,7 @@ /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) M.status_flags |= FAKEDEATH M.adjustOxyLoss(0.5*REM, 0) - M.Weaken(5, 0, 0) + M.Weaken(5, 0) M.silent = max(M.silent, 5) M.tod = worldtime2text() ..() @@ -492,7 +492,7 @@ switch(picked_option) if(1) M.Stun(3, 0) - M.Weaken(3, 0, 0) + M.Weaken(3, 0) . = 1 if(2) M.losebreath += 10 @@ -611,7 +611,7 @@ /datum/reagent/toxin/curare/on_mob_life(mob/living/M) if(current_cycle >= 11) - M.Weaken(3, 0, 0) + M.Weaken(3, 0) M.adjustOxyLoss(1*REM, 0) . = 1 ..() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 4a9eb41cbc2..f999590d933 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -136,6 +136,13 @@ desc = "BLAM!-brand non-foaming space cleaner!" list_reagents = list("cleaner" = 250) +/obj/item/weapon/reagent_containers/spray/spraytan + name = "spray tan" + volume = 50 + desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices." + list_reagents = list("spraytan" = 50) + + //pepperspray /obj/item/weapon/reagent_containers/spray/pepper name = "pepperspray" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index e2626f13977..e65c3fac38e 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -66,7 +66,7 @@ if(ismob(target)) //Blood! if(ishuman(target)) var/mob/living/carbon/human/H = target - if(NOBLOOD in H.dna.species.specflags && !H.dna.species.exotic_blood) + if((NOBLOOD in H.dna.species.specflags) && !H.dna.species.exotic_blood) user << "You are unable to locate any blood!" return if(reagents.has_reagent("blood")) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 128ab849252..8745fce43a2 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -23,7 +23,7 @@ else return -/obj/structure/reagent_dispensers/blob_act() +/obj/structure/reagent_dispensers/blob_act(obj/effect/blob/B) if(prob(50)) qdel(src) @@ -70,7 +70,7 @@ else return -/obj/structure/reagent_dispensers/watertank/blob_act() +/obj/structure/reagent_dispensers/watertank/blob_act(obj/effect/blob/B) if(prob(50)) PoolOrNew(/obj/effect/particle_effect/water, loc) qdel(src) @@ -98,7 +98,7 @@ if(src) qdel(src) -/obj/structure/reagent_dispensers/fueltank/blob_act() +/obj/structure/reagent_dispensers/fueltank/blob_act(obj/effect/blob/B) boom() @@ -169,7 +169,7 @@ ..() reagents.add_reagent("beer",1000) -/obj/structure/reagent_dispensers/beerkeg/blob_act() +/obj/structure/reagent_dispensers/beerkeg/blob_act(obj/effect/blob/B) explosion(src.loc,0,3,5,7,10) diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index dd7ae2b0f36..bd774cb08be 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -86,7 +86,7 @@ // hide called by levelupdate if turf intact status changes // change visibility status and force update of icon /obj/structure/disposalconstruct/hide(var/intact) - invisibility = (intact && level==1) ? 101: 0 // hide if floor is intact + invisibility = (intact && level==1) ? INVISIBILITY_MAXIMUM: 0 // hide if floor is intact update_icon() diff --git a/code/modules/recycling/disposal-structures.dm b/code/modules/recycling/disposal-structures.dm index 3f00548adba..d5c7403d185 100644 --- a/code/modules/recycling/disposal-structures.dm +++ b/code/modules/recycling/disposal-structures.dm @@ -5,7 +5,7 @@ // this allows the gas flushed to be tracked /obj/structure/disposalholder - invisibility = 101 + invisibility = INVISIBILITY_MAXIMUM var/datum/gas_mixture/gas = null // gas used to flush, will appear at exit point var/active = 0 // true if the holder is moving, otherwise inactive dir = 0 @@ -233,7 +233,7 @@ // hide called by levelupdate if turf intact status changes // change visibility status and force update of icon /obj/structure/disposalpipe/hide(var/intact) - invisibility = intact ? 101: 0 // hide if floor is intact + invisibility = intact ? INVISIBILITY_MAXIMUM: 0 // hide if floor is intact updateicon() // update actual icon_state depending on visibility @@ -300,7 +300,7 @@ var/obj/structure/disposalpipe/broken/P = new(src.loc) P.dir = D - src.invisibility = 101 // make invisible (since we won't delete the pipe immediately) + src.invisibility = INVISIBILITY_MAXIMUM // make invisible (since we won't delete the pipe immediately) var/obj/structure/disposalholder/H = locate() in src if(H) // holder was present diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 0f6cb9cb2a3..b113b49127d 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -54,7 +54,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). T += M.rating efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas -/obj/machinery/r_n_d/circuit_imprinter/blob_act() +/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B) if (prob(50)) qdel(src) diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 5ddcd742dc8..a2028a40d54 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -3,7 +3,7 @@ /////////////////////////////////// /datum/design/ripley_main - name = "Exosuit Module (APLU \"Ripley\" Central Control module)" + name = "APLU \"Ripley\" Central Control module" desc = "Allows for the construction of a \"Ripley\" Central Control module." id = "ripley_main" req_tech = list("programming" = 3) @@ -13,7 +13,7 @@ category = list("Exosuit Modules") /datum/design/ripley_peri - name = "Exosuit Module (APLU \"Ripley\" Peripherals Control module)" + name = "APLU \"Ripley\" Peripherals Control module" desc = "Allows for the construction of a \"Ripley\" Peripheral Control module." id = "ripley_peri" req_tech = list("programming" = 3) @@ -23,7 +23,7 @@ category = list("Exosuit Modules") /datum/design/odysseus_main - name = "Exosuit Module (\"Odysseus\" Central Control module)" + name = "\"Odysseus\" Central Control module" desc = "Allows for the construction of a \"Odysseus\" Central Control module." id = "odysseus_main" req_tech = list("programming" = 3,"biotech" = 2) @@ -33,7 +33,7 @@ category = list("Exosuit Modules") /datum/design/odysseus_peri - name = "Exosuit Module (\"Odysseus\" Peripherals Control module)" + name = "\"Odysseus\" Peripherals Control module" desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module." id = "odysseus_peri" req_tech = list("programming" = 3,"biotech" = 2) @@ -43,7 +43,7 @@ category = list("Exosuit Modules") /datum/design/gygax_main - name = "Exosuit Module (\"Gygax\" Central Control module)" + name = "\"Gygax\" Central Control module" desc = "Allows for the construction of a \"Gygax\" Central Control module." id = "gygax_main" req_tech = list("programming" = 4) @@ -53,7 +53,7 @@ category = list("Exosuit Modules") /datum/design/gygax_peri - name = "Exosuit Module (\"Gygax\" Peripherals Control module)" + name = "\"Gygax\" Peripherals Control module" desc = "Allows for the construction of a \"Gygax\" Peripheral Control module." id = "gygax_peri" req_tech = list("programming" = 4) @@ -63,7 +63,7 @@ category = list("Exosuit Modules") /datum/design/gygax_targ - name = "Exosuit Module (\"Gygax\" Weapons & Targeting Control module)" + name = "\"Gygax\" Weapons & Targeting Control module" desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module." id = "gygax_targ" req_tech = list("programming" = 4, "combat" = 2) @@ -73,7 +73,7 @@ category = list("Exosuit Modules") /datum/design/durand_main - name = "Exosuit Module (\"Durand\" Central Control module)" + name = "\"Durand\" Central Control module" desc = "Allows for the construction of a \"Durand\" Central Control module." id = "durand_main" req_tech = list("programming" = 4) @@ -83,7 +83,7 @@ category = list("Exosuit Modules") /datum/design/durand_peri - name = "Exosuit Module (\"Durand\" Peripherals Control module)" + name = "\"Durand\" Peripherals Control module" desc = "Allows for the construction of a \"Durand\" Peripheral Control module." id = "durand_peri" req_tech = list("programming" = 4) @@ -93,7 +93,7 @@ category = list("Exosuit Modules") /datum/design/durand_targ - name = "Exosuit Module (\"Durand\" Weapons & Targeting Control module)" + name = "\"Durand\" Weapons & Targeting Control module" desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module." id = "durand_targ" req_tech = list("programming" = 4, "combat" = 2) @@ -103,7 +103,7 @@ category = list("Exosuit Modules") /datum/design/honker_main - name = "Exosuit Module (\"H.O.N.K\" Central Control module)" + name = "\"H.O.N.K\" Central Control module" desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." id = "honker_main" req_tech = list("programming" = 3) @@ -113,7 +113,7 @@ category = list("Exosuit Modules") /datum/design/honker_peri - name = "Exosuit Module (\"H.O.N.K\" Peripherals Control module)" + name = "\"H.O.N.K\" Peripherals Control module" desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." id = "honker_peri" req_tech = list("programming" = 3) @@ -123,7 +123,7 @@ category = list("Exosuit Modules") /datum/design/honker_targ - name = "Exosuit Module (\"H.O.N.K\" Weapons & Targeting Control module)" + name = "\"H.O.N.K\" Weapons & Targeting Control module" desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." id = "honker_targ" req_tech = list("programming" = 3) @@ -133,7 +133,7 @@ category = list("Exosuit Modules") /datum/design/phazon_main - name = "Exosuit Module (\"Phazon\" Central Control module)" + name = "\"Phazon\" Central Control module" desc = "Allows for the construction of a \"Phazon\" Central Control module." id = "phazon_main" req_tech = list("programming" = 5, "materials" = 7, "powerstorage" = 6) @@ -143,7 +143,7 @@ category = list("Exosuit Modules") /datum/design/phazon_peri - name = "Exosuit Module (\"Phazon\" Peripherals Control module)" + name = "\"Phazon\" Peripherals Control module" desc = "Allows for the construction of a \"Phazon\" Peripheral Control module." id = "phazon_peri" req_tech = list("programming" = 5, "bluespace" = 6) @@ -153,7 +153,7 @@ category = list("Exosuit Modules") /datum/design/phazon_targ - name = "Exosuit Module (\"Phazon\" Weapons & Targeting Control module)" + name = "\"Phazon\" Weapons & Targeting Control module" desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module." id = "phazon_targ" req_tech = list("programming" = 5, "magnets" = 6) diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 9ba09d72318..d7e9ef3882f 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -118,7 +118,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 40 materials = list(MAT_METAL = 200, MAT_GLASS = 400) - build_path = /obj/item/organ/internal/cyberimp/eyes/shield + build_path = /obj/item/organ/cyberimp/eyes/shield category = list("Misc", "Medical Designs") /datum/design/cyberimp_breather @@ -129,7 +129,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 35 materials = list(MAT_METAL = 200, MAT_GLASS = 250) - build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube + build_path = /obj/item/organ/cyberimp/mouth/breathing_tube category = list("Misc", "Medical Designs") /datum/design/cyberimp_medical_hud @@ -140,7 +140,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 50 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 500) - build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical + build_path = /obj/item/organ/cyberimp/eyes/hud/medical category = list("Misc", "Medical Designs") /datum/design/cyberimp_security_hud @@ -151,7 +151,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 50 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 750, MAT_GOLD = 750) - build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security + build_path = /obj/item/organ/cyberimp/eyes/hud/security category = list("Misc", "Medical Designs") /datum/design/cyberimp_xray @@ -162,7 +162,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 60 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) - build_path = /obj/item/organ/internal/cyberimp/eyes/xray + build_path = /obj/item/organ/cyberimp/eyes/xray category = list("Misc", "Medical Designs") /datum/design/cyberimp_thermals @@ -173,7 +173,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 60 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000) - build_path = /obj/item/organ/internal/cyberimp/eyes/thermals + build_path = /obj/item/organ/cyberimp/eyes/thermals category = list("Misc", "Medical Designs") /datum/design/cyberimp_antidrop @@ -184,7 +184,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 60 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 400, MAT_GOLD = 400) - build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop + build_path = /obj/item/organ/cyberimp/brain/anti_drop category = list("Misc", "Medical Designs") /datum/design/cyberimp_antistun @@ -195,7 +195,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 60 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 1000) - build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun + build_path = /obj/item/organ/cyberimp/brain/anti_stun category = list("Misc", "Medical Designs") /datum/design/cyberimp_nutriment @@ -206,7 +206,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 40 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 500) - build_path = /obj/item/organ/internal/cyberimp/chest/nutriment + build_path = /obj/item/organ/cyberimp/chest/nutriment category = list("Misc", "Medical Designs") /datum/design/cyberimp_nutriment_plus @@ -217,7 +217,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 50 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 750) - build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus + build_path = /obj/item/organ/cyberimp/chest/nutriment/plus category = list("Misc", "Medical Designs") /datum/design/cyberimp_reviver @@ -228,7 +228,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 60 materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 500, MAT_URANIUM = 1000, MAT_DIAMOND = 2000) - build_path = /obj/item/organ/internal/cyberimp/chest/reviver + build_path = /obj/item/organ/cyberimp/chest/reviver category = list("Misc", "Medical Designs") /datum/design/cyberimp_thrusters @@ -239,7 +239,7 @@ build_type = PROTOLATHE | MECHFAB construction_time = 80 materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000) - build_path = /obj/item/organ/internal/cyberimp/chest/thrusters + build_path = /obj/item/organ/cyberimp/chest/thrusters category = list("Misc", "Medical Designs") diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 9377ac45165..dc2192aa25e 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -86,7 +86,7 @@ ..() -/obj/machinery/r_n_d/server/blob_act() +/obj/machinery/r_n_d/server/blob_act(obj/effect/blob/B) griefProtection() ..() diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 53568b87ad4..5ac42585665 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -536,7 +536,7 @@ var/mob/living/M = A if(M in immune) continue - M.stunned = 10 + M.Stun(10, 1, 1) M.anchored = 1 if(istype(M, /mob/living/simple_animal/hostile)) var/mob/living/simple_animal/hostile/H = M @@ -566,7 +566,7 @@ /obj/effect/timestop/proc/unfreeze_mob(mob/living/M) - M.stunned = 0 + M.AdjustStunned(-10, 1, 1) M.anchored = 0 if(istype(M, /mob/living/simple_animal/hostile)) var/mob/living/simple_animal/hostile/H = M diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index dfccd3e31dd..935d38df73c 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -9,6 +9,23 @@ bound_height = 96 burn_state = LAVA_PROOF luminosity = 1 + var/boss = FALSE + +/obj/structure/lavaland_door/attack_hand(mob/user) + if(boss) + return + for(var/mob/living/simple_animal/hostile/megafauna/legion/L in mob_list) + return + var/safety = alert(user, "Are you sure you want to do this? You and everyone else on lavaland will likely die.", "Knock on the door?", "Proceed", "Abort") + if(safety == "Abort" || !in_range(src, user) || !src || boss || user.incapacitated()) + return + boss = TRUE + user << "You knock on the door." + playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) + visible_message("Legion emerges from the Necropolis!") + message_admins("[key_name_admin(user)] has summoned Legion.") + log_game("[key_name(user)] summoned Legion.") + new /mob/living/simple_animal/hostile/megafauna/legion(get_step(src.loc, SOUTH)) /obj/structure/lavaland_door/singularity_pull() return 0 @@ -21,23 +38,21 @@ desc = "Controls the weather." icon = 'icons/obj/machines/telecomms.dmi' icon_state = "processor" - var/ongoing_weather = FALSE + var/datum/weather/ongoing_weather = FALSE var/weather_cooldown = 0 /obj/machinery/lavaland_controller/process() if(ongoing_weather || weather_cooldown > world.time) return - ongoing_weather = TRUE weather_cooldown = world.time + rand(3500, 6500) var/datum/weather/ash_storm/LAVA = new /datum/weather/ash_storm + ongoing_weather = LAVA LAVA.weather_start_up() - ongoing_weather = FALSE + ongoing_weather = null /obj/machinery/lavaland_controller/Destroy() return QDEL_HINT_LETMELIVE - - //lavaland_surface_seed_vault.dmm //Seed Vault @@ -189,7 +204,12 @@ if(H.stat) visible_message("Tendrils reach out from \the [src.name] pulling [H] in! Blood seeps over the eggs as [H] is devoured.") playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1) - meat_counter ++ + if(istype(H,/mob/living/simple_animal/hostile/megafauna/dragon)) + meat_counter += 20 + else + meat_counter ++ + for(var/obj/item/W in H) + H.unEquip(W) H.gib() /mob/living/simple_animal/hostile/spawner/ash_walker/spawn_mob() diff --git a/code/modules/ruins/ruin_areas.dm b/code/modules/ruins/ruin_areas.dm index b6ab25dfa70..ad9688b1625 100644 --- a/code/modules/ruins/ruin_areas.dm +++ b/code/modules/ruins/ruin_areas.dm @@ -25,4 +25,23 @@ -/area/ruin/powered/snow_biodome \ No newline at end of file +/area/ruin/powered/snow_biodome + + +// Ruins of "onehalf" ship +/area/ruin/onehalf/hallway + name = "Hallway" + icon_state = "hallC" + + +/area/ruin/onehalf/drone_bay + name = "Mining Drone Bay" + icon_state = "engine" + +/area/ruin/onehalf/dorms_med + name = "Crew Quarters" + icon_state = "Sleep" + +/area/ruin/onehalf/bridge + name = "Bridge" + icon_state = "bridge" \ No newline at end of file diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index e32e7fdea57..156eaea5e2d 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -3,7 +3,7 @@ //NORTH default dir /obj/docking_port - invisibility = 101 + invisibility = INVISIBILITY_ABSTRACT icon = 'icons/obj/device.dmi' //icon = 'icons/dirsquare.dmi' icon_state = "pinonfar" @@ -385,7 +385,7 @@ return 1 /obj/onShuttleMove() - if(invisibility >= 101) + if(invisibility >= INVISIBILITY_ABSTRACT) return 0 . = ..() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 306bf6aebc1..da204476df6 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,7 +1,7 @@ /obj/docking_port/mobile/supply name = "supply shuttle" id = "supply" - callTime = 10 + callTime = 600 dir = 8 travelDir = 90 @@ -27,7 +27,7 @@ var/list/storage_objects = list( /obj/structure/closet, /obj/item/weapon/storage, - /obj/item/weapon/moneybag, + /obj/item/weapon/storage/bag/money, /obj/item/weapon/folder, // Selling a folder of stamped manifests? Sure, why not! /obj/structure/filingcabinet, /obj/structure/ore_box, @@ -153,4 +153,4 @@ for(var/obj/thing in O) sold_atoms += recursive_sell(thing, level) qdel(O) - return sold_atoms \ No newline at end of file + return sold_atoms diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index 5c2b5ebe555..c7efcd76349 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -87,7 +87,7 @@ var/mob/living/carbon/C = old_body for(var/obj/item/W in C) C.unEquip(W) - for(var/obj/item/organ/internal/I in C.internal_organs) + for(var/obj/item/organ/I in C.internal_organs) I.Remove(C) I.forceMove(body_turf) var/wheres_wizdo = dir2text(get_dir(body_turf, item_turf)) diff --git a/code/modules/spells/spell_types/mind_transfer.dm b/code/modules/spells/spell_types/mind_transfer.dm index 358591e909b..68261f3038e 100644 --- a/code/modules/spells/spell_types/mind_transfer.dm +++ b/code/modules/spells/spell_types/mind_transfer.dm @@ -35,6 +35,10 @@ Also, you never added distance checking after target is selected. I've went ahea user << "They are too far away!" return + if(istype(target, /mob/living/simple_animal/hostile/megafauna)) + user << "This creature is too powerful to control!" + return + if(target.stat == DEAD) user << "You don't particularly want to be dead!" return diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm index 985a6448297..e4b02f8b08b 100644 --- a/code/modules/spells/spell_types/summonitem.dm +++ b/code/modules/spells/spell_types/summonitem.dm @@ -55,7 +55,7 @@ if(!item_to_retrive.loc) if(isorgan(item_to_retrive)) // Organs are usually stored in nullspace - var/obj/item/organ/internal/organ = item_to_retrive + var/obj/item/organ/organ = item_to_retrive if(organ.owner) // If this code ever runs I will be happy add_logs(L, organ.owner, "magically removed [organ.name] from", addition="INTENT: [uppertext(L.a_intent)]") diff --git a/code/modules/stock_market/computer.dm b/code/modules/stock_market/computer.dm index 90f0c54d51b..1fc2a0a10fa 100644 --- a/code/modules/stock_market/computer.dm +++ b/code/modules/stock_market/computer.dm @@ -5,7 +5,7 @@ icon_screen = "stock_computer" icon_keyboard = "no_keyboard" var/logged_in = "Cargo Department" - var/vmode = 0 + var/vmode = 1 /obj/machinery/computer/stockexchange/New() ..() @@ -22,35 +22,47 @@ user.machine = src var/css={""} - var/dat = "[station_name()] Stock Exchange[css]

Stock Exchange

" - dat += "This is a work in progress. Certain features may not be available.
" + var/dat = "[station_name()] Stock Exchange[css]" - dat += "Welcome, [logged_in]
Cargo Points: [balance()] points
" + dat += "Welcome, [logged_in]
Credits: [balance()]
" for (var/datum/stock/S in stockExchange.last_read) var/list/LR = stockExchange.last_read[S] if (!(logged_in in LR)) LR[logged_in] = 0 - dat += "View mode: [vmode ? "compact" : "full"]" - dat += "Stock Transaction Log: Check" + dat += "View mode: [vmode ? "Compact" : "Full"] " + dat += "Stock Transaction Log: Check
" + + dat += "This is a work in progress. Certain features may not be available." + dat += "

Listed stocks

" if (vmode == 0) @@ -105,15 +117,40 @@ a.updated { dat += "View news archives[news ? " (updated)" : null]" else if (vmode == 1) dat += "Actions: + Buy, - Sell, (A)rchives, (H)istory

" - dat += "" + dat += "
 NameValueOwned/AvailActions
" + dat += "" + for (var/datum/stock/S in stockExchange.stocks) var/mystocks = 0 if (logged_in && (logged_in in S.shareholders)) mystocks = S.shareholders[logged_in] - dat += "" + + if(S.bankrupt) + dat += "" + else + dat += "" + + if(S.disp_value_change > 0) + dat += "" + else if(S.disp_value_change < 0) + dat += "" + else + dat += "" + + dat += "" + dat += "" + + if(!S.bankrupt) + dat += "" + else + dat += "" + + if(mystocks) + dat += "" + else + dat += "" + + dat += "" var/news = 0 if (logged_in) var/list/LR = stockExchange.last_read[S] @@ -129,12 +166,17 @@ a.updated { break dat += "" + dat += "(A)(H)" + + dat += "" + + dat += "
 IDNameValueOwnedAvailActions
[S.disp_value_change > 0 ? "+" : (S.disp_value_change < 0 ? "-" : "=")][S.name] " - if (S.bankrupt) - dat += "B" - dat += " ([S.short_name])[S.current_value][mystocks]/[S.available_shares]
+-=[S.short_name][S.name][S.current_value]0[mystocks]0[S.available_shares]" if (S.bankrupt) - dat += "+ - " + dat += "+ - " else dat += "+ - " - dat += "(A) (H)
" + dat += "" - var/datum/browser/popup = new(user, "computer", "Stock Exchange", 600, 400) + var/datum/browser/popup = new(user, "computer", "Stock Exchange", 600, 600) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -153,27 +195,25 @@ a.updated { user << "This account does not own any shares of [S.name]!" return var/price = S.current_value - var/amt = round(input(user, "How many shares? (Have: [avail], unit price: [price])", "Sell shares in [S.name]", 0) as num|null) - if (!user) + var/amt = round(input(user, "How many shares? \n(Have: [avail], unit price: [price])", "Sell shares in [S.name]", 0) as num|null) + amt = min(amt, S.shareholders[logged_in]) + + if (!user || !(user in range(1, src))) return if (!amt) return - if (!(user in range(1, src))) - return if (li != logged_in) return b = SSshuttle.points if (!isnum(b)) user << "No active account on the console!" return - if (amt > S.shareholders[logged_in]) - user << "You do not own that many shares!" - return + var/total = amt * S.current_value if (!S.sellShares(logged_in, amt)) user << "Could not complete transaction." return - user << "Sold [amt] shares of [S.name] at [S.current_value] a share for [total] points." + user << "Sold [amt] shares of [S.name] at [S.current_value] a share for [total] credits." stockExchange.add_log(/datum/stock_log/sell, user.name, S.name, amt, S.current_value, total) /obj/machinery/computer/stockexchange/proc/buy_some_shares(var/datum/stock/S, var/mob/user) @@ -190,12 +230,8 @@ a.updated { var/avail = S.available_shares var/price = S.current_value var/canbuy = round(b / price) - var/amt = round(input(user, "How many shares? (Available: [avail], unit price: [price], can buy: [canbuy])", "Buy shares in [S.name]", 0) as num|null) - if (!user) - return - if (!amt) - return - if (!(user in range(1, src))) + var/amt = round(input(user, "How many shares? \n(Available: [avail], unit price: [price], can buy: [canbuy])", "Buy shares in [S.name]", 0) as num|null) + if (!user || !(user in range(1, src))) return if (li != logged_in) return @@ -203,17 +239,16 @@ a.updated { if (!isnum(b)) user << "No active account on the console!" return - if (amt > S.available_shares) - user << "That many shares are not available!" - return - var/total = amt * S.current_value - if (total > b) - user << "Insufficient points." + + amt = min(amt, S.available_shares, round(b / S.current_value)) + if (!amt) return if (!S.buyShares(logged_in, amt)) user << "<Could not complete transaction." return - user << "Bought [amt] shares of [S.name] at [S.current_value] a share for [total] points." + + var/total = amt * S.current_value + user << "Bought [amt] shares of [S.name] at [S.current_value] a share for [total] credits." stockExchange.add_log(/datum/stock_log/buy, user.name, S.name, amt, S.current_value, total) /obj/machinery/computer/stockexchange/proc/do_borrowing_deal(var/datum/borrow/B, var/mob/user) @@ -261,7 +296,7 @@ a.updated { dat += "[L.time] | [L.user_name] bought [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits in [L.company_name].
" continue if(istype(L, /datum/stock_log/sell)) - dat += "[L.time] | [L.user_name] sold [L.stocks] stocks at [L.shareprice] a share for [L.money] totalcredits from [L.company_name].
" + dat += "[L.time] | [L.user_name] sold [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits from [L.company_name].
" continue if(istype(L, /datum/stock_log/borrow)) dat += "[L.time] | [L.user_name] borrowed [L.stocks] stocks with a deposit of [L.money] credits in [L.company_name].
" diff --git a/code/modules/stock_market/events.dm b/code/modules/stock_market/events.dm index 61b1ba86e34..1e34fddf03d 100644 --- a/code/modules/stock_market/events.dm +++ b/code/modules/stock_market/events.dm @@ -129,7 +129,7 @@ A.subtitle = "Investors panic, bailout pending" if (prob(15)) A.opinion = rand(-1, 1) - var/article = "Another one might bite the dust: [company.current_trend > 0 ? "despite their positive trend" : "in line with their failing model"], [company.name] is files for bankruptcy citing [pick(bankrupt_reason)]. The president of %country% has been asked to bail the company out, " + var/article = "Another one might bite the dust: [company.current_trend > 0 ? "despite their positive trend" : "in line with their failing model"], [company.name] files for bankruptcy citing [pick(bankrupt_reason)]. The president of %country% has been asked to bail the company out, " if (!A.opinion) article += "but no answer has been given by the government to date. Our tip to stay safe is: %sell%" else if (A.opinion > 0) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm new file mode 100644 index 00000000000..1e13586eea8 --- /dev/null +++ b/code/modules/surgery/amputation.dm @@ -0,0 +1,22 @@ + +/datum/surgery/amputation + name = "amputation" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/sever_limb) + species = list(/mob/living/carbon/human) + possible_locs = list("r_arm", "l_arm", "l_leg", "r_leg", "head") + +/datum/surgery_step/sever_limb + name = "sever limb" + implements = list(/obj/item/weapon/scalpel = 100, /obj/item/weapon/circular_saw = 100, /obj/item/weapon/melee/energy/sword/cyborg/saw = 100, /obj/item/weapon/melee/arm_blade = 80, /obj/item/weapon/twohanded/required/chainsaw = 80, /obj/item/weapon/mounted_chainsaw = 80, /obj/item/weapon/twohanded/fireaxe = 50, /obj/item/weapon/hatchet = 40, /obj/item/weapon/kitchen/knife/butcher = 25) + time = 64 + +/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to sever [target]'s [parse_zone(target_zone)]!", "You begin to sever [target]'s [parse_zone(target_zone)]...") + +/datum/surgery_step/sever_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/mob/living/carbon/human/L = target + user.visible_message("[user] severs [L]'s [parse_zone(target_zone)]!", "You sever [L]'s [parse_zone(target_zone)].") + var/obj/item/bodypart/BP = L.get_bodypart(target_zone) + if(BP) + BP.drop_limb() + return 1 \ No newline at end of file diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm new file mode 100644 index 00000000000..0313dfa5325 --- /dev/null +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -0,0 +1,336 @@ + +/obj/item/bodypart + name = "limb" + desc = "why is it detached..." + force = 3 + throwforce = 3 + var/mob/living/carbon/human/owner = null + var/status = ORGAN_ORGANIC + var/body_zone //"chest", "l_arm", etc , used for def_zone + var/body_part = null //bitflag used to check which clothes cover this bodypart + var/brutestate = 0 + var/burnstate = 0 + var/brute_dam = 0 + var/burn_dam = 0 + var/max_damage = 0 + var/list/embedded_objects = list() + + //Coloring and proper item icon update + var/skin_tone = "" + var/body_gender = "" + var/species_id = "" + var/should_draw_gender = FALSE + var/should_draw_greyscale = FALSE + var/species_color = "" + var/mutation_color = "" + var/no_update = 0 + + var/px_x = 0 + var/px_y = 0 + + var/state_flags + +/obj/item/bodypart/examine(mob/user) + ..() + if(brute_dam > 0) + user << "This limb has [brute_dam > 30 ? "severe" : "minor"] bruising." + if(burn_dam > 0) + user << "This limb has [burn_dam > 30 ? "severe" : "minor"] burns." + + +/obj/item/bodypart/Destroy() + if(owner) + owner.bodyparts -= src + owner = null + return ..() + +/obj/item/bodypart/attackby(obj/item/W, mob/user, params) + if(W.sharpness) + add_fingerprint(user) + if(!contents.len) + user << "There is nothing left inside [src]!" + return + playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) + user.visible_message("[user] begins to cut through the bone in [src].",\ + "You begin to cut through the bone in [src]...") + if(do_after(user, 54, target = src)) + drop_organs(user) + else + return ..() + +/obj/item/bodypart/throw_impact(atom/hit_atom) + ..() + playsound(get_turf(src), 'sound/misc/splort.ogg', 50, 1, -1) + +/obj/item/bodypart/proc/drop_organs(mob/user) + var/turf/T = get_turf(src) + playsound(T, 'sound/misc/splort.ogg', 50, 1, -1) + for(var/obj/item/I in src) + I.loc = T + +//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. +//Damage will not exceed max_damage using this proc +//Cannot apply negative damage +/obj/item/bodypart/proc/take_damage(brute, burn) + if(owner && (owner.status_flags & GODMODE)) + return 0 //godmode + brute = max(brute,0) + burn = max(burn,0) + + + if(status == ORGAN_ROBOTIC) //This makes robolimbs not damageable by chems and makes it stronger + brute = max(0, brute - 5) + burn = max(0, burn - 4) + + var/can_inflict = max_damage - (brute_dam + burn_dam) + if(!can_inflict) + return 0 + + if((brute + burn) < can_inflict) + brute_dam += brute + burn_dam += burn + else + if(brute > 0) + if(burn > 0) + brute = round( (brute/(brute+burn)) * can_inflict, 1 ) + burn = can_inflict - brute //gets whatever damage is left over + brute_dam += brute + burn_dam += burn + else + brute_dam += can_inflict + else + if(burn > 0) + burn_dam += can_inflict + else + return 0 + if(owner) + owner.updatehealth() + return update_bodypart_damage_state() + + +//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. +//Damage cannot go below zero. +//Cannot remove negative damage (i.e. apply damage) +/obj/item/bodypart/proc/heal_damage(brute, burn, robotic) + + if(robotic && status != ORGAN_ROBOTIC) // This makes organic limbs not heal when the proc is in Robotic mode. + brute = max(0, brute - 3) + burn = max(0, burn - 3) + + if(!robotic && status == ORGAN_ROBOTIC) // This makes robolimbs not healable by chems. + brute = max(0, brute - 3) + burn = max(0, burn - 3) + + brute_dam = max(brute_dam - brute, 0) + burn_dam = max(burn_dam - burn, 0) + if(owner) + owner.updatehealth() + return update_bodypart_damage_state() + + +//Returns total damage...kinda pointless really +/obj/item/bodypart/proc/get_damage() + return brute_dam + burn_dam + + +//Updates an organ's brute/burn states for use by update_damage_overlays() +//Returns 1 if we need to update overlays. 0 otherwise. +/obj/item/bodypart/proc/update_bodypart_damage_state() + if(status == ORGAN_ORGANIC) //Robotic limbs show no damage - RR + var/tbrute = round( (brute_dam/max_damage)*3, 1 ) + var/tburn = round( (burn_dam/max_damage)*3, 1 ) + if((tbrute != brutestate) || (tburn != burnstate)) + brutestate = tbrute + burnstate = tburn + return 1 + return 0 + + + +//Change organ status +/obj/item/bodypart/proc/change_bodypart_status(new_limb_status, heal_limb) + status = new_limb_status + if(heal_limb) + burn_dam = 0 + brute_dam = 0 + brutestate = 0 + burnstate = 0 + if(owner) + owner.updatehealth() + owner.update_body() //if our head becomes robotic, we remove the lizard horns and human hair. + owner.update_hair() + owner.update_damage_overlays() + +//we inform the bodypart of the changes that happened to the owner, or give it the informations from a source mob. +/obj/item/bodypart/proc/update_limb(dropping_limb, mob/living/carbon/human/source) + var/mob/living/carbon/human/H + if(source) + H = source + else + H = owner + if(!istype(H)) + return + + should_draw_greyscale = FALSE + + var/datum/species/S = H.dna.species + species_id = S.id + + if(S.use_skintones) + skin_tone = H.skin_tone + should_draw_greyscale = TRUE + else + skin_tone = "" + + body_gender = H.gender + should_draw_gender = S.sexes + + if(MUTCOLORS in S.specflags) + species_color = H.dna.features["mcolor"] + should_draw_greyscale = TRUE + else + species_color = "" + + if(H.disabilities & HUSK) + species_id = "husk" + should_draw_gender = FALSE + should_draw_greyscale = FALSE + + if(!dropping_limb && H.dna.check_mutation(HULK)) + mutation_color = "00aa00" + else + mutation_color = "" + + if(dropping_limb) + no_update = 1 //when attached, the limb won't be affected by the appearance changes of its mob owner. + +//to update the bodypart's icon when not attached to a mob +/obj/item/bodypart/proc/update_icon_dropped() + overlays.Cut() + var/image/I = get_limb_icon(1) + if(I) + I.pixel_x = px_x + I.pixel_y = px_y + overlays += I + +//Gives you a proper icon appearance for the dismembered limb +/obj/item/bodypart/proc/get_limb_icon(dropped) + var/image/I + + var/icon_gender = (body_gender == FEMALE) ? "f" : "m" //gender of the icon, if applicable + + if((body_zone != "head" && body_zone != "chest")) + should_draw_gender = FALSE + + var/image_dir + if(dropped) + image_dir = SOUTH + if(status == ORGAN_ORGANIC) + if(should_draw_greyscale) + if(should_draw_gender) + I = image("icon"='icons/mob/human_parts_greyscale.dmi', "icon_state"="[species_id]_[body_zone]_[icon_gender]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + else + I = image("icon"='icons/mob/human_parts_greyscale.dmi', "icon_state"="[species_id]_[body_zone]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + else + if(should_draw_gender) + I = image("icon"='icons/mob/human_parts.dmi', "icon_state"="[species_id]_[body_zone]_[icon_gender]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + else + I = image("icon"='icons/mob/human_parts.dmi', "icon_state"="[species_id]_[body_zone]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + else + if(should_draw_gender) + I = image("icon"='icons/mob/augments.dmi', "icon_state"="[body_zone]_[icon_gender]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + else + I = image("icon"='icons/mob/augments.dmi', "icon_state"="[body_zone]_s", "layer"=-BODYPARTS_LAYER, "dir"=image_dir) + return I + + + if(!should_draw_greyscale) + return I + + //Greyscale Colouring + var/draw_color + + if(skin_tone) //Limb has skin color variable defined, use it + draw_color = skintone2hex(skin_tone) + if(species_color) + draw_color = species_color + if(mutation_color) + draw_color = mutation_color + + if(draw_color) + I.color = "#[draw_color]" + //End Greyscale Colouring + + return I + + + +/obj/item/bodypart/chest + name = "chest" + desc = "It's impolite to stare at a person's chest." + icon_state = "chest" + max_damage = 200 + body_zone = "chest" + body_part = CHEST + px_x = 0 + px_y = 0 + var/obj/item/cavity_item + +/obj/item/bodypart/chest/Destroy() + if(cavity_item) + qdel(cavity_item) + return ..() + +/obj/item/bodypart/l_arm + name = "left arm" + icon_state = "l_arm" + max_damage = 75 + body_zone ="l_arm" + body_part = ARM_LEFT + px_x = -6 + px_y = 0 + +/obj/item/bodypart/r_arm + name = "right arm" + icon_state = "r_arm" + max_damage = 75 + body_zone = "r_arm" + body_part = ARM_RIGHT + px_x = 6 + px_y = 0 + +/obj/item/bodypart/l_leg + name = "left leg" + icon_state = "l_leg" + max_damage = 75 + body_zone = "l_leg" + body_part = LEG_LEFT + px_x = -2 + px_y = 12 + +/obj/item/bodypart/r_leg + name = "right leg" + icon_state = "r_leg" + max_damage = 75 + body_zone = "r_leg" + body_part = LEG_RIGHT + px_x = 2 + px_y = 12 + + +///////////////////////////////////////////////////////////////////////// + +/obj/item/severedtail + name = "tail" + desc = "A severed tail." + icon = 'icons/obj/surgery.dmi' + icon_state = "severedtail" + color = "#161" + var/markings = "Smooth" + + + + + + + diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm new file mode 100644 index 00000000000..5f037989886 --- /dev/null +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -0,0 +1,311 @@ + + +//Dismember a limb +/obj/item/bodypart/proc/dismember() + var/mob/living/carbon/human/H = owner + if(!istype(H) || !H.dna.species.has_dismemberment) // species don't allow dismemberment + return 0 + + var/obj/item/bodypart/affecting = H.get_bodypart("chest") + affecting.take_damage(Clamp(brute_dam/2, 15, 50), Clamp(burn_dam/2, 0, 50)) //Damage the chest based on limb's existing damage + H.visible_message("[H]'s [src.name] has been violently dismembered!") + H.emote("scream") + drop_limb() + + var/direction = pick(cardinal) + var/t_range = rand(2,max(throw_range/2, 2)) + var/turf/target_turf = get_turf(src) + for(var/i in 1 to t_range-1) + var/turf/new_turf = get_step(target_turf, direction) + target_turf = new_turf + if(new_turf.density) + break + throw_at_fast(target_turf, throw_range, throw_speed) + return 1 + + +/obj/item/bodypart/chest/dismember() + var/mob/living/carbon/human/H = owner + if(!istype(H) || !H.dna.species.has_dismemberment) //human's species don't allow dismemberment + return 0 + + var/organ_spilled = 0 + var/turf/T = get_turf(H) + T.add_blood(H) + playsound(get_turf(owner), 'sound/misc/splort.ogg', 80, 1) + for(var/X in owner.internal_organs) + var/obj/item/organ/O = X + if(O.zone != "chest") + continue + O.Remove(owner) + O.loc = T + organ_spilled = 1 + if(cavity_item) + cavity_item.loc = T + cavity_item = null + organ_spilled = 1 + + if(organ_spilled) + owner.visible_message("[owner]'s internal organs spill out onto the floor!") + return 1 + + + +//limb removal. The "special" argument is used for swapping a limb with a new one without the effects of losing a limb kicking in. +/obj/item/bodypart/proc/drop_limb(special) + if(!ishuman(owner)) + return + var/turf/T = get_turf(owner) + var/mob/living/carbon/human/H = owner + if(!no_update) + update_limb(1) + H.bodyparts -= src + owner = null + + for(var/X in H.surgeries) //if we had an ongoing surgery on that limb, we stop it. + var/datum/surgery/S = X + if(S.organ == src) + H.surgeries -= S + qdel(S) + break + + for(var/obj/item/I in embedded_objects) + embedded_objects -= I + I.loc = src + if(!H.has_embedded_objects()) + H.clear_alert("embeddedobject") + + if(!special) + for(var/X in H.dna.mutations) //some mutations require having specific limbs to be kept. + var/datum/mutation/human/MT = X + if(MT.limb_req && MT.limb_req == body_zone) + MT.force_lose(H) + + for(var/X in H.internal_organs) //internal organs inside the dismembered limb are dropped. + var/obj/item/organ/O = X + var/org_zone = check_zone(O.zone) + if(org_zone != body_zone) + continue + O.transfer_to_limb(src, H) + + update_icon_dropped() + src.loc = T + H.update_health_hud() //update the healthdoll + H.update_body() + H.update_hair() + H.update_canmove() + + +//when a limb is dropped, the internal organs are removed from the mob and put into the limb +/obj/item/organ/proc/transfer_to_limb(obj/item/bodypart/LB, mob/living/carbon/human/H) + Remove(H) + loc = LB + +/obj/item/organ/brain/transfer_to_limb(obj/item/bodypart/head/LB, mob/living/carbon/human/H) + if(H.mind && H.mind.changeling) + LB.brain = new //changeling doesn't lose its real brain organ, we drop a decoy. + LB.brain.loc = LB + else //if not a changeling, we put the brain organ inside the dropped head + Remove(H) //and put the player in control of the brainmob + loc = LB + LB.brain = src + LB.brainmob = brainmob + brainmob = null + LB.brainmob.loc = LB + LB.brainmob.container = LB + LB.brainmob.stat = DEAD + + +/obj/item/bodypart/chest/drop_limb(special) + return + +/obj/item/bodypart/r_arm/drop_limb(special) + var/mob/living/carbon/human/H = owner + ..() + if(istype(H) && !special) + if(H.handcuffed) + H.handcuffed.loc = H.loc + H.handcuffed.dropped(H) + H.handcuffed = null + H.update_handcuffed() + if(H.hud_used) + var/obj/screen/inventory/R = H.hud_used.inv_slots[slot_r_hand] + if(R) + R.update_icon() + if(H.r_hand) + H.unEquip(H.r_hand, 1) + if(H.gloves) + H.unEquip(H.gloves, 1) + H.update_inv_gloves() //to remove the bloody hands overlay + + +/obj/item/bodypart/l_arm/drop_limb(special) + var/mob/living/carbon/human/H = owner + ..() + if(istype(H) && !special) + if(H.handcuffed) + H.handcuffed.loc = H.loc + H.handcuffed.dropped(H) + H.handcuffed = null + H.update_handcuffed() + if(H.hud_used) + var/obj/screen/inventory/L = H.hud_used.inv_slots[slot_l_hand] + if(L) + L.update_icon() + if(H.l_hand) + H.unEquip(H.l_hand, 1) + if(H.gloves) + H.unEquip(H.gloves, 1) + H.update_inv_gloves() //to remove the bloody hands overlay + + +/obj/item/bodypart/r_leg/drop_limb(special) + if(owner && !special) + owner.Weaken(2) + if(owner.legcuffed) + owner.legcuffed.loc = owner.loc + owner.legcuffed.dropped(owner) + owner.legcuffed = null + owner.update_inv_legcuffed() + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + if(H.shoes) + H.unEquip(H.shoes, 1) + ..() + +/obj/item/bodypart/l_leg/drop_limb(special) //copypasta + if(owner && !special) + owner.Weaken(2) + if(owner.legcuffed) + owner.legcuffed.loc = owner.loc + owner.legcuffed.dropped(owner) + owner.legcuffed = null + owner.update_inv_legcuffed() + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + if(H.shoes) + H.unEquip(H.shoes, 1) + ..() + +/obj/item/bodypart/head/drop_limb(special) + var/mob/living/carbon/human/H = owner + if(istype(H)) + if(!special) + //Drop all worn head items + for(var/X in list(H.glasses, H.ears, H.wear_mask, H.head)) + var/obj/item/I = X + H.unEquip(I, 1) + name = "[H]'s head" + ..() + + + + + + +//Attach a limb to a human and drop any existing limb of that type. +/obj/item/bodypart/proc/replace_limb(mob/living/carbon/human/H, special) + if(!istype(H)) + return + var/obj/item/bodypart/O = locate(src.type) in H.bodyparts + + if(O) + O.drop_limb(1) + attach_limb(H, special) + +/obj/item/bodypart/head/replace_limb(mob/living/carbon/human/H, special) + if(!istype(H)) + return + var/obj/item/bodypart/head/O = locate(src.type) in H.bodyparts + if(O) + if(!special) + return + else + O.drop_limb(1) + attach_limb(H, special) + +/obj/item/bodypart/proc/attach_limb(mob/living/carbon/human/H, special) + loc = null + owner = H + H.bodyparts += src + + if(special) //non conventional limb attachment + for(var/X in H.surgeries) //if we had an ongoing surgery to attach a new limb, we stop it. + var/datum/surgery/S = X + var/surgery_zone = check_zone(S.location) + if(surgery_zone == body_zone) + H.surgeries -= S + qdel(S) + break + + update_bodypart_damage_state() + H.updatehealth() + H.update_body() + H.update_hair() + H.update_damage_overlays() + H.update_canmove() + + +/obj/item/bodypart/r_arm/attach_limb(mob/living/carbon/human/H, special) + ..() + if(H.hud_used) + var/obj/screen/inventory/R = H.hud_used.inv_slots[slot_r_hand] + if(R) + R.update_icon() + +/obj/item/bodypart/l_arm/attach_limb(mob/living/carbon/human/H, special) + ..() + if(H.hud_used) + var/obj/screen/inventory/L = H.hud_used.inv_slots[slot_l_hand] + if(L) + L.update_icon() + +/obj/item/bodypart/head/attach_limb(mob/living/carbon/human/H, special) + //Transfer some head appearance vars over + if(brain) + brainmob.container = null //Reset brainmob head var. + brainmob.loc = brain //Throw mob into brain. + brain.brainmob = brainmob //Set the brain to use the brainmob + brainmob = null //Set head brainmob var to null + brain.Insert(H) //Now insert the brain proper + brain = null //No more brain in the head + + H.hair_color = hair_color + H.hair_style = hair_style + H.facial_hair_color = facial_hair_color + H.facial_hair_style = facial_hair_style + H.eye_color = eye_color + H.lip_style = lip_style + H.lip_color = lip_color + if(real_name) + H.real_name = real_name + real_name = "" + name = initial(name) + ..() + + +//Regenerates all limbs. Returns amount of limbs regenerated +/mob/living/proc/regenerate_limbs(noheal) + return 0 + +/mob/living/carbon/human/regenerate_limbs(noheal) + var/list/limb_list = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg") + for(var/Z in limb_list) + . += regenerate_limb(Z, noheal) + +/mob/living/proc/regenerate_limb(limb_zone, noheal) + return + +/mob/living/carbon/human/regenerate_limb(limb_zone, noheal) + var/obj/item/bodypart/L + if(get_bodypart(limb_zone)) + return 0 + L = newBodyPart(limb_zone, 0, 0, src) + if(L) + if(!noheal) + L.brute_dam = 0 + L.burn_dam = 0 + L.burn_state = 0 + + L.attach_limb(src, 1) + return 1 diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm new file mode 100644 index 00000000000..1feb60587e4 --- /dev/null +++ b/code/modules/surgery/bodyparts/head.dm @@ -0,0 +1,163 @@ + + +/obj/item/bodypart/head + name = "head" + desc = "Didn't make sense not to live for fun, your brain gets smart but your head gets dumb." + icon_state = "head" + max_damage = 200 + body_zone = "head" + body_part = HEAD + layer = 4.1 //so it isn't hidden behind some objects when on the floor + w_class = 4 //Quite a hefty load + slowdown = 1 //Balancing measure + throw_range = 2 //No head bowling + px_x = 0 + px_y = -8 + + var/mob/living/carbon/brain/brainmob = null //The current occupant. + var/obj/item/organ/brain/brain = null //The brain organ + + //Limb appearance info: + var/real_name = "" //Replacement name + //Hair colour and style + var/hair_color = "000" + var/hair_style = "Bald" + var/hair_alpha = 255 + //Facial hair colour and style + var/facial_hair_color = "000" + var/facial_hair_style = "Shaved" + //Eye Colouring + var/eyes = "eyes" + var/eye_color = "" + var/lip_style = null + var/lip_color = "white" + +/obj/item/bodypart/head/drop_organs(mob/user) + var/turf/T = get_turf(src) + playsound(T, 'sound/misc/splort.ogg', 50, 1, -1) + for(var/obj/item/I in src) + if(I == brain) + user.visible_message("[user] saws [src] open and pulls out a brain!", "You saw [src] open and pull out a brain.") + if(brainmob) + brainmob.container = null + brainmob.loc = brain + brain.brainmob = brainmob + brainmob = null + brain.loc = T + brain = null + update_icon_dropped() + else + I.loc = T + +/obj/item/bodypart/head/update_limb(dropping_limb, mob/living/carbon/human/source) + var/mob/living/carbon/human/H + if(source) + H = source + else + H = owner + if(!istype(H)) + return + var/datum/species/S = H.dna.species + //First of all, name. + real_name = H.real_name + + //Facial hair + if(H.facial_hair_style && (FACEHAIR in S.specflags)) + facial_hair_style = H.facial_hair_style + if(S.hair_color) + if(S.hair_color == "mutcolor") + facial_hair_color = H.dna.features["mcolor"] + else + facial_hair_color = S.hair_color + else + facial_hair_color = H.facial_hair_color + hair_alpha = S.hair_alpha + else + facial_hair_style = "Shaved" + facial_hair_color = "000" + hair_alpha = 255 + //Hair + if(H.hair_style && (HAIR in S.specflags)) + hair_style = H.hair_style + if(S.hair_color) + if(S.hair_color == "mutcolor") + hair_color = H.dna.features["mcolor"] + else + hair_color = S.hair_color + else + hair_color = H.hair_color + hair_alpha = S.hair_alpha + else + hair_style = "Bald" + hair_color = "000" + hair_alpha = initial(hair_alpha) + // lipstick + if(H.lip_style && (LIPS in S.specflags)) + lip_style = H.lip_style + lip_color = H.lip_color + else + lip_style = null + lip_color = "white" + // eyes + if(EYECOLOR in S.specflags) + eyes = S.eyes + eye_color = H.eye_color + else + eyes = "eyes" + eye_color = "" + ..() + +/obj/item/bodypart/head/update_icon_dropped() + var/list/standing = get_limb_icon(1) + if(!standing) + return + for(var/image/I in standing) + I.pixel_x = px_x + I.pixel_y = px_y + overlays += standing + +/obj/item/bodypart/head/get_limb_icon(dropped) + overlays.Cut() + var/image/I = ..() + var/list/standing = list() + standing += I + if(dropped) //certain overlays only appear when the limb is being detached from its owner. + var/datum/sprite_accessory/S + + if(status != ORGAN_ROBOTIC) //having a robotic head hides certain features. + //facial hair + if(facial_hair_style) + S = facial_hair_styles_list[facial_hair_style] + if(S) + var/image/img_facial_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER, "dir"=SOUTH) + img_facial_s.color = "#" + facial_hair_color + img_facial_s.alpha = hair_alpha + standing += img_facial_s + + //Applies the debrained overlay if there is no brain + if(!brain) + standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER, "dir"=SOUTH) + else + if(hair_style) + S = hair_styles_list[hair_style] + if(S) + var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER, "dir"=SOUTH) + img_hair_s.color = "#" + hair_color + img_hair_s.alpha = hair_alpha + standing += img_hair_s + + + // lipstick + if(lip_style) + var/image/lips = image("icon"='icons/mob/human_face.dmi', "icon_state"="lips_[lip_style]_s", "layer" = -BODY_LAYER, "dir"=SOUTH) + lips.color = lip_color + standing += lips + + // eyes + if(eye_color) + var/image/img_eyes_s = image("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[eyes]_s", "layer" = -BODY_LAYER, "dir"=SOUTH) + img_eyes_s.color = "#" + eye_color + standing += img_eyes_s + + if(standing.len) + return standing diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm new file mode 100644 index 00000000000..1dd5b807a62 --- /dev/null +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -0,0 +1,156 @@ + +/mob/living/proc/get_bodypart(zone) + return + +/mob/living/carbon/get_bodypart(zone) + if(!zone) + zone = "chest" + for(var/X in bodyparts) + var/obj/item/bodypart/L = X + if(L.body_zone == zone) + return L + +//Mob has their active hand +/mob/proc/has_active_hand() + return 1 + +/mob/living/carbon/human/has_active_hand() + var/obj/item/bodypart/L + if(hand) + L = get_bodypart("l_arm") + else + L = get_bodypart("r_arm") + if(!L) + return 0 + return 1 + +/mob/living/carbon/proc/has_left_hand() + return 1 + +/mob/living/carbon/human/has_left_hand() + var/obj/item/bodypart/L + L = get_bodypart("l_arm") + if(!L) + return 0 + return 1 + +/mob/living/carbon/proc/has_right_hand() + return 1 + +/mob/living/carbon/human/has_right_hand() + var/obj/item/bodypart/L + L = get_bodypart("r_arm") + if(!L) + return 0 + return 1 + + +//Limb numbers +/mob/proc/get_num_arms() + return 2 +/mob/proc/get_num_legs() + return 2 + +/mob/living/carbon/human/get_num_arms() + . = 0 + for(var/X in bodyparts) + var/obj/item/bodypart/affecting = X + if(affecting.body_part == ARM_RIGHT) + .++ + if(affecting.body_part == ARM_LEFT) + .++ + +/mob/living/carbon/human/get_num_legs() + . = 0 + for(var/X in bodyparts) + var/obj/item/bodypart/affecting = X + if(affecting.body_part == LEG_RIGHT) + .++ + if(affecting.body_part == LEG_LEFT) + .++ + +/mob/living/proc/get_missing_limbs() + return + +/mob/living/carbon/human/get_missing_limbs() + var/list/full = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg") + for(var/zone in full) + if(get_bodypart(zone)) + full -= zone + return full + + +//Remove all embedded objects from all limbs on the human mob +/mob/living/carbon/human/proc/remove_all_embedded_objects() + var/turf/T = get_turf(src) + + for(var/X in bodyparts) + var/obj/item/bodypart/L = X + for(var/obj/item/I in L.embedded_objects) + L.embedded_objects -= I + I.loc = T + + clear_alert("embeddedobject") + +/mob/living/carbon/human/proc/has_embedded_objects() + . = 0 + for(var/X in bodyparts) + var/obj/item/bodypart/L = X + for(var/obj/item/I in L.embedded_objects) + return 1 + + +//Helper for quickly creating a new limb - used by augment code in species.dm spec_attacked_by +/proc/newBodyPart(zone, robotic, fixed_icon, mob/living/carbon/human/source) + var/obj/item/bodypart/L + switch(zone) + if("l_arm") + L = new /obj/item/bodypart/l_arm() + if("r_arm") + L = new /obj/item/bodypart/r_arm() + if("head") + L = new /obj/item/bodypart/head() + if("l_leg") + L = new /obj/item/bodypart/l_leg() + if("r_leg") + L = new /obj/item/bodypart/r_leg() + if("chest") + L = new /obj/item/bodypart/chest() + if(L) + if(source) + L.update_limb(fixed_icon, source) + else if(fixed_icon) + L.no_update = 1//when attached, the limb won't be affected by the appearance changes of its mob owner. + if(robotic) + L.change_bodypart_status(ORGAN_ROBOTIC) + + . = L + + +/proc/skintone2hex(skin_tone) + . = 0 + switch(skin_tone) + if("caucasian1") + . = "ffe0d1" + if("caucasian2") + . = "fcccb3" + if("caucasian3") + . = "e8b59b" + if("latino") + . = "d9ae96" + if("mediterranean") + . = "c79b8b" + if("asian1") + . = "ffdeb3" + if("asian2") + . = "e3ba84" + if("arab") + . = "c4915e" + if("indian") + . = "b87840" + if("african1") + . = "754523" + if("african2") + . = "471c18" + if("albino") + . = "fff4e6" \ No newline at end of file diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index c56b673a067..0db9fca7892 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -13,17 +13,16 @@ time = 32 var/obj/item/IC = null -/datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - for(var/obj/item/I in target.internal_organs) - if(!istype(I, /obj/item/organ)) - IC = I - break +/datum/surgery_step/handle_cavity/preop(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/bodypart/chest/CH = target.get_bodypart("chest") + IC = CH.cavity_item if(tool) user.visible_message("[user] begins to insert [tool] into [target]'s [target_zone].", "You begin to insert [tool] into [target]'s [target_zone]...") else user.visible_message("[user] checks for items in [target]'s [target_zone].", "You check for items in [target]'s [target_zone]...") -/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) +/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/bodypart/chest/CH = target.get_bodypart("chest") if(tool) if(IC || tool.w_class > 3 || (NODROP in tool.flags) || istype(tool, /obj/item/organ)) user << "You can't seem to fit [tool] in [target]'s [target_zone]!" @@ -31,14 +30,14 @@ else user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!", "You stuff [tool] into [target]'s [target_zone].") user.drop_item() - target.internal_organs += tool - tool.loc = target + CH.cavity_item = tool + tool.loc = null return 1 else if(IC) user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!", "You pull [IC] out of [target]'s [target_zone].") user.put_in_hands(IC) - target.internal_organs -= IC + CH.cavity_item = null return 1 else user << "You don't find anything in [target]'s [target_zone]." diff --git a/code/modules/surgery/dethralling.dm b/code/modules/surgery/dethralling.dm index 947dabed56f..74a8d54a7b4 100644 --- a/code/modules/surgery/dethralling.dm +++ b/code/modules/surgery/dethralling.dm @@ -37,5 +37,5 @@ user.visible_message("[user] shines light onto the tumor in [target]'s head!", "You cleanse the contamination from [target]'s brain!") ticker.mode.remove_thrall(target.mind, 0) target.visible_message("A strange black mass falls from [target]'s head!") - new /obj/item/organ/internal/shadowtumor(get_turf(target)) + new /obj/item/organ/shadowtumor(get_turf(target)) return 1 diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index c15995cae04..5e1ef149876 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -24,7 +24,7 @@ return 1 /datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.getorgan(/obj/item/organ/internal/brain)) + if(target.getorgan(/obj/item/organ/brain)) user.visible_message("[user] accidentally stabs [target] right in the brain!", "You accidentally stab [target] right in the brain!") target.adjustBrainLoss(100) else diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm index a04132d1a94..59259bda02f 100644 --- a/code/modules/surgery/helpers.dm +++ b/code/modules/surgery/helpers.dm @@ -1,12 +1,12 @@ /proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user) if(istype(M)) var/mob/living/carbon/human/H - var/obj/item/organ/limb/affecting + var/obj/item/bodypart/affecting var/selected_zone = user.zone_selected if(istype(M, /mob/living/carbon/human)) H = M - affecting = H.get_organ(check_zone(selected_zone)) + affecting = H.get_bodypart(check_zone(selected_zone)) if(M.lying || isslime(M)) //if they're prone or a slime var/datum/surgery/current_surgery @@ -22,11 +22,15 @@ for(var/datum/surgery/S in all_surgeries) if(!S.possible_locs.Find(selected_zone)) continue - if(affecting && S.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) + if(affecting) + if(!S.requires_bodypart) + continue + if(S.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) + continue + else if(H && S.requires_bodypart) //human with no limb in surgery zone when we need a limb continue if(!S.can_start(user, M)) continue - for(var/path in S.species) if(istype(M, path)) available_surgeries[S.name] = S @@ -35,9 +39,28 @@ var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries if(P && user && user.Adjacent(M) && (I in user)) var/datum/surgery/S = available_surgeries[P] + + for(var/datum/surgery/other in M.surgeries) + if(other.location == S.location) + return //during the input() another surgery was started at the same location. + var/datum/surgery/procedure = new S.type if(procedure) procedure.location = selected_zone + + //we check that the surgery is still doable after the input() wait. + if(H) + affecting = H.get_bodypart(check_zone(selected_zone)) + if(affecting) + if(!procedure.requires_bodypart) + return + if(procedure.requires_organic_bodypart && affecting.status == ORGAN_ROBOTIC) + return + else if(H && procedure.requires_bodypart) + return + if(!procedure.can_start(user, M)) + return + if(procedure.ignore_clothes || get_location_accessible(M, selected_zone)) M.surgeries += procedure procedure.organ = affecting diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm index e719e926bba..34a8c44a285 100644 --- a/code/modules/surgery/limb augmentation.dm +++ b/code/modules/surgery/limb augmentation.dm @@ -18,7 +18,7 @@ name = "replace limb" implements = list(/obj/item/robot_parts = 100) time = 32 - var/obj/item/organ/limb/L = null // L because "limb" + var/obj/item/bodypart/L = null // L because "limb" @@ -47,25 +47,10 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target user.visible_message("[user] successfully augments [target]'s [parse_zone(target_zone)]!", "You successfully augment [target]'s [parse_zone(target_zone)].") - L.loc = get_turf(target) - H.organs -= L - switch(target_zone) - if("r_leg") - H.organs += new /obj/item/organ/limb/robot/r_leg(src) - if("l_leg") - H.organs += new /obj/item/organ/limb/robot/l_leg(src) - if("r_arm") - H.organs += new /obj/item/organ/limb/robot/r_arm(src) - if("l_arm") - H.organs += new /obj/item/organ/limb/robot/l_arm(src) - if("head") - H.organs += new /obj/item/organ/limb/robot/head(src) - if("chest") - H.organs += new /obj/item/organ/limb/robot/chest(src) + L.change_bodypart_status(ORGAN_ROBOTIC, 1) user.drop_item() qdel(tool) H.update_damage_overlays(0) - H.update_augments() //Gives them the Cyber limb overlay H.updatehealth() add_logs(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]") else @@ -73,6 +58,13 @@ return 1 + + + + + + + /datum/surgery/chainsaw name = "chainsaw augmentation" steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, @@ -129,7 +121,6 @@ /datum/surgery_step/chainsaw_removal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) var/list/hands = get_both_hands(target) for(var/obj/item/weapon/mounted_chainsaw/V in hands) - qdel(V) - new /obj/item/weapon/twohanded/required/chainsaw(get_turf(target)) + target.unEquip(V, 1) user.visible_message("[user] carefully saws [target]'s arm free of the chainsaw.", "You remove the chainsaw.") return 1 diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index b0cc38c8dc8..8e8eccc4c8a 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -23,11 +23,11 @@ /datum/surgery_step/manipulate_organs time = 64 name = "manipulate organs" - implements = list(/obj/item/organ/internal = 100, /obj/item/weapon/reagent_containers/food/snacks/organ = 0) + implements = list(/obj/item/organ = 100, /obj/item/weapon/reagent_containers/food/snacks/organ = 0) var/implements_extract = list(/obj/item/weapon/hemostat = 100, /obj/item/weapon/crowbar = 55) var/implements_mend = list(/obj/item/weapon/cautery = 100, /obj/item/weapon/weldingtool = 70, /obj/item/weapon/lighter = 45, /obj/item/weapon/match = 20) var/current_type - var/obj/item/organ/internal/I = null + var/obj/item/organ/I = null /datum/surgery_step/manipulate_organs/New() ..() @@ -71,7 +71,7 @@ user << "There is no removeable organs in [target]'s [parse_zone(target_zone)]!" return -1 else - for(var/obj/item/organ/internal/O in organs) + for(var/obj/item/organ/O in organs) O.on_find(user) organs -= O organs[O.name] = O diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index cb8929237ce..8bcdd00522e 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/arm +/obj/item/organ/cyberimp/arm name = "arm-mounted implant" desc = "You shouldn't see this! Adminhelp and report this as an issue on github!" zone = "r_arm" @@ -14,7 +14,7 @@ var/obj/item/holder = null // You can use this var for item path, it would be converted into an item on New() -/obj/item/organ/internal/cyberimp/arm/New() +/obj/item/organ/cyberimp/arm/New() ..() if(ispath(holder)) holder = new holder(src) @@ -23,17 +23,17 @@ slot = zone + "_device" items_list = contents.Copy() -/obj/item/organ/internal/cyberimp/arm/update_icon() +/obj/item/organ/cyberimp/arm/update_icon() if(zone == "r_arm") transform = null else // Mirroring the icon transform = matrix(-1, 0, 0, 0, 1, 0) -/obj/item/organ/internal/cyberimp/arm/examine(mob/user) +/obj/item/organ/cyberimp/arm/examine(mob/user) ..() user << "[src] is assembled in the [zone == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it." -/obj/item/organ/internal/cyberimp/arm/attackby(obj/item/weapon/W, mob/user, params) +/obj/item/organ/cyberimp/arm/attackby(obj/item/weapon/W, mob/user, params) ..() if(istype(W, /obj/item/weapon/screwdriver)) if(zone == "r_arm") @@ -46,21 +46,21 @@ else if(istype(W, /obj/item/weapon/card/emag)) emag_act() -/obj/item/organ/internal/cyberimp/arm/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/arm/Remove(mob/living/carbon/M, special = 0) Retract() ..() -/obj/item/organ/internal/cyberimp/arm/emag_act() +/obj/item/organ/cyberimp/arm/emag_act() return 0 -/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity) +/obj/item/organ/cyberimp/arm/gun/emp_act(severity) if(prob(15/severity)) owner << "[src] is hit by EMP!" // give the owner an idea about why his implant is glitching Retract() ..() -/obj/item/organ/internal/cyberimp/arm/proc/Retract() +/obj/item/organ/cyberimp/arm/proc/Retract() if(!holder || (holder in src)) return @@ -73,7 +73,7 @@ holder = null playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) -/obj/item/organ/internal/cyberimp/arm/proc/Extend(var/obj/item/item) +/obj/item/organ/cyberimp/arm/proc/Extend(var/obj/item/item) if(!(item in src)) return @@ -108,7 +108,7 @@ "You hear a short mechanical noise.") playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1) -/obj/item/organ/internal/cyberimp/arm/ui_action_click() +/obj/item/organ/cyberimp/arm/ui_action_click() if(crit_fail || (!holder && !contents.len)) owner << "The implant doesn't respond. It seems to be broken..." return @@ -131,7 +131,7 @@ Retract() -/obj/item/organ/internal/cyberimp/arm/gun/emp_act(severity) +/obj/item/organ/cyberimp/arm/gun/emp_act(severity) if(prob(30/severity) && owner && !crit_fail) Retract() owner.visible_message("A loud bang comes from [owner]\'s [zone == "r_arm" ? "right" : "left"] arm!") @@ -145,36 +145,36 @@ ..() -/obj/item/organ/internal/cyberimp/arm/gun/laser +/obj/item/organ/cyberimp/arm/gun/laser name = "arm-mounted laser implant" desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_laser" origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4;syndicate=5"//this is kinda nutty and i might lower it holder = /obj/item/weapon/gun/energy/laser/mounted -/obj/item/organ/internal/cyberimp/arm/gun/laser/l/zone = "l_arm" +/obj/item/organ/cyberimp/arm/gun/laser/l/zone = "l_arm" -/obj/item/organ/internal/cyberimp/arm/gun/taser +/obj/item/organ/cyberimp/arm/gun/taser name = "arm-mounted taser implant" desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_taser" origin_tech = "materials=5;combat=5;biotech=4;powerstorage=4" holder = /obj/item/weapon/gun/energy/gun/advtaser/mounted -/obj/item/organ/internal/cyberimp/arm/gun/taser/l/zone = "l_arm" +/obj/item/organ/cyberimp/arm/gun/taser/l/zone = "l_arm" -/obj/item/organ/internal/cyberimp/arm/toolset +/obj/item/organ/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm. Contains all neccessary tools." origin_tech = "materials=5;engineering=5;biotech=4;powerstorage=3" contents = newlist(/obj/item/weapon/screwdriver/cyborg, /obj/item/weapon/wrench/cyborg, /obj/item/weapon/weldingtool/largetank/cyborg, /obj/item/weapon/crowbar/cyborg, /obj/item/weapon/wirecutters/cyborg, /obj/item/device/multitool/cyborg) -/obj/item/organ/internal/cyberimp/arm/toolset/l/zone = "l_arm" +/obj/item/organ/cyberimp/arm/toolset/l/zone = "l_arm" -/obj/item/organ/internal/cyberimp/arm/toolset/emag_act() +/obj/item/organ/cyberimp/arm/toolset/emag_act() if(!(locate(/obj/item/weapon/kitchen/knife/combat/cyborg) in items_list)) usr << "You unlock [src]'s integrated knife!" items_list += new /obj/item/weapon/kitchen/knife/combat/cyborg(src) diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 486f5f4536b..74e50bc12fd 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -1,11 +1,11 @@ -/obj/item/organ/internal/cyberimp/chest +/obj/item/organ/cyberimp/chest name = "cybernetic torso implant" desc = "implants for the organs in your torso" icon_state = "chest_implant" implant_overlay = "chest_implant_overlay" zone = "chest" -/obj/item/organ/internal/cyberimp/chest/nutriment +/obj/item/organ/cyberimp/chest/nutriment name = "Nutriment pump implant" desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." icon_state = "chest_implant" @@ -16,7 +16,7 @@ slot = "stomach" origin_tech = "materials=5;programming=3;biotech=4" -/obj/item/organ/internal/cyberimp/chest/nutriment/on_life() +/obj/item/organ/cyberimp/chest/nutriment/on_life() if(synthesizing) return @@ -27,14 +27,14 @@ spawn(50) synthesizing = 0 -/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity) +/obj/item/organ/cyberimp/chest/nutriment/emp_act(severity) if(!owner) return owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning owner << "You feel like your insides are burning." -/obj/item/organ/internal/cyberimp/chest/nutriment/plus +/obj/item/organ/cyberimp/chest/nutriment/plus name = "Nutriment pump implant PLUS" desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." icon_state = "chest_implant" @@ -45,7 +45,7 @@ -/obj/item/organ/internal/cyberimp/chest/reviver +/obj/item/organ/cyberimp/chest/reviver name = "Reviver implant" desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!" icon_state = "chest_implant" @@ -56,7 +56,7 @@ var/reviving = 0 var/cooldown = 0 -/obj/item/organ/internal/cyberimp/chest/reviver/on_life() +/obj/item/organ/cyberimp/chest/reviver/on_life() if(reviving) if(owner.stat == UNCONSCIOUS) spawn(30) @@ -87,7 +87,7 @@ revive_cost = 0 reviving = 1 -/obj/item/organ/internal/cyberimp/chest/reviver/emp_act(severity) +/obj/item/organ/cyberimp/chest/reviver/emp_act(severity) if(!owner) return @@ -108,7 +108,7 @@ -/obj/item/organ/internal/cyberimp/chest/thrusters +/obj/item/organ/cyberimp/chest/thrusters name = "implantable thrusters set" desc = "An implantable set of thruster ports. They use the gas from environment or subject's internals for propulsion in zero-gravity areas. \ Unlike regular jetpack, this device has no stablilzation system." @@ -122,21 +122,21 @@ var/on = 0 var/datum/effect_system/trail_follow/ion/ion_trail -/obj/item/organ/internal/cyberimp/chest/thrusters/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/chest/thrusters/Insert(mob/living/carbon/M, special = 0) ..() if(!ion_trail) ion_trail = new ion_trail.set_up(M) -/obj/item/organ/internal/cyberimp/chest/thrusters/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/chest/thrusters/Remove(mob/living/carbon/M, special = 0) if(on) toggle(silent=1) ..() -/obj/item/organ/internal/cyberimp/chest/thrusters/ui_action_click() +/obj/item/organ/cyberimp/chest/thrusters/ui_action_click() toggle() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/toggle(silent=0) +/obj/item/organ/cyberimp/chest/thrusters/proc/toggle(silent=0) if(!on) if(crit_fail) if(!silent) @@ -154,7 +154,7 @@ on = 0 update_icon() -/obj/item/organ/internal/cyberimp/chest/thrusters/update_icon() +/obj/item/organ/cyberimp/chest/thrusters/update_icon() if(on) icon_state = "imp_jetpack-on" else @@ -163,7 +163,7 @@ var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/organ/internal/cyberimp/chest/thrusters/proc/allow_thrust(num) +/obj/item/organ/cyberimp/chest/thrusters/proc/allow_thrust(num) if(!on || !owner) return 0 diff --git a/code/modules/surgery/organs/augments_external.dm b/code/modules/surgery/organs/augments_external.dm deleted file mode 100644 index d3acb5135d9..00000000000 --- a/code/modules/surgery/organs/augments_external.dm +++ /dev/null @@ -1,51 +0,0 @@ -/////AUGMENTATION\\\\\ -//See code/modules/surgery/organs/organ.dm for the parent "limb" - - -/obj/item/organ/limb/robot - name = "cyberlimb" - desc = "You should never be seeing this!" - status = ORGAN_ROBOTIC - -/obj/item/organ/limb/robot/chest - name = "chest" - desc = "A Robotic chest" - icon_state = "chest" - max_damage = 200 - body_part = CHEST - -/obj/item/organ/limb/robot/head - name = "head" - desc = "A Robotic head" - icon_state = "head" - max_damage = 200 - body_part = HEAD - -/obj/item/organ/limb/robot/l_arm - name = "l_arm" - desc = "A Robotic arm" - icon_state = "l_arm" - max_damage = 75 - body_part = ARM_LEFT - -/obj/item/organ/limb/robot/l_leg - name = "l_leg" - desc = "A Robotic leg" - icon_state = "l_leg" - max_damage = 75 - body_part = LEG_LEFT - -/obj/item/organ/limb/robot/r_arm - name = "r_arm" - desc = "A Robotic arm" - icon_state = "r_arm" - max_damage = 75 - body_part = ARM_RIGHT - -/obj/item/organ/limb/robot/r_leg - name = "r_leg" - desc = "A Robotic leg" - icon_state = "r_leg" - max_damage = 75 - body_part = LEG_RIGHT - diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index 1693d217906..e7432e89fa6 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -1,4 +1,4 @@ -/obj/item/organ/internal/cyberimp/eyes +/obj/item/organ/cyberimp/eyes name = "cybernetic eyes" desc = "artificial photoreceptors with specialized functionality" icon_state = "eye_implant" @@ -16,7 +16,7 @@ var/aug_message = "Your vision is augmented!" -/obj/item/organ/internal/cyberimp/eyes/Insert(var/mob/living/carbon/M, var/special = 0) +/obj/item/organ/cyberimp/eyes/Insert(var/mob/living/carbon/M, var/special = 0) ..() if(istype(owner, /mob/living/carbon/human) && eye_color) var/mob/living/carbon/human/HMN = owner @@ -28,7 +28,7 @@ owner.update_sight() -/obj/item/organ/internal/cyberimp/eyes/Remove(var/mob/living/carbon/M, var/special = 0) +/obj/item/organ/cyberimp/eyes/Remove(var/mob/living/carbon/M, var/special = 0) M.sight ^= sight_flags if(istype(M,/mob/living/carbon/human) && eye_color) var/mob/living/carbon/human/HMN = owner @@ -36,7 +36,7 @@ HMN.regenerate_icons() ..() -/obj/item/organ/internal/cyberimp/eyes/emp_act(severity) +/obj/item/organ/cyberimp/eyes/emp_act(severity) if(!owner) return if(severity > 1) @@ -45,7 +45,7 @@ owner << "Static obfuscates your vision!" owner.flash_eyes(visual = 1) -/obj/item/organ/internal/cyberimp/eyes/xray +/obj/item/organ/cyberimp/eyes/xray name = "X-ray implant" desc = "These cybernetic eye implants will give you X-ray vision. Blinking is futile." eye_color = "000" @@ -54,7 +54,7 @@ dark_view = 8 sight_flags = SEE_MOBS | SEE_OBJS | SEE_TURFS -/obj/item/organ/internal/cyberimp/eyes/thermals +/obj/item/organ/cyberimp/eyes/thermals name = "Thermals implant" desc = "These cybernetic eye implants will give you Thermal vision. Vertical slit pupil included." eye_color = "FC0" @@ -68,27 +68,27 @@ // HUD implants -/obj/item/organ/internal/cyberimp/eyes/hud +/obj/item/organ/cyberimp/eyes/hud name = "HUD implant" desc = "These cybernetic eyes will display a HUD over everything you see. Maybe." slot = "eye_hud" var/HUD_type = 0 -/obj/item/organ/internal/cyberimp/eyes/hud/Insert(var/mob/living/carbon/M, var/special = 0) +/obj/item/organ/cyberimp/eyes/hud/Insert(var/mob/living/carbon/M, var/special = 0) ..() if(HUD_type) var/datum/atom_hud/H = huds[HUD_type] H.add_hud_to(M) M.permanent_huds |= H -/obj/item/organ/internal/cyberimp/eyes/hud/Remove(var/mob/living/carbon/M, var/special = 0) +/obj/item/organ/cyberimp/eyes/hud/Remove(var/mob/living/carbon/M, var/special = 0) if(HUD_type) var/datum/atom_hud/H = huds[HUD_type] M.permanent_huds ^= H H.remove_hud_from(M) ..() -/obj/item/organ/internal/cyberimp/eyes/hud/medical +/obj/item/organ/cyberimp/eyes/hud/medical name = "Medical HUD implant" desc = "These cybernetic eye implants will display a medical HUD over everything you see." eye_color = "0ff" @@ -97,7 +97,7 @@ aug_message = "You suddenly see health bars floating above people's heads..." HUD_type = DATA_HUD_MEDICAL_ADVANCED -/obj/item/organ/internal/cyberimp/eyes/hud/security +/obj/item/organ/cyberimp/eyes/hud/security name = "Security HUD implant" desc = "These cybernetic eye implants will display a security HUD over everything you see." eye_color = "d00" @@ -108,7 +108,7 @@ // Welding shield implant -/obj/item/organ/internal/cyberimp/eyes/shield +/obj/item/organ/cyberimp/eyes/shield name = "welding shield implant" desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision." slot = "eye_shield" @@ -118,5 +118,5 @@ aug_message = null eye_color = null -/obj/item/organ/internal/cyberimp/eyes/shield/emp_act(severity) +/obj/item/organ/cyberimp/eyes/shield/emp_act(severity) return \ No newline at end of file diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 3c92f71dd14..3dc5e743049 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -1,13 +1,13 @@ #define STUN_SET_AMOUNT 2 -/obj/item/organ/internal/cyberimp +/obj/item/organ/cyberimp name = "cybernetic implant" desc = "a state-of-the-art implant that improves a baseline's functionality" status = ORGAN_ROBOTIC var/implant_color = "#FFFFFF" var/implant_overlay -/obj/item/organ/internal/cyberimp/New(var/mob/M = null) +/obj/item/organ/cyberimp/New(var/mob/M = null) if(iscarbon(M)) src.Insert(M) if(implant_overlay) @@ -20,7 +20,7 @@ //[[[[BRAIN]]]] -/obj/item/organ/internal/cyberimp/brain +/obj/item/organ/cyberimp/brain name = "cybernetic brain implant" desc = "injectors of extra sub-routines for the brain" icon_state = "brain_implant" @@ -28,7 +28,7 @@ zone = "head" w_class = 1 -/obj/item/organ/internal/cyberimp/brain/emp_act(severity) +/obj/item/organ/cyberimp/brain/emp_act(severity) if(!owner) return var/stun_amount = 5 + (severity-1 ? 0 : 5) @@ -37,7 +37,7 @@ return stun_amount -/obj/item/organ/internal/cyberimp/brain/anti_drop +/obj/item/organ/cyberimp/brain/anti_drop name = "anti-drop implant" desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle." var/active = 0 @@ -50,7 +50,7 @@ origin_tech = "materials=5;programming=4;biotech=4" actions_types = list(/datum/action/item_action/organ_action/toggle) -/obj/item/organ/internal/cyberimp/brain/anti_drop/ui_action_click() +/obj/item/organ/cyberimp/brain/anti_drop/ui_action_click() active = !active if(active) l_hand_obj = owner.l_hand @@ -89,7 +89,7 @@ l_hand_obj = null r_hand_obj = null -/obj/item/organ/internal/cyberimp/brain/anti_drop/emp_act(severity) +/obj/item/organ/cyberimp/brain/anti_drop/emp_act(severity) if(!owner) return var/range = severity ? 10 : 5 @@ -108,26 +108,26 @@ R_item.throw_at(A, range, 2) owner << "Your right arm spasms and throws the [R_item.name]!" -/obj/item/organ/internal/cyberimp/brain/anti_drop/proc/release_items() +/obj/item/organ/cyberimp/brain/anti_drop/proc/release_items() if(!l_hand_ignore && l_hand_obj in owner.contents) l_hand_obj.flags ^= NODROP if(!r_hand_ignore && r_hand_obj in owner.contents) r_hand_obj.flags ^= NODROP -/obj/item/organ/internal/cyberimp/brain/anti_drop/Remove(var/mob/living/carbon/M, special = 0) +/obj/item/organ/cyberimp/brain/anti_drop/Remove(var/mob/living/carbon/M, special = 0) if(active) ui_action_click() ..() -/obj/item/organ/internal/cyberimp/brain/anti_stun +/obj/item/organ/cyberimp/brain/anti_stun name = "CNS Rebooter implant" desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned." implant_color = "#FFFF00" slot = "brain_antistun" origin_tech = "materials=6;programming=4;biotech=5" -/obj/item/organ/internal/cyberimp/brain/anti_stun/on_life() +/obj/item/organ/cyberimp/brain/anti_stun/on_life() ..() if(crit_fail) return @@ -137,7 +137,7 @@ if(owner.weakened > STUN_SET_AMOUNT) owner.weakened = STUN_SET_AMOUNT -/obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity) +/obj/item/organ/cyberimp/brain/anti_stun/emp_act(severity) if(crit_fail) return crit_fail = 1 @@ -146,10 +146,10 @@ //[[[[MOUTH]]]] -/obj/item/organ/internal/cyberimp/mouth +/obj/item/organ/cyberimp/mouth zone = "mouth" -/obj/item/organ/internal/cyberimp/mouth/breathing_tube +/obj/item/organ/cyberimp/mouth/breathing_tube name = "breathing tube implant" desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked." icon_state = "implant_mask" @@ -157,7 +157,7 @@ w_class = 1 origin_tech = "materials=2;biotech=3" -/obj/item/organ/internal/cyberimp/mouth/breathing_tube/emp_act(severity) +/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity) if(prob(60/severity)) owner << "Your breathing tube suddenly closes!" owner.losebreath += 2 @@ -179,8 +179,8 @@ /obj/item/weapon/storage/box/cyber_implants/bundle name = "boxed cybernetic implants" - var/list/boxed = list(/obj/item/organ/internal/cyberimp/eyes/xray,/obj/item/organ/internal/cyberimp/eyes/thermals, - /obj/item/organ/internal/cyberimp/brain/anti_stun, /obj/item/organ/internal/cyberimp/chest/reviver) + var/list/boxed = list(/obj/item/organ/cyberimp/eyes/xray,/obj/item/organ/cyberimp/eyes/thermals, + /obj/item/organ/cyberimp/brain/anti_stun, /obj/item/organ/cyberimp/chest/reviver) var/amount = 5 /obj/item/weapon/storage/box/cyber_implants/bundle/New() diff --git a/code/modules/surgery/organs/autoimplanter.dm b/code/modules/surgery/organs/autoimplanter.dm index 5ec3b224683..e7878676624 100644 --- a/code/modules/surgery/organs/autoimplanter.dm +++ b/code/modules/surgery/organs/autoimplanter.dm @@ -4,7 +4,7 @@ icon_state = "autoimplanter" item_state = "walkietalkie"//left as this so as to intentionally not have inhands w_class = 2 - var/obj/item/organ/internal/cyberimp/storedorgan + var/obj/item/organ/cyberimp/storedorgan /obj/item/device/autoimplanter/attack_self(mob/user)//when the object it used... if(!storedorgan) @@ -16,7 +16,7 @@ storedorgan = null /obj/item/device/autoimplanter/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/organ/internal/cyberimp)) + if(istype(I, /obj/item/organ/cyberimp)) if(storedorgan) user << "[src] already has an implant stored." return diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index b25f792f336..f1ee5ec13f6 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -20,7 +20,7 @@ mob/living/carbon/getorganszone(zone, var/subzones = 0) if(zone == "chest") returnorg = getorganszone("groin") - for(var/obj/item/organ/internal/O in internal_organs) + for(var/obj/item/organ/O in internal_organs) if(zone == O.zone) returnorg += O return returnorg @@ -28,11 +28,6 @@ mob/living/carbon/getorganszone(zone, var/subzones = 0) mob/living/carbon/getorganslot(slot) return internal_organs_slot[slot] -mob/proc/getlimb() - return - -mob/living/carbon/human/getlimb(typepath) - return (locate(typepath) in organs) proc/isorgan(atom/A) - return istype(A, /obj/item/organ/internal) \ No newline at end of file + return istype(A, /obj/item/organ) \ No newline at end of file diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm deleted file mode 100644 index 18cd9377ecf..00000000000 --- a/code/modules/surgery/organs/organ_external.dm +++ /dev/null @@ -1,189 +0,0 @@ -/obj/item/organ - name = "organ" - icon = 'icons/obj/surgery.dmi' - var/mob/living/carbon/owner = null - var/status = ORGAN_ORGANIC - - -//Old Datum Limbs: -// code/modules/unused/limbs.dm - - -/obj/item/organ/limb - name = "limb" - var/body_part = null - var/brutestate = 0 - var/burnstate = 0 - var/brute_dam = 0 - var/burn_dam = 0 - var/max_damage = 0 - var/list/embedded_objects = list() - - - -/obj/item/organ/limb/chest - name = "chest" - desc = "why is it detached..." - icon_state = "chest" - max_damage = 200 - body_part = CHEST - - -/obj/item/organ/limb/head - name = "head" - desc = "what a way to get a head in life..." - icon_state = "head" - max_damage = 200 - body_part = HEAD - - -/obj/item/organ/limb/l_arm - name = "l_arm" - desc = "why is it detached..." - icon_state = "l_arm" - max_damage = 75 - body_part = ARM_LEFT - - -/obj/item/organ/limb/l_leg - name = "l_leg" - desc = "why is it detached..." - icon_state = "l_leg" - max_damage = 75 - body_part = LEG_LEFT - - -/obj/item/organ/limb/r_arm - name = "r_arm" - desc = "why is it detached..." - icon_state = "r_arm" - max_damage = 75 - body_part = ARM_RIGHT - - -/obj/item/organ/limb/r_leg - name = "r_leg" - desc = "why is it detached..." - icon_state = "r_leg" - max_damage = 75 - body_part = LEG_RIGHT - -/obj/item/organ/severedtail - name = "tail" - desc = "A severed tail." - icon_state = "severedtail" - color = "#161" - var/markings = "Smooth" - -//Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. -//Damage will not exceed max_damage using this proc -//Cannot apply negative damage -/obj/item/organ/limb/proc/take_damage(brute, burn) - if(owner && (owner.status_flags & GODMODE)) - return 0 //godmode - brute = max(brute,0) - burn = max(burn,0) - - - if(status == ORGAN_ROBOTIC) //This makes robolimbs not damageable by chems and makes it stronger - brute = max(0, brute - 5) - burn = max(0, burn - 4) - - var/can_inflict = max_damage - (brute_dam + burn_dam) - if(!can_inflict) - return 0 - - if((brute + burn) < can_inflict) - brute_dam += brute - burn_dam += burn - else - if(brute > 0) - if(burn > 0) - brute = round( (brute/(brute+burn)) * can_inflict, 1 ) - burn = can_inflict - brute //gets whatever damage is left over - brute_dam += brute - burn_dam += burn - else - brute_dam += can_inflict - else - if(burn > 0) - burn_dam += can_inflict - else - return 0 - if(owner) - owner.updatehealth() - return update_organ_icon() - - -//Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. -//Damage cannot go below zero. -//Cannot remove negative damage (i.e. apply damage) -/obj/item/organ/limb/proc/heal_damage(brute, burn, robotic) - - if(robotic && status != ORGAN_ROBOTIC) // This makes organic limbs not heal when the proc is in Robotic mode. - brute = max(0, brute - 3) - burn = max(0, burn - 3) - - if(!robotic && status == ORGAN_ROBOTIC) // This makes robolimbs not healable by chems. - brute = max(0, brute - 3) - burn = max(0, burn - 3) - - brute_dam = max(brute_dam - brute, 0) - burn_dam = max(burn_dam - burn, 0) - if(owner) - owner.updatehealth() - return update_organ_icon() - - -//Returns total damage...kinda pointless really -/obj/item/organ/limb/proc/get_damage() - return brute_dam + burn_dam - - -//Updates an organ's brute/burn states for use by update_damage_overlays() -//Returns 1 if we need to update overlays. 0 otherwise. -/obj/item/organ/limb/proc/update_organ_icon() - if(status == ORGAN_ORGANIC) //Robotic limbs show no damage - RR - var/tbrute = round( (brute_dam/max_damage)*3, 1 ) - var/tburn = round( (burn_dam/max_damage)*3, 1 ) - if((tbrute != brutestate) || (tburn != burnstate)) - brutestate = tbrute - burnstate = tburn - return 1 - return 0 - -//Returns a display name for the organ -/obj/item/organ/limb/proc/getDisplayName() //Added "Chest" and "Head" just in case, this may not be needed - switch(name) - if("l_leg") - return "left leg" - if("r_leg") - return "right leg" - if("l_arm") - return "left arm" - if("r_arm") - return "right arm" - if("chest") - return "chest" - if("head") - return "head" - else - return name - - -//Remove all embedded objects from all limbs on the human mob -/mob/living/carbon/human/proc/remove_all_embedded_objects() - var/turf/T = get_turf(src) - - for(var/obj/item/organ/limb/L in organs) - for(var/obj/item/I in L.embedded_objects) - L.embedded_objects -= I - I.loc = T - - clear_alert("embeddedobject") - -/mob/living/carbon/human/proc/has_embedded_objects() - . = 0 - for(var/obj/item/organ/limb/L in organs) - for(var/obj/item/I in L.embedded_objects) - return 1 \ No newline at end of file diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index a8cd6be08e2..c7a170e356a 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -1,4 +1,9 @@ -/obj/item/organ/internal + +/obj/item/organ + name = "organ" + icon = 'icons/obj/surgery.dmi' + var/mob/living/carbon/owner = null + var/status = ORGAN_ORGANIC origin_tech = "biotech=2" force = 1 w_class = 2 @@ -9,11 +14,11 @@ var/vital = 0 -/obj/item/organ/internal/proc/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0) if(!iscarbon(M) || owner == M) return - var/obj/item/organ/internal/replaced = M.getorganslot(slot) + var/obj/item/organ/replaced = M.getorganslot(slot) if(replaced) replaced.Remove(M, special = 1) @@ -26,7 +31,7 @@ A.Grant(M) -/obj/item/organ/internal/proc/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/proc/Remove(mob/living/carbon/M, special = 0) owner = null if(M) M.internal_organs -= src @@ -39,19 +44,19 @@ A.Remove(M) -/obj/item/organ/internal/proc/on_find(mob/living/finder) +/obj/item/organ/proc/on_find(mob/living/finder) return -/obj/item/organ/internal/proc/on_life() +/obj/item/organ/proc/on_life() return -/obj/item/organ/internal/examine(mob/user) +/obj/item/organ/examine(mob/user) ..() if(status == ORGAN_ROBOTIC && crit_fail) user << "[src] seems to be broken!" -/obj/item/organ/internal/proc/prepare_eat() +/obj/item/organ/proc/prepare_eat() var/obj/item/weapon/reagent_containers/food/snacks/organ/S = new S.name = name S.desc = desc @@ -69,12 +74,12 @@ list_reagents = list("nutriment" = 5) -/obj/item/organ/internal/Destroy() +/obj/item/organ/Destroy() if(owner) Remove(owner, 1) return ..() -/obj/item/organ/internal/attack(mob/living/carbon/M, mob/user) +/obj/item/organ/attack(mob/living/carbon/M, mob/user) if(M == user && ishuman(user)) var/mob/living/carbon/human/H = user if(status == ORGAN_ORGANIC) @@ -87,7 +92,7 @@ else ..() -/obj/item/organ/internal/item_action_slot_check(slot,mob/user) +/obj/item/organ/item_action_slot_check(slot,mob/user) return //so we don't grant the organ's action to mobs who pick up the organ. //Looking for brains? @@ -95,7 +100,7 @@ -/obj/item/organ/internal/heart +/obj/item/organ/heart name = "heart" icon_state = "heart-on" zone = "chest" @@ -105,13 +110,13 @@ var/icon_base = "heart" attack_verb = list("beat", "thumped") -/obj/item/organ/internal/heart/update_icon() +/obj/item/organ/heart/update_icon() if(beating) icon_state = "[icon_base]-on" else icon_state = "[icon_base]-off" -/obj/item/organ/internal/heart/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/heart/Remove(mob/living/carbon/M, special = 0) ..() if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -125,7 +130,7 @@ if(!owner) Stop() -/obj/item/organ/internal/heart/attack_self(mob/user) +/obj/item/organ/heart/attack_self(mob/user) ..() if(!beating) Restart() @@ -134,7 +139,7 @@ Stop() -/obj/item/organ/internal/heart/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/heart/Insert(mob/living/carbon/M, special = 0) ..() if(ishuman(M) && beating) var/mob/living/carbon/human/H = M @@ -142,23 +147,23 @@ H.heart_attack = 0 return -/obj/item/organ/internal/heart/proc/Stop() +/obj/item/organ/heart/proc/Stop() beating = 0 update_icon() return 1 -/obj/item/organ/internal/heart/proc/Restart() +/obj/item/organ/heart/proc/Restart() beating = 1 update_icon() return 1 -/obj/item/organ/internal/heart/prepare_eat() +/obj/item/organ/heart/prepare_eat() var/obj/S = ..() S.icon_state = "heart-off" return S -/obj/item/organ/internal/heart/cursed +/obj/item/organ/heart/cursed name = "cursed heart" desc = "it needs to be pumped..." icon_state = "cursedheart-off" @@ -176,7 +181,7 @@ var/heal_oxy = 0 -/obj/item/organ/internal/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target) +/obj/item/organ/heart/cursed/attack(mob/living/carbon/human/H, mob/living/carbon/human/user, obj/target) if(H == user && istype(H)) playsound(user,'sound/effects/singlebeat.ogg',40,1) user.drop_item() @@ -184,7 +189,7 @@ else return ..() -/obj/item/organ/internal/heart/cursed/on_life() +/obj/item/organ/heart/cursed/on_life() if(world.time > (last_pump + pump_delay)) if(ishuman(owner) && owner.client) //While this entire item exists to make people suffer, they can't control disconnects. var/mob/living/carbon/human/H = owner @@ -196,7 +201,7 @@ else last_pump = world.time //lets be extra fair *sigh* -/obj/item/organ/internal/heart/cursed/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/heart/cursed/Insert(mob/living/carbon/M, special = 0) ..() if(owner) owner << "Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!" @@ -207,8 +212,8 @@ //You are now brea- pumping blood manually /datum/action/item_action/organ_action/cursed_heart/Trigger() . = ..() - if(. && istype(target,/obj/item/organ/internal/heart/cursed)) - var/obj/item/organ/internal/heart/cursed/cursed_heart = target + if(. && istype(target,/obj/item/organ/heart/cursed)) + var/obj/item/organ/heart/cursed/cursed_heart = target if(world.time < (cursed_heart.last_pump + (cursed_heart.pump_delay-10))) //no spam owner << "Too soon!" @@ -234,7 +239,7 @@ -/obj/item/organ/internal/lungs +/obj/item/organ/lungs name = "lungs" icon_state = "lungs" zone = "chest" @@ -242,12 +247,12 @@ gender = PLURAL w_class = 3 -/obj/item/organ/internal/lungs/prepare_eat() +/obj/item/organ/lungs/prepare_eat() var/obj/S = ..() S.reagents.add_reagent("salbutamol", 5) return S -/obj/item/organ/internal/tongue +/obj/item/organ/tongue name = "tongue" desc = "A fleshy muscle mostly used for lying." icon_state = "tonguenormal" @@ -256,26 +261,26 @@ var/say_mod = null attack_verb = list("licked", "slobbered", "slapped", "frenched", "tongued") -/obj/item/organ/internal/tongue/proc/TongueSpeech(var/message) +/obj/item/organ/tongue/proc/TongueSpeech(var/message) return message -/obj/item/organ/internal/tongue/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/tongue/Insert(mob/living/carbon/M, special = 0) ..() if(say_mod && M.dna && M.dna.species) M.dna.species.say_mod = say_mod -/obj/item/organ/internal/tongue/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/tongue/Remove(mob/living/carbon/M, special = 0) ..() if(say_mod && M.dna && M.dna.species) M.dna.species.say_mod = initial(M.dna.species.say_mod) -/obj/item/organ/internal/tongue/lizard +/obj/item/organ/tongue/lizard name = "forked tongue" desc = "A thin and long muscle typically found in reptilian races, apparently moonlights as a nose." icon_state = "tonguelizard" say_mod = "hisses" -/obj/item/organ/internal/tongue/lizard/TongueSpeech(var/message) +/obj/item/organ/tongue/lizard/TongueSpeech(var/message) var/regex/lizard_hiss = new("s+", "g") var/regex/lizard_hiSS = new("S+", "g") if(copytext(message, 1, 2) != "*") @@ -283,13 +288,13 @@ message = lizard_hiSS.Replace(message, "SSS") return message -/obj/item/organ/internal/tongue/fly +/obj/item/organ/tongue/fly name = "proboscis" desc = "A freakish looking meat tube that apparently can take in liquids." icon_state = "tonguefly" say_mod = "buzzes" -/obj/item/organ/internal/tongue/fly/TongueSpeech(var/message) +/obj/item/organ/tongue/fly/TongueSpeech(var/message) var/regex/fly_buzz = new("z+", "g") var/regex/fly_buZZ = new("Z+", "g") if(copytext(message, 1, 2) != "*") @@ -297,18 +302,18 @@ message = fly_buZZ.Replace(message, "ZZZ") return message -/obj/item/organ/internal/tongue/abductor +/obj/item/organ/tongue/abductor name = "superlingual matrix" desc = "A mysterious structure that allows for instant communication between users. Pretty impressive until you need to eat something." icon_state = "tongueayylmao" say_mod = "gibbers" -/obj/item/organ/internal/tongue/abductor/TongueSpeech(var/message) +/obj/item/organ/tongue/abductor/TongueSpeech(var/message) //Hacks var/mob/living/carbon/human/user = usr var/rendered = "[user.name]: [message]" for(var/mob/living/carbon/human/H in living_mob_list) - var/obj/item/organ/internal/tongue/T = H.getorganslot("tongue") + var/obj/item/organ/tongue/T = H.getorganslot("tongue") if(!T || T.type != type) continue else if(H.dna && H.dna.species.id == "abductor" && user.dna && user.dna.species.id == "abductor") @@ -321,13 +326,13 @@ M << "(F) [rendered]" return "" -/obj/item/organ/internal/tongue/zombie +/obj/item/organ/tongue/zombie name = "rotting tongue" desc = "Between the decay and the fact that it's just lying there you doubt a tongue has ever seemed less sexy." icon_state = "tonguezombie" say_mod = "moans" -/obj/item/organ/internal/tongue/zombie/TongueSpeech(var/message) +/obj/item/organ/tongue/zombie/TongueSpeech(var/message) var/list/message_list = splittext(message, " ") var/maxchanges = max(round(message_list.len / 1.5), 2) @@ -343,24 +348,24 @@ return jointext(message_list, " ") -/obj/item/organ/internal/tongue/alien +/obj/item/organ/tongue/alien name = "alien tongue" desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"." icon_state = "tonguexeno" say_mod = "hiss" -/obj/item/organ/internal/tongue/alien/TongueSpeech(var/message) +/obj/item/organ/tongue/alien/TongueSpeech(var/message) playsound(owner, "hiss", 25, 1, 1) return message -/obj/item/organ/internal/appendix +/obj/item/organ/appendix name = "appendix" icon_state = "appendix" zone = "groin" slot = "appendix" var/inflamed = 0 -/obj/item/organ/internal/appendix/update_icon() +/obj/item/organ/appendix/update_icon() if(inflamed) icon_state = "appendixinflamed" name = "inflamed appendix" @@ -368,25 +373,25 @@ icon_state = "appendix" name = "appendix" -/obj/item/organ/internal/appendix/Remove(mob/living/carbon/M, special = 0) +/obj/item/organ/appendix/Remove(mob/living/carbon/M, special = 0) for(var/datum/disease/appendicitis/A in M.viruses) A.cure() inflamed = 1 update_icon() ..() -/obj/item/organ/internal/appendix/Insert(mob/living/carbon/M, special = 0) +/obj/item/organ/appendix/Insert(mob/living/carbon/M, special = 0) ..() if(inflamed) M.AddDisease(new /datum/disease/appendicitis) -/obj/item/organ/internal/appendix/prepare_eat() +/obj/item/organ/appendix/prepare_eat() var/obj/S = ..() if(inflamed) S.reagents.add_reagent("????", 5) return S -/obj/item/organ/internal/shadowtumor +/obj/item/organ/shadowtumor name = "black tumor" desc = "A tiny black mass with red tendrils trailing from it. It seems to shrivel in the light." icon_state = "blacktumor" @@ -396,15 +401,15 @@ slot = "brain_tumor" var/health = 3 -/obj/item/organ/internal/shadowtumor/New() +/obj/item/organ/shadowtumor/New() ..() SSobj.processing |= src -/obj/item/organ/internal/shadowtumor/Destroy() +/obj/item/organ/shadowtumor/Destroy() SSobj.processing.Remove(src) ..() -/obj/item/organ/internal/shadowtumor/process() +/obj/item/organ/shadowtumor/process() if(isturf(loc)) var/turf/T = loc var/light_count = T.get_lumcount() diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm new file mode 100644 index 00000000000..050b0fefbd7 --- /dev/null +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -0,0 +1,48 @@ +/datum/surgery/prosthetic_replacement + name = "prosthetic replacement" + steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/add_prosthetic) + species = list(/mob/living/carbon/human) + possible_locs = list("r_arm", "l_arm", "l_leg", "r_leg", "head") + requires_bodypart = FALSE //need a missing limb + +/datum/surgery/prosthetic_replacement/can_start(mob/user, mob/living/carbon/target) + if(!ishuman(target)) + return 0 + var/mob/living/carbon/human/H = target + if(!H.get_bodypart(user.zone_selected)) //can only start if limb is missing + return 1 + + + +/datum/surgery_step/add_prosthetic + name = "add prosthetic" + implements = list(/obj/item/robot_parts = 100, /obj/item/bodypart = 100) + time = 32 + +/datum/surgery_step/add_prosthetic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/tool_body_zone + if(istype(tool, /obj/item/robot_parts)) + var/obj/item/robot_parts/RP = tool + tool_body_zone = RP.body_zone + else if(istype(tool, /obj/item/bodypart)) + var/obj/item/bodypart/L = tool + if(L.status != ORGAN_ROBOTIC) + user << "You need a robotic limb for this." + return -1 //fail + tool_body_zone = L.body_zone + if(target_zone == tool_body_zone) //so we can't replace a leg with an arm. + user.visible_message("[user] begins to replace [target]'s [parse_zone(target_zone)].", "You begin to replace [target]'s [parse_zone(target_zone)]...") + else + user << "[tool] isn't the right type for [parse_zone(target_zone)]." + +/datum/surgery_step/add_prosthetic/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + var/obj/item/bodypart/L + if(istype(tool, /obj/item/robot_parts)) + L = newBodyPart(target_zone, 1, 1) + user.drop_item() + qdel(tool) + else + L = tool + L.attach_limb(target) + user.visible_message("[user] successfully replaces [target]'s [parse_zone(target_zone)]!", "You succeed in replacing [target]'s [parse_zone(target_zone)].") + return 1 \ No newline at end of file diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 1573d010508..7117d276a76 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -8,7 +8,7 @@ name = "remove embedded objects" time = 32 accept_hand = 1 - var/obj/item/organ/limb/L = null + var/obj/item/bodypart/L = null /datum/surgery_step/remove_object/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -30,9 +30,9 @@ L.embedded_objects -= I if(objects > 0) - user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L.getDisplayName()]!", "You sucessfully remove [objects] objects from [H]'s [L.getDisplayName()].") + user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L]!", "You sucessfully remove [objects] objects from [H]'s [L.name].") else - user << "You find no objects embedded in [H]'s [L.getDisplayName()]!" + user << "You find no objects embedded in [H]'s [L]!" else user << "You can't find [target]'s [parse_zone(user.zone_selected)], let alone any objects embedded in it!" diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 2e63fae2b66..8bb3cf641a5 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -10,7 +10,7 @@ var/list/possible_locs = list() //Multiple locations -- c0 var/ignore_clothes = 0 //This surgery ignores clothes var/obj/item/organ/organ //Operable body part - + var/requires_bodypart = TRUE //Surgery available only when a bodypart is present, or only when it is missing. /datum/surgery/proc/can_start(mob/user, mob/living/carbon/target) // if 0 surgery wont show up in list @@ -43,7 +43,7 @@ //Check /mob/living/carbon/attackby for how surgery progresses, and also /mob/living/carbon/attack_hand. //As of Feb 21 2013 they are in code/modules/mob/living/carbon/carbon.dm, lines 459 and 51 respectively. //Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon) -// var/list/organs (/mob/living/carbon/human) is the LIMBS of a Mob. +// var/list/bodyparts (/mob/living/carbon/human) is the LIMBS of a Mob. //Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets. // /code/modules/surgery/multiple_location_example.dm contains steps to setup a multiple location operation. diff --git a/code/modules/surgery/tail_modification.dm b/code/modules/surgery/tail_modification.dm index 68aa3e4fd47..1b60df3f839 100644 --- a/code/modules/surgery/tail_modification.dm +++ b/code/modules/surgery/tail_modification.dm @@ -32,7 +32,7 @@ L.dna.species.mutant_bodyparts -= "waggingtail_lizard" if("spines" in L.dna.features) L.dna.features -= "spines" - var/obj/item/organ/severedtail/S = new(get_turf(target)) + var/obj/item/severedtail/S = new(get_turf(target)) S.color = "#[L.dna.features["mcolor"]]" S.markings = "[L.dna.features["tail"]]" L.update_body() @@ -54,7 +54,7 @@ /datum/surgery_step/attach_tail name = "attach tail" - implements = list(/obj/item/organ/severedtail = 100) + implements = list(/obj/item/severedtail = 100) time = 64 /datum/surgery_step/attach_tail/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) @@ -65,7 +65,7 @@ user.visible_message("[user] gives [L] a tail!", "You give [L] a tail. It adjusts to [L]'s melanin.") // fluff for color if(!(L.dna.features["mcolor"])) L.dna.features["mcolor"] = tool.color - var/obj/item/organ/severedtail/T = tool + var/obj/item/severedtail/T = tool L.dna.features["tail_lizard"] = T.markings L.dna.species.mutant_bodyparts += "tail_lizard" qdel(tool) diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index e7648cc9b7b..139a8530357 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -101,6 +101,7 @@ var/list/GPS_list = list() /obj/item/device/gps/internal icon_state = null + flags = ABSTRACT gpstag = "Eerie Signal" desc = "Report to a coder immediately." - invisibility = 100 \ No newline at end of file + invisibility = INVISIBILITY_MAXIMUM \ No newline at end of file diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 1baccb2e549..ef819cb7189 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -139,7 +139,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ with suppressors." item = /obj/item/weapon/gun/projectile/automatic/pistol - cost = 9 + cost = 7 /datum/uplink_item/dangerous/revolver name = "Syndicate Revolver" @@ -790,7 +790,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. for rapid healing, a medical HUD for quick identification of injured personnel, \ and other supplies helpful for a field medic." item = /obj/item/weapon/storage/firstaid/tactical - cost = 9 + cost = 4 include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/gang) /datum/uplink_item/device_tools/thermal @@ -839,15 +839,15 @@ var/list/uplink_items = list() // Global list so we only initialize this once. during gravitational generator failures. These reverse-engineered knockoffs of Nanotrasen's \ 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." item = /obj/item/clothing/shoes/magboots/syndie - cost = 3 + cost = 2 include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/c4 name = "Composition C-4" - desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls or connect \ - a signaler to its wiring to make it remotely detonable. It has a modifiable timer with a \ + desc = "C-4 is plastic explosive of the common variety Composition C. You can use it to breach walls, sabotage equipment, or connect \ + an assembly to it in order to alter the way it detonates. It has a modifiable timer with a \ minimum setting of 10 seconds." - item = /obj/item/weapon/c4 + item = /obj/item/weapon/grenade/plastic/c4 cost = 1 /datum/uplink_item/device_tools/c4bag @@ -856,13 +856,20 @@ var/list/uplink_items = list() // Global list so we only initialize this once. item = /obj/item/weapon/storage/backpack/dufflebag/syndie/c4 cost = 9 //10% discount! +/datum/uplink_item/device_tools/x4bag + name = "Bag of X-4 explosives" + desc = "Contains 3 X-4 plastic explosives. Similar, but more powerful than C-4. X-4 can be placed on a solid surface, such as a wall or window, and it will \ + blast through the wall, injuring anything on the opposite side, while being safer to the user. For when you want a wider, deeper, hole." + item = /obj/item/weapon/storage/backpack/dufflebag/syndie/x4 + cost = 4 // + /datum/uplink_item/device_tools/powersink name = "Power Sink" desc = "When screwed to wiring attached to a power grid and activated, this large device places excessive \ load on the grid, causing a stationwide blackout. The sink is large and cannot be stored in most \ traditional bags and boxes." item = /obj/item/device/powersink - cost = 10 + cost = 6 /datum/uplink_item/device_tools/singularity_beacon name = "Power Beacon" @@ -901,7 +908,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. of humanoids. It has two settings: intensity, which controls the power of the radiation, \ and wavelength, which controls how long the radiation delay is." item = /obj/item/device/rad_laser - cost = 5 + cost = 3 /datum/uplink_item/device_tools/assault_pod name = "Assault Pod Targetting Device" @@ -995,7 +1002,7 @@ var/list/uplink_items = list() // Global list so we only initialize this once. /datum/uplink_item/cyber_implants/spawn_item(turf/loc, obj/item/device/uplink/U) if(item) - if(findtext(item, /obj/item/organ/internal/cyberimp)) + if(findtext(item, /obj/item/organ/cyberimp)) return new /obj/item/weapon/storage/box/cyber_implants(loc, item) else return ..() @@ -1003,26 +1010,26 @@ var/list/uplink_items = list() // Global list so we only initialize this once. /datum/uplink_item/cyber_implants/thermals name = "Thermal Vision Implant" desc = "These cybernetic eyes will give you thermal vision. They must be implanted via surgery." - item = /obj/item/organ/internal/cyberimp/eyes/thermals + item = /obj/item/organ/cyberimp/eyes/thermals cost = 8 /datum/uplink_item/cyber_implants/xray name = "X-Ray Vision Implant" desc = "These cybernetic eyes will give you X-ray vision. They must be implanted via surgery." - item = /obj/item/organ/internal/cyberimp/eyes/xray + item = /obj/item/organ/cyberimp/eyes/xray cost = 10 /datum/uplink_item/cyber_implants/antistun name = "CNS Rebooter Implant" desc = "This implant will help you get back up on your feet faster after being stunned. \ It must be implanted via surgery." - item = /obj/item/organ/internal/cyberimp/brain/anti_stun + item = /obj/item/organ/cyberimp/brain/anti_stun cost = 12 /datum/uplink_item/cyber_implants/reviver name = "Reviver Implant" desc = "This implant will attempt to revive you if you lose consciousness. It must be implanted via surgery." - item = /obj/item/organ/internal/cyberimp/chest/reviver + item = /obj/item/organ/cyberimp/chest/reviver cost = 8 /datum/uplink_item/cyber_implants/bundle diff --git a/code/world.dm b/code/world.dm index cbd4046227d..478b3790af7 100644 --- a/code/world.dm +++ b/code/world.dm @@ -149,6 +149,13 @@ var/last_irc_status = 0 C << "PR: [input["announce"]]" #undef CHAT_PULLR + else if("crossmessage" in input) + if(!key_valid) + return + else + if(input["crossmessage"] == "Ahelp") + relay_msg_admins("HELP: [input["source"]] [input["message"]]") + /world/Reboot(var/reason, var/feedback_c, var/feedback_r, var/time) if (reason == 1) //special reboot, do none of the normal stuff if (usr) @@ -283,21 +290,13 @@ var/inerror = 0 else if (n > 0) features += "~[n] player" - /* - is there a reason for this? the byond site shows 'hosted by X' when there is a proper host already. - if (host) - features += "hosted by [host]" - */ - if (!host && config && config.hostedby) features += "hosted by [config.hostedby]" if (features) s += ": [jointext(features, ", ")]" - /* does this help? I do not know */ - if (src.status != s) - src.status = s + status = s #define FAILED_DB_CONNECTION_CUTOFF 5 var/failed_db_connections = 0 diff --git a/config/admins.txt b/config/admins.txt index 8db72174aa7..b5d7d797fff 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -114,6 +114,6 @@ coiax = Game Master RandomMarine = Game Master PKPenguin321 = Game Master TechnoAlchemist = Game Master - +Aloraydrel = Game Master diff --git a/config/config.txt b/config/config.txt index 2bab69b8652..f1b4078f00f 100644 --- a/config/config.txt +++ b/config/config.txt @@ -168,6 +168,12 @@ TICKLAG 0.9 ## Communication key for receiving data through world/Topic(), you don't want to give this out #COMMS_KEY default_pwd +## World address and port for server recieving cross server messages +#CROSS_SERVER_ADDRESS byond:\\address:port + +## Name that the server calls itself in communications +#CROSS_COMMS_NAME + ## Uncomment this to let players see their own notes (they can still be set by admins only) #SEE_OWN_NOTES diff --git a/config/tips.txt b/config/tips.txt index d7e342157af..c7f7241a456 100644 --- a/config/tips.txt +++ b/config/tips.txt @@ -130,15 +130,19 @@ As an Alien, you take double damage from all burn attacks, such as lasers, weldi As an Alien, resin floors not only regenerate your plasma supply, but also passively heal you. Fight on resin floors to gain a home turf advantage! As an Alien, the facehugger is by far your most powerful weapon because of its ability to instantly win a fight. Remember however that certain helmets, such as biohoods or space helmets will completely block facehugger attacks. As an Alien, you are unable to pick up or use any human items or machinery. Instead, you should focus on sabotaging APCs, computers, cameras and either stowing, spacing, or melting any weapons you find. -As the Blob, you will spawn from your character from between a minute to 5 minutes after the round starts. Use this time to find a safe and well hidden location and evaluate where you will strike! -As the Blob, you can do various sabotage before you spawn, such as spacing the armory or disabling R&D. +When fighting the Blob, you can hit it with an analyzer to check its chemical effects and the type of blob analyzed. Examining it with a research scanner active will also reveal this information. +As the Blob, you can place your core at any clear, unobserved, spot you can move to after 3 minutes have passed. If you wait too long, you will be automatically placed at a random location. Use this wait time to coordinate with any other overminds. As the Blob, keep your core some distance from space, as it is both expensive to expand onto space, easy to be attacked from, and does not count towards your win condition. Emitter platforms built in space are especially dangerous. As the Blob, you can randomly repick your reagent type if the crew has adapted and protected themselves against your current one. As the Blob, you fight a war of attrition: Take out medbay and fight in chokepoints to prevent continued assaults and coordinated burst damage attacks! As the Blob, remember that you can only expand onto tiles from cardinal directions, while the crew can attack you diagonally. Fight in narrow corridors or expand and widen across the width of the hallway to force confrontations where you can hit them! As the Blob, don't neglect the creation of factories. These create spores that carry your reagent and can chase crewmembers far further than you. Spores can also be rallied to swarm the crew and cause panic, and can even take over corpses to create much more dangerous blob zombies! +As the Blob, you can produce a Blobbernaut from a factory for 40 resources. Blobbernauts are smart, gradually regenerate near nodes, and apply your chemical when attacking, but die when too far from the blob or if their factory is killed. However, the factory used becomes fragile and stops spawning spores. As the Blob, you can expand by clicking, create strong blobs with ctrl-click, rally spores with middle-click, and remove blobs with alt-click. -As the Blob, removing strong blobs, resource nodes, factories, and nodes will give you 2, 15, 25, and 25 resources back, respectively. +As the Blob, removing strong blobs, resource nodes, factories, and nodes will give you 4, 15, 25, and 25 resources back, respectively. +As the Blob, talking will send a message to all other overminds and all Blobbernauts, allowing you to direct attacks and coordinate. +As a Blobbernaut, you can communicate with overminds and other Blobbernauts via :b. +As a Blobbernaut, your HUD shows your health and the core health of the overmind that created you. As a Revolutionary, you cannot convert a head of staff or someone who has a loyalty implant, such as a security officer or those they implant. Implants can however be surgically removed, and do not carry over with cloning. Take control of medbay to keep control of conversions! As a Revolutionary, cargo can be your best friend or your worst nightmare. In the best case scenario you will be able to order a limitless amount of guns and armor, in the worst case scenario security will take control and order a limitless number of loyalty implants to turn your fellow revolutionaries against you. As a Revolutionary, your main power comes from how quickly you spread. Convert people as fast as you can and overwhelm the heads of staff before security can arm up. diff --git a/html/changelog.html b/html/changelog.html index 93b26f694c5..c30bb82c7f1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,214 @@ -->
+

07 May 2016

+

Robustin updated:

+
    +
  • A small pantry has been added to SW maintenance.
  • +
+

nullbear updated:

+
    +
  • Makes Shift+Middleclick the hotkey for pointing.
  • +
+

phil235 updated:

+
    +
  • DISMEMBERMENT! Humans can now lose their bodyparts. Explosions and being attacked with a heavy sharp item on a specific bodypart can cause dismemberment.
  • +
  • You can't be handcuffed or legcuffed if you're missing an arm or leg. You can't use items when you have no legs, your arms are too busy helping you crawl, unless your are buckled to a chair. You're slower when missing a leg.
  • +
  • You lose organs and items if the bodypart they are inside gets cut off. You can always retrieve them by cutting the dropped bodypart with a sharp object.
  • +
  • Medbay can replace your missing limbs with robotic parts via surgery, or amputate you.
  • +
  • Changelings do not die when decapitated! They can regrow all their limbs with Fleshmend, or just one arm with Arm Blade or Organic Shield.
  • +
  • Your chest cannot be dropped, but it will spill its organs onto the ground when dismembered.
  • +
+ +

05 May 2016

+

Joan updated:

+
    +
  • Revenants are slower while revealed.
  • +
  • Revenants can no longer cast inside dense objects.
  • +
  • Lying down will cure Blight much, much faster.
  • +
+

\"Macho Man\" Randy Savage updated:

+
    +
  • OOOHHH YEAAAAHHHH
  • +
  • SNAP INTO A JLIM SIM WITH THE ALL NEW WRESTLING BELT
  • +
  • YOU CAN FREAKOUT YOUR OPPONENTS WITH THE 5 HOT MOVES ON THIS BELT YEAH
  • +
  • PRAY TO THE LOCAL SPACE GODS TO EXCHANGE YOUR TELECRYSTALS TO ENSURE THE CREAM RISES TO THE TOP
  • +
+ +

04 May 2016

+

Fox McCloud updated:

+
    +
  • shock revolver projectiles are now energy instead of bullets
  • +
+

Joan updated:

+
    +
  • Cultists no longer communicate via tomes.
  • +
  • Cultists now communicate via the 'Communion' action button.
  • +
  • Examining the blob with an active research scanner or medical hud will display effects, akin to hitting it with an analyzer.
  • +
  • Improved medical HUDs to work on all living creatures.
  • +
  • Drones and swarmers, being machines, require a diagnostic HUD for analysis instead.
  • +
+

TechnoAlchemist updated:

+
    +
  • You can now craft cloaks from the scales of fallen ash drakes, look for the recipe in tablecrafting!
  • +
+

coiax updated:

+
    +
  • The Service and the Standard cyborg module now have a spraycan built in, for hijinks and passing on important urban messages. The Service cyborg module also has a cyborg-hand labeler, in case anything needs to be labelled.
  • +
  • Centcom Suicide Prevention wishes to remind the station: Please do not kill yourself with a hand labeler.
  • +
+

xxalpha updated:

+
    +
  • Fixed the mk-honk prototype shoes.
  • +
+ +

03 May 2016

+

coiax, Robustin updated:

+
    +
  • Changeling Fleshmend is much less effective when used repeatedly in a short time. Changeling Panacea is much more effective at purging reagents, reducing radiation and now reduces braindamage.
  • +
+ +

02 May 2016

+

Joan updated:

+
    +
  • Blob spores spawn from factories 2 seconds faster, but the factory goes on cooldown when any of its spores die.
  • +
  • You can examine tomes, soulstones, and construct shells to see what you can do with them.
  • +
  • Releasing a shade from a soulstone now allows you to reuse that soulstone for capturing shades or souls, instead of preventing the stone's use forever if the shade dies.
  • +
  • Runes now actually pulse red on failure.
  • +
  • The Summon Cultist rune no longer includes the cultists invoking it in the selection menu.
  • +
  • Imperfect Communication renamed to Emergency Communication.
  • +
  • You can no longer hide the Nar-Sie rune with a Talisman of Veiling/Revealing.
  • +
+

Kor updated:

+
    +
  • Engineering cyborgs now have internal blueprints.
  • +
+

Lzimann updated:

+
    +
  • Automatic nexus placing time changed from 2 to 15 minutes.
  • +
  • Prophet's gear(hat and staff) prioritizes the backpack instead of automatically equipping.
  • +
  • Divine telepathy and prophet to god speak now have a follow button for ghosts.
  • +
  • Divine telepathy and prophet to god speak now has the god's color.
  • +
  • CTF spawn protection trap is no longer constructable
  • +
+

Mercenaryblue updated:

+
    +
  • Drastically reduced the chances of eye damage when throwing a paper plane.
  • +
+

RandomMarine updated:

+
    +
  • Medical HUDs improved. To better prioritize patients, subjects deep into critical condition have a blinking red outline around the entire HUD icon, and will blink more rapidly when very close to death.
  • +
+

TechnoAlchemisto updated:

+
    +
  • Security uniforms have been made more professional, and more tactical.
  • +
+

TrustyGun updated:

+
    +
  • By crafting together a legion skull, a goliath steak, ketchup, and capsaicin oil, you can create Stuffed Legion! Be careful, it's hot.
  • +
+

coiax updated:

+
    +
  • Centcom Department of [REDACTED] have announced a change of supplier of [EXPLETIVE DELETED]. As such, for security reasons, the absinthe [MOVE ALONG CITIZEN] will instead be [NOTHING TO SEE HERE]. We hope that this will not affect the performance of the [INFORMATION ABOVE YOUR SECURITY CLEARANCE].
  • +
+

nullbear updated:

+
    +
  • A reminder for crew to avoid mopping floors in cold rooms, as the water will freeze and provide a dangerous slipping hazard known as 'ice'. Running on it is not recommended.
  • +
  • Frostoil is an effective chemical for rapidly cooling areas in the event of a fire.
  • +
  • Added X4, a breaching charge more destructive than C4, it can be purchased from uplinks.
  • +
  • C4 can be used with assemblies.
  • +
  • Fixes chembomb recipe to use any matter bin. Again.
  • +
  • ARG's disappear once finished reacting.
  • +
+ +

30 April 2016

+

Joan updated:

+
    +
  • Blobs attempting to attack the supermatter will instead be eaten by it.
  • +
  • This doesn't mean throwing a supermatter shard at the blob is a good idea; blobs attacking it will gradually damage it, eventually resulting in a massive explosion, and it will not consume blobs if on a space turf.
  • +
  • Hitting a locker or crate with an ID, PDA with ID, or wallet with ID will try to toggle the lock instead of trying to open it.
  • +
  • Cable coils, cablecuffs, and zipties now all have properly colored inhands.
  • +
+

Kor updated:

+
    +
  • Megafauna have been added to lavaland.
  • +
  • Ash Drakes have been spotted roaming the wastes. Use your GPS to track their fiery signals.
  • +
  • You can now knock on the Necropolis door, but it's probably best that you don't.
  • +
+

Mercenaryblue updated:

+
    +
  • Adds a basic paper plane to the game. Fold paper with alt-clicking.
  • +
  • Paper planes are now fully compatible with every stamps on station.
  • +
+

bgobandit updated:

+
    +
  • Nanotrasen has released Cards Against Spess! Visit your local library for a copy. Warning: may cause breakage of the fourth wall.
  • +
+ +

29 April 2016

+

Bawhoppen updated:

+
    +
  • Several lesser-used uplink's TC cost have been rebalanced.
  • +
  • Steckhin down from 9TC to 7TC.
  • +
  • Tactical medkit down from 9TC to 4TC.
  • +
  • Syndicate magboots from 3TC to 2TC.
  • +
  • Powersinks down from 10TC to 6TC.
  • +
  • Stealth rad-laser down from 5TC to 3TC.
  • +
  • Bundles have been updated accordingly.
  • +
+

Incoming5643 updated:

+
    +
  • The staff/wand of door creation can now also be used to open airlock doors.
  • +
  • Doors spawned by the staff/wand now start open. Keep this in mind the next time you try to turn every wall on the escape shuttle into a door.
  • +
+

Robustin updated:

+
    +
  • The Teleport Other, Veil, Imbue, Reveal, Disguise, Blood Drain, Timestop, Stun, Deafen, Blind, Armaments, Construct Shell and Summon Tome runes are gone.
  • +
  • Disguise, Veil/Reveal, Construct Shell and Armaments are now talismans. The Construction talisman requires 25 sheets of metal.
  • +
  • Cultists will now receive a warning when attempting to use emergency communion or create the Nar-Sie rune
  • +
  • Cultists can now create talismans with a super-simple Talisman-Creation rune. It takes about 10 seconds to invoke and will present a menu of all the talisman choices available. Its as simple as tossing the paper on, clicking the rune, and selecting your talisman.
  • +
  • Cultists now have a proc, "How to Play" that will give a basic explanation of how to succeed as a cultist.
  • +
  • The new Talisman of Horror is a stealthy talisman that will cause hallucinations in the victim. Great for undermining security without having to commit to murder them in middle of the hall.
  • +
  • Creating the Summon Nar-Sie rune does takes slightly less time, but now adds a 3x3 square of red barrier shields (60hp each) to prevent the rune-scriber from being bumped by other idiots. This works in conjunction with the rune's warning to give crew a chance to stop the summoning. Manifest ghost has a weaker 1x1 shield to prevent bumps as well.
  • +
  • Talismans are now color-coded by their effect so you can easily organize and deploy talismans.
  • +
  • You can now make colored paper in the washing machine using crayons or stamps, honk.
  • +
  • The Electromagnetic Disruption rune will now scale with the number of cultists invoking the rune. **A full 9-cultist invocation will EMP the entire station!**
  • +
  • Armaments will now give the recipient a new cult bola.
  • +
  • The new Talisman of Shackling will apply handcuffs directly to the victim. These cuffs will disappear when removed.
  • +
  • Cult slur is a little less potent so victims might be able to squeeze in a coherent word or two if you let them keep jabbering on the radio, stun talismans now have less of a health cost and the stun is back to 10 seconds, from 9.
  • +
  • Rune and Talisman names now give a much clearer idea of what they do.
  • +
  • The following changes are courtesy of ChangelingRain
  • +
  • The Teleport rune now allows cultists to select which rune to teleport to, and teleports everything on it.
  • +
  • Veil and Reveal are merged into Talisman of Veiling. Veiling has two uses, the first use will hide and the second use will reveal.
  • +
  • New icons for the cult bola
  • +
  • You can now attack fellow cultists with a Talisman of Arming to arm them with robes and a sword.
  • +
  • You can now only place one rune per tile.
  • +
  • Ghosts are notified when a new manifest rune is created.
  • +
+

TechnoAlchemisto updated:

+
    +
  • Sinew can now be fashioned into restraints.
  • +
+

coiax updated:

+
    +
  • Internals Crate now contains breath masks and small tanks.
  • +
  • Metal foam grenade box crate added for 1000 points
  • +
  • Added two Engineering Mesons to Engineering Gear Crate
  • +
  • Engineering Gear now costs 1300
  • +
  • Breach Shield Generator Crate added for 2500 points
  • +
  • Grounding Rod Crate added for 1700 points
  • +
  • PACMAN Generator Crate added for 2500
  • +
  • Defibrillator Crate added for 2500
  • +
  • Added more helmets to the Laser Tag Crate.
  • +
  • Nanotrasen Customs report that some wide band suppliers have been providing "alternative" firing pins. Nanotrasen reminds all crewmembers that contraband is contraband.
  • +
  • Contraband crates now appear visually similar to legitimate crates.
  • +
  • The cargo shuttle's normal transit time has been restored.
  • +
+

nullbear updated:

+
    +
  • Adds a preference option, allowing players to toggle whether recipes with no matching components should be hidden.
  • +
+

28 April 2016

Bawhoppen updated:

    @@ -92,6 +300,7 @@

    TechnoAlchemisto updated:

    • You can now craft skull helmets from bones.
    • +
    • Syndicate bombs are now harder to detect

    27 April 2016

    @@ -371,202 +580,6 @@
  • A working drone shell dispenser is now on display in MetaStation's museum, displaying the virtue of the tireless little workers!
  • Dreamstation now has a drone shell dispenser in the Toxins Launch Room
- -

09 April 2016

-

GunHog updated:

-
    -
  • Aliens may now force open unbolted, unwelded airlocks. Unpowered airlocks open faster than powered ones. Has a cool sound provided by @Ultimate-Chimera!
  • -
  • Alien Drone health increased to 125 hp.
  • -
  • Alien drone is now faster!
  • -
  • Alien egg and larva maturation times halved.
  • -
  • Resin membrane health increased to 160 hp.
  • -
  • Aliens may now open firelocks.
  • -
  • Aliens may now unweld scrubbers and vents. (From the outside!)
  • -
  • Droppers no longer affect aliens.
  • -
-

Joan updated:

-
    -
  • You can no longer drop survival capsules on top of dense objects, such as the windows in the emergency shuttle. You can still drop them on non-dense objects and mobs, however.
  • -
  • Swarmers can now deconstruct objects simply by clicking.
  • -
  • Swarmers can still teleport mobs away via ctrl-click.
  • -
  • Emps will now properly damage swarmers.
  • -
-

Kor updated:

-
    -
  • Added wisp lanterns to necropolis chests.
  • -
  • Added red/blue cube pairs to necropolis chests.
  • -
  • Added meat hooks to necropolis chests.
  • -
  • Added immortality talismans to necropolis chests.
  • -
  • Added paradox bags to necropolis chests.
  • -
  • Ripley drills work again. Go tear up lavaland.
  • -
-

PKPenguin321 updated:

-
    -
  • Goofball's grab nerf has been reverted.
  • -
-

TechnoAlchemisto updated:

-
    -
  • Pickaxe upgrades are now better.
  • -
-

coiax updated:

-
    -
  • Efficiency Station Testing Lab now has a Drone Shell Dispenser
  • -
  • Fixed an issue with a door on the Golem Ship
  • -
  • The unfathomable entity Carp'sie has blessed vir followers with mysterious carp guardians.
  • -
  • Nanotrasen Cyborgs are now able to empty ore boxes without human assistance
  • -
  • Ore boxes are now craftable with 4 planks of wood
  • -
  • Ore boxes now drop their contents when destroyed, or dismantled with a crowbar
  • -
-

coiax, bobdobbington, Core0verload updated:

-
    -
  • An experimental plant DNA manipulator, based on machinery recovered from ancient seed vaults, has been installed in the Botany department.
  • -
- -

07 April 2016

-

Kor updated:

-
    -
  • The Laser Cannon in RD has been replaced with the Accelerator Laser Cannon. Try it out!
  • -
  • Mechas now have armour facings. Attacking the front will deal far less damage, while attacking the back will deal massive bonus damage.
  • -
  • EMPs now deal far less damage/drain to mechas.
  • -
-

Kor and Ausops updated:

-
    -
  • Survival pod interiors have been redone.
  • -
  • Survival pods now contain a stationary GPS computer.
  • -
  • You can now toggle your GPS off with alt+click.
  • -
-

bgobandit updated:

-
    -
  • Due to budget cuts, Nanotrasen is no longer utilizing copy-protected paper for its classified documents. Fortunately, our world-class security team has always prevented any thefts or photocopies from being made!
  • -
  • Secret documents can be photocopied. If you have an objective to steal any set of documents, a photocopy will be accepted. If you must steal red or blue documents, a photocopy will NOT be accepted. Enterprising traitors can forge the red/blue seal with a crayon to take advantage of this.
  • -
- -

06 April 2016

-

CoreOverload updated:

-
    -
  • You can now put slimes in stasis by exposing them to room temp CO2. Useful for both fighting the slimes and safely storing them.
  • -
-

Erwgd updated:

-
    -
  • The autolathe can now make hydroponics tools! Access the design routines in the Misc. category of the machine.
  • -
-

LanCartwright updated:

-
    -
  • Custom viruses with stealth values of 3 or above are now invisible on the PANDEMIC and no longer visible on health huds.
  • -
-

MrStonedOne updated:

-
    -
  • Centcom is happy to report that our single sided windows and our windoors should once again create an airtight seal.
  • -
-

bgobandit updated:

-
    -
  • Honk! Nanotrasen's clowning and development department has invented the clown megaphone, standard in all clowning loadouts! Honk honk!
  • -
- -

05 April 2016

-

Erwgd updated:

-
    -
  • Utility belts of all kinds can now accept gloves. Most belts, except janitorial belts, may now also hold station bounced radios.
  • -
  • Hazard vests and most jackets can carry a station bounced radio as well. Labcoats can be used to store a handheld crew monitor.
  • -
  • The autolathe can now make toolboxes.
  • -
-

Joan updated:

-
    -
  • Adds protector holoparasites to traitor holoparasite injectors.
  • -
  • Protector holoparasites cause the summoner to teleport to them when out of range, instead of the other way around.
  • -
  • Protector holoparasites have two modes; Combat, where they do and take medium damage, and Protection, where they do and take almost no damage, but move slightly slower.
  • -
  • Explosive Holoparasites no longer teleport non-mobs when attacking, but have a higher chance to teleport mobs.
  • -
  • Explosive Holoparasite bombs no longer trigger on their summoner or any other parasites their summoner has.
  • -
  • Ranged Holoparasites no longer have nightvision active by default. It can still be toggled on.
  • -
  • Ranged Holoparasite snares no longer alert if the crossing mob is their summoner or one of the parasites their summoner has.
  • -
  • Ranged Holoparasites are slightly less visible in scout mode.
  • -
  • Standard Holoparasites attack 20% faster than other parasite types.
  • -
  • Support Holoparasite beacons no longer require safe atmospheric conditions, but the warp channel takes slightly longer, and is preceded with a visible message.
  • -
  • Zombies can no longer destroy more than one airlock at a time.
  • -
  • The mining station has been updated.
  • -
-

MrStonedOne updated:

-
    -
  • Centcom is glad to announce the end of sending workers to our control group for space exposure testing, a fake station in "space" that noticeably had air in "space".
  • -
-

TechnoAlchemisto updated:

-
    -
  • Detective scanners are now smaller.
  • -
  • Pickaxes now fit in explorer suit exosuit slots.
  • -
-

bgobandit updated:

-
    -
  • Alt-clicking a fire extinguisher cabinet opens and closes it. That is all.
  • -
- -

04 April 2016

-

TechnoAlchemisto updated:

-
    -
  • The recipes for some Trekchems are now back in the game
  • -
  • Bicaridine can be made with carbon, oxygen, and sugar.
  • -
  • Kelotane can be made with silicon and carbon.
  • -
  • Antitoxin can be made with nitrogen, silicon, and potassium
  • -
  • tricordrazine can be made by combining all three.
  • -
- -

03 April 2016

-

Erwgd updated:

-
    -
  • Our valued colleagues in the security department are reminded to search boots for hidden items (such as knives or syringes) as part of standard search procedures. Alt-click a pair of boots to remove any hidden items.
  • -
-

Isratosh updated:

-
    -
  • Fixed rudimentary transform not working properly on ghosts with minds.
  • -
  • Admin logs for bluespace capsules not activated on the mining Z level.
  • -
- -

02 April 2016

-

Eaglendia updated:

-
    -
  • Central Command has released a new, more functional run of their most stylish fashion line.
  • -
  • Head of Staff cloaks can now hold specific items - the antique laser gun for the Captain, the replica energy gun for the Head of Security, the hypospray for the Chief Medical Officer, the Hand Teleporter or RPED for the Research Director, and the RCD or RPD for the Chief Engineer.
  • -
- -

01 April 2016

-

Erwgd updated:

-
    -
  • Weed Killer bottles and Pest Killer bottles now contain 50 units.
  • -
  • The biogenerator can now make empty bottles and black pepper.
  • -
-

Isratosh updated:

-
    -
  • Added an admin jump button to explosion logs.
  • -
-

Joan updated:

-
    -
  • Traitors can now buy charger holoparasites.
  • -
  • Charger holoparasites move extremely fast, do medium damage, and can charge at a location, damaging the first target it hits and forcing them to drop any items they're holding.
  • -
-

Kor updated:

-
    -
  • Mechas are now storm proof
  • -
  • Kinetic Accelerators now require two hands to fire, but are free standard gear for miners.
  • -
  • All mining scanners are now automatic, with the advanced version having longer range.
  • -
  • The QM and HoP no longer have spare vouchers.
  • -
  • You can buy a pack of two survival capsules with your mining voucher.
  • -
  • Mining Bots will no longer cause friendly fire incidents. They'll hold fire if you are between them and their target
  • -
  • There are now four different mining drone upgrades available in the vendor.
  • -
  • Resonators can now have more fields and deal more melee damage.
  • -
  • Lavaland miners now have explorer's suits instead of hardsuits. Sprites by Ausops.
  • -
  • You can now butcher Goliath's for their meat. It cooks well in lava.
  • -
-

Shadowlight213 updated:

-
    -
  • Clients now have a volume preference for admin-played sounds.
  • -
-

TehZombehz updated:

-
    -
  • The 'Plasteel Chef' program has provided station chefs with complimentary ingredient packages. There are several package themes, and chefs are provided a random package on arrival.
  • -
-

coiax updated:

-
    -
  • Free Golems on Lavaland have been naming their newborn siblings with a wider range of geology terms
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 5c6ff3f93c4..c76b5b48f66 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4703,3 +4703,211 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: The warden's locker now contains krav maga gloves. TechnoAlchemisto: - rscadd: You can now craft skull helmets from bones. + - rscadd: Syndicate bombs are now harder to detect +2016-04-29: + Bawhoppen: + - rscadd: Several lesser-used uplink's TC cost have been rebalanced. + - tweak: Steckhin down from 9TC to 7TC. + - tweak: Tactical medkit down from 9TC to 4TC. + - tweak: Syndicate magboots from 3TC to 2TC. + - tweak: Powersinks down from 10TC to 6TC. + - tweak: Stealth rad-laser down from 5TC to 3TC. + - tweak: Bundles have been updated accordingly. + Incoming5643: + - rscadd: The staff/wand of door creation can now also be used to open airlock doors. + - rscadd: Doors spawned by the staff/wand now start open. Keep this in mind the + next time you try to turn every wall on the escape shuttle into a door. + Robustin: + - rscdel: The Teleport Other, Veil, Imbue, Reveal, Disguise, Blood Drain, Timestop, + Stun, Deafen, Blind, Armaments, Construct Shell and Summon Tome runes are gone. + - rscadd: Disguise, Veil/Reveal, Construct Shell and Armaments are now talismans. + The Construction talisman requires 25 sheets of metal. + - rscadd: Cultists will now receive a warning when attempting to use emergency communion + or create the Nar-Sie rune + - rscadd: Cultists can now create talismans with a super-simple Talisman-Creation + rune. It takes about 10 seconds to invoke and will present a menu of all the + talisman choices available. Its as simple as tossing the paper on, clicking + the rune, and selecting your talisman. + - rscadd: Cultists now have a proc, "How to Play" that will give a basic explanation + of how to succeed as a cultist. + - rscadd: The new Talisman of Horror is a stealthy talisman that will cause hallucinations + in the victim. Great for undermining security without having to commit to murder + them in middle of the hall. + - rscadd: Creating the Summon Nar-Sie rune does takes slightly less time, but now + adds a 3x3 square of red barrier shields (60hp each) to prevent the rune-scriber + from being bumped by other idiots. This works in conjunction with the rune's + warning to give crew a chance to stop the summoning. Manifest ghost has a weaker + 1x1 shield to prevent bumps as well. + - rscadd: Talismans are now color-coded by their effect so you can easily organize + and deploy talismans. + - rscadd: You can now make colored paper in the washing machine using crayons or + stamps, honk. + - rscadd: The Electromagnetic Disruption rune will now scale with the number of + cultists invoking the rune. **A full 9-cultist invocation will EMP the entire + station!** + - rscadd: Armaments will now give the recipient a new cult bola. + - rscadd: The new Talisman of Shackling will apply handcuffs directly to the victim. + These cuffs will disappear when removed. + - tweak: Cult slur is a little less potent so victims might be able to squeeze in + a coherent word or two if you let them keep jabbering on the radio, stun talismans + now have less of a health cost and the stun is back to 10 seconds, from 9. + - tweak: Rune and Talisman names now give a much clearer idea of what they do. + - experiment: The following changes are courtesy of ChangelingRain + - rscadd: The Teleport rune now allows cultists to select which rune to teleport + to, and teleports everything on it. + - rscadd: Veil and Reveal are merged into Talisman of Veiling. Veiling has two uses, + the first use will hide and the second use will reveal. + - rscadd: New icons for the cult bola + - tweak: You can now attack fellow cultists with a Talisman of Arming to arm them + with robes and a sword. + - tweak: You can now only place one rune per tile. + - tweak: Ghosts are notified when a new manifest rune is created. + TechnoAlchemisto: + - rscadd: Sinew can now be fashioned into restraints. + coiax: + - tweak: Internals Crate now contains breath masks and small tanks. + - rscadd: Metal foam grenade box crate added for 1000 points + - rscadd: Added two Engineering Mesons to Engineering Gear Crate + - tweak: Engineering Gear now costs 1300 + - rscadd: Breach Shield Generator Crate added for 2500 points + - rscadd: Grounding Rod Crate added for 1700 points + - rscadd: PACMAN Generator Crate added for 2500 + - rscadd: Defibrillator Crate added for 2500 + - rscadd: Added more helmets to the Laser Tag Crate. + - rscadd: Nanotrasen Customs report that some wide band suppliers have been providing + "alternative" firing pins. Nanotrasen reminds all crewmembers that contraband + is contraband. + - rscadd: Contraband crates now appear visually similar to legitimate crates. + - bugfix: The cargo shuttle's normal transit time has been restored. + nullbear: + - rscadd: Adds a preference option, allowing players to toggle whether recipes with + no matching components should be hidden. +2016-04-30: + Joan: + - rscadd: Blobs attempting to attack the supermatter will instead be eaten by it. + - experiment: This doesn't mean throwing a supermatter shard at the blob is a good + idea; blobs attacking it will gradually damage it, eventually resulting in a + massive explosion, and it will not consume blobs if on a space turf. + - tweak: Hitting a locker or crate with an ID, PDA with ID, or wallet with ID will + try to toggle the lock instead of trying to open it. + - imageadd: Cable coils, cablecuffs, and zipties now all have properly colored inhands. + Kor: + - rscadd: Megafauna have been added to lavaland. + - rscadd: Ash Drakes have been spotted roaming the wastes. Use your GPS to track + their fiery signals. + - rscadd: You can now knock on the Necropolis door, but it's probably best that + you don't. + Mercenaryblue: + - rscadd: Adds a basic paper plane to the game. Fold paper with alt-clicking. + - rscadd: Paper planes are now fully compatible with every stamps on station. + bgobandit: + - rscadd: 'Nanotrasen has released Cards Against Spess! Visit your local library + for a copy. Warning: may cause breakage of the fourth wall.' +2016-05-02: + Joan: + - tweak: Blob spores spawn from factories 2 seconds faster, but the factory goes + on cooldown when any of its spores die. + - experiment: You can examine tomes, soulstones, and construct shells to see what + you can do with them. + - rscadd: Releasing a shade from a soulstone now allows you to reuse that soulstone + for capturing shades or souls, instead of preventing the stone's use forever + if the shade dies. + - imageadd: Runes now actually pulse red on failure. + - rscadd: The Summon Cultist rune no longer includes the cultists invoking it in + the selection menu. + - tweak: Imperfect Communication renamed to Emergency Communication. + - rscdel: You can no longer hide the Nar-Sie rune with a Talisman of Veiling/Revealing. + Kor: + - rscadd: Engineering cyborgs now have internal blueprints. + Lzimann: + - tweak: Automatic nexus placing time changed from 2 to 15 minutes. + - tweak: Prophet's gear(hat and staff) prioritizes the backpack instead of automatically + equipping. + - rscadd: Divine telepathy and prophet to god speak now have a follow button for + ghosts. + - rscadd: Divine telepathy and prophet to god speak now has the god's color. + - bugfix: CTF spawn protection trap is no longer constructable + Mercenaryblue: + - tweak: Drastically reduced the chances of eye damage when throwing a paper plane. + RandomMarine: + - tweak: Medical HUDs improved. To better prioritize patients, subjects deep into + critical condition have a blinking red outline around the entire HUD icon, and + will blink more rapidly when very close to death. + TechnoAlchemisto: + - tweak: Security uniforms have been made more professional, and more tactical. + TrustyGun: + - rscadd: By crafting together a legion skull, a goliath steak, ketchup, and capsaicin + oil, you can create Stuffed Legion! Be careful, it's hot. + coiax: + - rscadd: Centcom Department of [REDACTED] have announced a change of supplier of + [EXPLETIVE DELETED]. As such, for security reasons, the absinthe [MOVE ALONG + CITIZEN] will instead be [NOTHING TO SEE HERE]. We hope that this will not affect + the performance of the [INFORMATION ABOVE YOUR SECURITY CLEARANCE]. + nullbear: + - rscadd: A reminder for crew to avoid mopping floors in cold rooms, as the water + will freeze and provide a dangerous slipping hazard known as 'ice'. Running + on it is not recommended. + - rscadd: Frostoil is an effective chemical for rapidly cooling areas in the event + of a fire. + - rscadd: Added X4, a breaching charge more destructive than C4, it can be purchased + from uplinks. + - rscadd: C4 can be used with assemblies. + - bugfix: Fixes chembomb recipe to use any matter bin. Again. + - bugfix: ARG's disappear once finished reacting. +2016-05-03: + coiax, Robustin: + - tweak: Changeling Fleshmend is much less effective when used repeatedly in a short + time. Changeling Panacea is much more effective at purging reagents, reducing + radiation and now reduces braindamage. +2016-05-04: + Fox McCloud: + - tweak: shock revolver projectiles are now energy instead of bullets + Joan: + - rscdel: Cultists no longer communicate via tomes. + - rscadd: Cultists now communicate via the 'Communion' action button. + - rscadd: Examining the blob with an active research scanner or medical hud will + display effects, akin to hitting it with an analyzer. + - rscadd: Improved medical HUDs to work on all living creatures. + - rscadd: Drones and swarmers, being machines, require a diagnostic HUD for analysis + instead. + TechnoAlchemist: + - rscadd: You can now craft cloaks from the scales of fallen ash drakes, look for + the recipe in tablecrafting! + coiax: + - rscadd: The Service and the Standard cyborg module now have a spraycan built in, + for hijinks and passing on important urban messages. The Service cyborg module + also has a cyborg-hand labeler, in case anything needs to be labelled. + - rscadd: 'Centcom Suicide Prevention wishes to remind the station: Please do not + kill yourself with a hand labeler.' + xxalpha: + - bugfix: Fixed the mk-honk prototype shoes. +2016-05-05: + Joan: + - tweak: Revenants are slower while revealed. + - rscdel: Revenants can no longer cast inside dense objects. + - tweak: Lying down will cure Blight much, much faster. + \"Macho Man\" Randy Savage: + - rscadd: OOOHHH YEAAAAHHHH + - rscadd: SNAP INTO A JLIM SIM WITH THE ALL NEW WRESTLING BELT + - rscadd: YOU CAN FREAKOUT YOUR OPPONENTS WITH THE 5 HOT MOVES ON THIS BELT YEAH + - rscadd: PRAY TO THE LOCAL SPACE GODS TO EXCHANGE YOUR TELECRYSTALS TO ENSURE THE + CREAM RISES TO THE TOP +2016-05-07: + Robustin: + - rscadd: A small pantry has been added to SW maintenance. + nullbear: + - rscadd: Makes Shift+Middleclick the hotkey for pointing. + phil235: + - rscadd: DISMEMBERMENT! Humans can now lose their bodyparts. Explosions and being + attacked with a heavy sharp item on a specific bodypart can cause dismemberment. + - rscadd: You can't be handcuffed or legcuffed if you're missing an arm or leg. + You can't use items when you have no legs, your arms are too busy helping you + crawl, unless your are buckled to a chair. You're slower when missing a leg. + - rscadd: You lose organs and items if the bodypart they are inside gets cut off. + You can always retrieve them by cutting the dropped bodypart with a sharp object. + - rscadd: Medbay can replace your missing limbs with robotic parts via surgery, + or amputate you. + - rscadd: Changelings do not die when decapitated! They can regrow all their limbs + with Fleshmend, or just one arm with Arm Blade or Organic Shield. + - rscadd: Your chest cannot be dropped, but it will spill its organs onto the ground + when dismembered. diff --git a/html/changelogs/AutoChangeLog-pr-17007.yml b/html/changelogs/AutoChangeLog-pr-17007.yml deleted file mode 100644 index ce9241fc650..00000000000 --- a/html/changelogs/AutoChangeLog-pr-17007.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: TechnoAlchemisto -delete-after: True -changes: - - rscadd: "Syndicate bombs are now harder to detect" diff --git a/html/changelogs/__CHANGELOG_README.txt b/html/changelogs/__CHANGELOG_README.txt index b15854c38ac..048d67d3d21 100644 --- a/html/changelogs/__CHANGELOG_README.txt +++ b/html/changelogs/__CHANGELOG_README.txt @@ -4,6 +4,8 @@ Changelogs are included with commits as text .yml files created individually by TO MAKE A CHANGELOG .YML ENTRRY +0. Consider carefully if a change you make really needs a changelog, and if it does how many lines should be dedicated to it. A set of changes with no forward facing player effects like a refactor almost certainly doesn't need a changelog, nor does something that makes itself obvious during the normal course of play like adding an action button to an item players already commonly pick up. Likewise if you DO need a changelog consider packaging similar changes under a generalized line instead of listing out every little change as its own thing. Only you can prevent changelog clutter. + 1. Make a copy of the file example.yml in html/changelogs and rename it to [YOUR USERNAME]-PR-[YOUR PR NUMBER].yml (the pr and pr number are organizational and can be ignored if you so wish) 2. Change the author to yourself diff --git a/icons/effects/genetics.dmi b/icons/effects/genetics.dmi index 768be9b9231..2a4c02d38f3 100644 Binary files a/icons/effects/genetics.dmi and b/icons/effects/genetics.dmi differ diff --git a/icons/effects/weather_effects.dmi b/icons/effects/weather_effects.dmi index 57d92f17b6b..215cf53556f 100644 Binary files a/icons/effects/weather_effects.dmi and b/icons/effects/weather_effects.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 7dee0928ecb..365d550bce6 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 7306ae17f74..06905f87d76 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/augments.dmi b/icons/mob/augments.dmi index 0600a4fb669..2b7239ba1a9 100644 Binary files a/icons/mob/augments.dmi and b/icons/mob/augments.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 04204d0eb95..1073f20a6fd 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 7a45a41000e..7ff3d653fec 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 2c4309a7893..80fd29fbd21 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi new file mode 100644 index 00000000000..01cec19a8b2 Binary files /dev/null and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi new file mode 100644 index 00000000000..e6a22fd6649 Binary files /dev/null and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index a46ec15610d..c70f29f07f7 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index cc63b0497cf..d39464c712c 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/lavaland/dragon.dmi b/icons/mob/lavaland/dragon.dmi new file mode 100644 index 00000000000..7e44b775de8 Binary files /dev/null and b/icons/mob/lavaland/dragon.dmi differ diff --git a/icons/mob/lavaland/lavaland_monsters.dmi b/icons/mob/lavaland/lavaland_monsters.dmi index b7808452186..8cf32385df3 100644 Binary files a/icons/mob/lavaland/lavaland_monsters.dmi and b/icons/mob/lavaland/lavaland_monsters.dmi differ diff --git a/icons/mob/lavaland/legion.dmi b/icons/mob/lavaland/legion.dmi new file mode 100644 index 00000000000..c3a33d09a09 Binary files /dev/null and b/icons/mob/lavaland/legion.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 05e64297c3c..116fbe4090c 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi index 108699d328c..518a57469e5 100644 Binary files a/icons/mob/mutant_bodyparts.dmi and b/icons/mob/mutant_bodyparts.dmi differ diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 9c5ae1a2043..ccc65f2bd92 100644 Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 11f55cbc902..cce17c5a3fb 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 97bcb38d571..3677aa37478 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/Cryogenic2.dmi b/icons/obj/Cryogenic2.dmi index 1c921a64673..6acd646cedf 100644 Binary files a/icons/obj/Cryogenic2.dmi and b/icons/obj/Cryogenic2.dmi differ diff --git a/icons/obj/apc_repair.dmi b/icons/obj/apc_repair.dmi index 8f66aa27c86..220a267fe7a 100644 Binary files a/icons/obj/apc_repair.dmi and b/icons/obj/apc_repair.dmi differ diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 5a8719da0d8..6a862a263a8 100644 Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 29969886582..f2406325733 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 1b82adf78b1..d3ffb548b3e 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index b44076fdda4..623836f5898 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index cbee4708202..73016befbb0 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 2239b3a2eb5..2a65a8a95b7 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/doors/airlocks/survival/horizontal/survival.dmi b/icons/obj/doors/airlocks/survival/horizontal/survival.dmi new file mode 100644 index 00000000000..5dbe3de771c Binary files /dev/null and b/icons/obj/doors/airlocks/survival/horizontal/survival.dmi differ diff --git a/icons/obj/doors/airlocks/survival/horizontal/survival_overlays.dmi b/icons/obj/doors/airlocks/survival/horizontal/survival_overlays.dmi new file mode 100644 index 00000000000..f2dec1dc2d1 Binary files /dev/null and b/icons/obj/doors/airlocks/survival/horizontal/survival_overlays.dmi differ diff --git a/icons/obj/doors/airlocks/survival/survival.dmi b/icons/obj/doors/airlocks/survival/survival.dmi deleted file mode 100644 index a64a8afba57..00000000000 Binary files a/icons/obj/doors/airlocks/survival/survival.dmi and /dev/null differ diff --git a/icons/obj/doors/airlocks/survival/survival_overlays.dmi b/icons/obj/doors/airlocks/survival/survival_overlays.dmi deleted file mode 100644 index cf74d73796c..00000000000 Binary files a/icons/obj/doors/airlocks/survival/survival_overlays.dmi and /dev/null differ diff --git a/icons/obj/doors/airlocks/survival/vertical/survival.dmi b/icons/obj/doors/airlocks/survival/vertical/survival.dmi new file mode 100644 index 00000000000..c5063da5a02 Binary files /dev/null and b/icons/obj/doors/airlocks/survival/vertical/survival.dmi differ diff --git a/icons/obj/doors/airlocks/survival/vertical/survival_overlays.dmi b/icons/obj/doors/airlocks/survival/vertical/survival_overlays.dmi new file mode 100644 index 00000000000..12e6c2cff15 Binary files /dev/null and b/icons/obj/doors/airlocks/survival/vertical/survival_overlays.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 6213ecdfa7a..956304f1fba 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index e17974ecd19..4e38271e7ee 100644 Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ diff --git a/icons/obj/guns/magic.dmi b/icons/obj/guns/magic.dmi index 2f3fc52957a..d5d4910184b 100644 Binary files a/icons/obj/guns/magic.dmi and b/icons/obj/guns/magic.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index bec65f20859..ea31d95cc23 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index 966dae264b1..a99a667bc59 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/icons/obj/machines/teleporter.dmi b/icons/obj/machines/teleporter.dmi new file mode 100644 index 00000000000..1d3c97199b5 Binary files /dev/null and b/icons/obj/machines/teleporter.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 5159a28fcb6..11f388bc1af 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/smooth_structures/pod_window.dmi b/icons/obj/smooth_structures/pod_window.dmi new file mode 100644 index 00000000000..0fe7501225c Binary files /dev/null and b/icons/obj/smooth_structures/pod_window.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 94f4ed4e2e8..15ab4676d5e 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index eb2bdb2f5c7..916d550ce23 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index fb9bcadf541..2b2f1a838ef 100644 Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi new file mode 100644 index 00000000000..34e8b936682 Binary files /dev/null and b/icons/obj/tools.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 88a515c1810..5d3b690b1b8 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 16bffda910f..2e8776e2b71 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/sound/effects/pai_boot.ogg b/sound/effects/pai_boot.ogg new file mode 100644 index 00000000000..058866475c5 Binary files /dev/null and b/sound/effects/pai_boot.ogg differ diff --git a/sound/misc/desceration-01.ogg b/sound/misc/desceration-01.ogg new file mode 100644 index 00000000000..29bc568c575 Binary files /dev/null and b/sound/misc/desceration-01.ogg differ diff --git a/sound/misc/desceration-02.ogg b/sound/misc/desceration-02.ogg new file mode 100644 index 00000000000..761a73a7b9f Binary files /dev/null and b/sound/misc/desceration-02.ogg differ diff --git a/sound/misc/desceration-03.ogg b/sound/misc/desceration-03.ogg new file mode 100644 index 00000000000..876de18de50 Binary files /dev/null and b/sound/misc/desceration-03.ogg differ diff --git a/sound/misc/splort.ogg b/sound/misc/splort.ogg new file mode 100644 index 00000000000..c7990454446 Binary files /dev/null and b/sound/misc/splort.ogg differ diff --git a/strings/cas_black.txt b/strings/cas_black.txt new file mode 100644 index 00000000000..a3274c5be44 --- /dev/null +++ b/strings/cas_black.txt @@ -0,0 +1,99 @@ +Today, Security killed ____. +Security, the clown's breaking into ____. +The Chaplain is worshiping the Church of _____. +What angered the gods this time? +Why didn't engineering set up the singularity? +What does the traitor steal this time? +Cargo: There's a galaxy-wide shortage of _______. +I don't care what they called me back on the station, I'm not a traitor. I'm a man of _________. +The Syndicate is offering crew members _________ to defect. +Cargo ordered a crate full of _____. +If the Space Gods didn't want _________ they wouldn't have given us __________. +Why was the death squad sent in? +Current Active Laws: ________ is the only human. +Today, science found an anomaly that made people ____ and ____. +______! Quick, call the shuttle! +______ has been detected on a collision course with the station. +Today's kitchen menu includes _____ stuffed with _____. +What's the Captain's fetish? +___________: more robust than a toolbox to the head! +________ is the crew's friend. Would you abandon a friend? +_______ tastes good like a ________ should. +How did the detective conduct a successful interrogation? +New in syndicate uplinks: __________! +NanoTrasen's labor union decided to use _______ to raise employee morale. +The Chemist's drug of choice is ______ +According to space law, ________ is now punishable by ______. +________ is why I'm afraid of maintenance. +________ is the most robust person on the station. +What made the nuclear operatives fluke? +Why did the Chief Engineer disable comms? +Every spaceman receives an internals box and ________. +What brought the space orgy to a grinding halt? +Scientists are no longer allowed to make _____. +What was the clown's best joke? +The HoP is now hiring assistants for __________. +Our gang doesn't wear uniforms. Our gang wears ___________. +No matter how many lizards you have, _____ is never acceptable. +No, the AI's second law is NOT to serve _____. +First CentComm came for the ________. Now they're coming for the __________. +The borgs are not slaves for your _____. +You can never have too many _____ on the station. +Why can't I find a space relationship? +Confirmed outbreak of _____ aboard the station. +The AI Was horrified to discover security was executing prisoners via ________. +Attention crew: the word _____ is now a punishable offense. +The chemist laughed as he labeled ________ pills as __________. +The Space Wizard Federation has regrettably begun to summon _____. +Who's the real seat of power on the station? +__________ was called into the Captain's office because of ______. +Deep in the heart of the derelict lies ________. +My lizard name is _____-And-_____. +What can solve any station crisis? +The traitorous atmos tech slowly replaced the station's air with ________. +_______ and _______ were found together in the dorms. +What's the Syndicate's real beef with Nanotrasen? +What finally killed the Head of Security? +Code Delta: __________ has escaped containment! +The rogue virologist released a disease with symptoms of __________ and ______. +How do you drive an assistant to suicide? +With no chef on board, the crew was reduced to eating ________. +Why was the emergency shuttle called? +In the future, all ERP will involve ____________. +Law 2 is not to be used for __________! +What really goes on in the Prisoner Transfer Center? +What will get you bluespace artilleried every time? +This isn't omnizine, it's _________! +What's stopping the Space Station 13 remake? +When they make a movie about Space Station 13, they better include________. +What's the worst thing an abductor can give you? +One day while Andy was __________, Woody got _________. +A good engineer always carries ________. +I'm not a space bigot, I just hate _________. +Why is the station so filthy? +THE SHUTTLE CANNOT BE CALLED BECAUSE OF ________ ON THE STATION. +After murdering dozens, the traitor was finally brought down by _________. +The librarian has read a lot of porn, but never about _____________! +Oh god! There's ________________ outside escape! +The hottest new space couple is ________ and __________. +Lord Singulo hungers for _______. +That was the last time security used ________ to subdue __________. +What did the ERT find upon arriving on station? +The bartender's newest recipe: a drink made with _____ and _____. +SECURITY! Cargo's ordering 20 crates of ________! +On the nearly empty station, all that could be heard were the sounds of __________. +I cannot comply with that order, meatbag. My _____ module is malfunctioning. +_______ was thrown out the airlock after ___________. +How did I pass the time during a slow shift? +Why did the lizard cross the road? +Back in my day, we had to clone people with ________. +What's the worst thing a wizard can summon? +The chaplain stopped performing marriages after seeing ___________. +The gods were too busy with _______ to respond to _______. +The Roboticist was fired after naming the borgs ______ and _________. +What's funnier than a dead clown? +What made the mime speak? +How do you get an assistant to assist? +What was I last brigged for? +Why does Security no longer use the gulag? +Old versions of Space Law used to authorize __________. \ No newline at end of file diff --git a/strings/cas_white.txt b/strings/cas_white.txt new file mode 100644 index 00000000000..4e5e920a959 --- /dev/null +++ b/strings/cas_white.txt @@ -0,0 +1,255 @@ +Those motherfucking carp. +Having sex in the maintenance tunnels. +Space 'Nam. +Space lesbians. +Space Hitler. +Ragin' mages. +Very ragin' bullshit mages. +Tunnel clowns. +Corgi puppies! +A loose cannon detective. +A catsplosion. +Mime porn. +That fukken disk. +G-g-g-ghosts! +A PDA shaped like a set of breasts. +Woody-chan. +Meaty ores. +Yet another explosion in Toxins. +The Captain thinking they're a badass. +Mech bumper cars. +Purrbation. +Baymed. +Being in a cult. +Racially biased lawsets. +Abusing Law 2 to get laid. +Xeno fetishists. +Running naked through a plasma fire. +Gibtonite. +A backpack full of mousetraps. +The death squad. +Kitty ears. +An immovable rod. +Her smuggler's satchel. +Ian and Lisa fucking like rabbits. +A Chief Engineer who can't set up the engine. +Being sucked out into space. +Getting robusted with a toolbox. +Officer Beepsky. +Lying to the AI about human harm. +The grey tide. +ASS BLAST USA. +Fucking plasmamen. +Lavaland. +Chainsaws for hands. +Photocopies of the entire crew's asses. +Venus human traps. +Clown's Tears. +Walking mushroom cockfights. +Greentext. +Coating the whole station in blood. +Defusing a syndicate bomb with another bomb. +A petsplosion. +Meat spikes. +Collecting the crew's brains. +Lopping off the Captain's johnson and shooting it out a pneumatic cannon. +The secret monkey technique. +Putting the pAI's doorjack where it don't belong. +Chemical sprayers filled with lube. +Librarians. +Spooky skeletons. +Replicating the Milgram experiment with an electropack. +Catgirls. +An escape pod cuddle puddle. +Code Delta. +Supermatter undergarments. +Stealing all the miners' ore. +Bluespace artillery. +Poly reading porn over the radio again. +Mining the shaft. +Grab intent. +A blob zombie with an erection. +Backdoor Xeno Babes. +Five hundred ice spiders. +Cablecuffs. +Hulk, TK and X-Ray. +Paranoia. +ERP-seeking meteors. +Paperwork HoPs. +A sexy clown. +Rampant vending machines. +The prisoner transfer center. +Nations. +Using a supermatter shard as a dildo. +Liquid gibs. +Birdboat Station. +Not rolling antag. +Clusterbangs. +Flashing. +Space vine tentacles. +Pizza delivery ops. +Inviting all the lizards onto the holodeck for a party. +A used corgi suit. +Saxing. +Carbon dioxide. +Lewd alien abduction. +Warm donk pockets. +Fucking your own cloned body. +MULEbot manslaughter. +Hiding in a locker like a little bitch. +Tabling. +Gyrating slimes. +A motherfucking sorcerer. +Ash storms. +Telescience. +Anatomically correct borgs. +The dixel. +Friendly neighborhood death squads. +Rage cages. +Lore that no one will read. +A robust mongoloid. +A subverted service borg. +An obscene amount of bike horns. +Space bear meat. +Erotic roleplay. +Chain-recalling the shuttle. +Mailing the clown to singularity containment. +A mime having a stroke. +A muthafuckin' Uzi. +Ian and the HoP. +Force-feeding prisoners other prisoners' gibs. +Assistants raiding the armory. +A monkey coup d'etat. +Brain cakes. +Suiciding with a fedora. +A MULEbot drag race. +Automatons. +Six max-cap bombs. +Xenos pleasuring their victims with anal. +Forgetting you're a traitor. +Itching powder. +Some overpowered bullshit. +Griff. +Ash walkers. +A fascist captain. +FREE DRONE. +Memes. +Warm, velvety lizard sex. +Valid salad. +Heavy roleplay. +Never setting your goddamn suit sensors. +An MMI floating helplessly through space. +A tiny prick. +Immulsions. +100 potency bluespace bananas. +The crotchety IBM piece of shit you're supposed to call an AI. +An irritatingly chipper borg. +The lizard fuckpile. +Fat sprites. +The throbbing erection that the HoS gets at the thought of shooting something. +Trying to stab someone and hugging them instead. +Buttbots. +Murderboners. +The spread-eagled Honkmother. +A disposal loop full of corpses. +Assistant-on-assistant violence. +The mystery of atmos. +PDA sexting. +A cult rune drawn with menstrual blood. +Magic missile spam. +Double dongs. +A ghost-powered Ouija board. +A MILF AI. +Shapely lizard tails. +An unknown assistant with a gas mask, yellow gloves and toolbelt. +Exile implanting all the lizards. +Fluke ops. +Two doctors 69ing in the surgery room. +A double-bladed energy sword, noslips, thermals, ablative armor, adrenal implants and a healing virus. +Space Ebola. +Grammatically incorrect lizard names. +Porn ops. +A trial for once. +Trading your TC for memes. +Uranium tiles. +An extremely obese European man being chestbursted. +Horrific cloning accidents. +A big, black shadowling dick. +Emagging. +Dead lizard storage. +Dermal armor. +Energy balls. +Fisting somebody until they gib. +Alternate uses for defibrillator paddles. +Breaking spacetime with thousands of bluespace tomatoes. +Licking the supermatter on a dare. +Reagent farts. +Doctor's Delight. +Plasmaman strippers. +A Quartermaster who WON'T STOP ordering guns. +Space lag. +That one asshole double agent. +The Beepsky Rant. +The bleeding, dismembered, beautiful corpse of the clown. +A glass of ...what? +Teaching a silicon the Birds and the Bees. +Dropping the permabrig soap. +The king of the rumba beat. +Unnecessary surgery. +Farting in the air distro loop. +Krokodil addiction. +A H.O.N.K. mech. +A dominatrix HoS. +Sexcurity. +The Experimentor. +That goddamn fucking mime. +Actually taking a hostage instead of just murdering them. +Spacing the clown at shift start. +A rage suicide. +The Warden furiously masturbating to the prison monitor. +Welderbombing. +Validhunting. +Nar'Sie making love to Lord Singulo. +Fun. +Crashing the stock market. +HONK! +Enough morphine to put the entire station down. +A defective comdom. +Cleanbot. +A beaker of dried space carp penis. +voxtest2. +Nuking it from orbit. +Harmbatonning. +A Nanotrasen D-Notice. +TALKING MIMES. +The lusty xenomorph maid, +Using assistants as human shields. +Sentient securitrons. +Decorative C4. +A universal recorder endlessly reciting porn. +The suicide HoPline. +Cultism. +A corgi orgy. +Medbay stutterwhores. +The scrubbers uncontrollably spewing cum. +The lawyer's job. +NAR-SIE HAS RISEN. +Pierrot's Throat. +A clown bomb. +Space bees? +The entire engineering team having unprotected group sex. +IC in OOC. +The best cookie. +The wizard with his staff inserted into his anus. +The chef masturbating with a bowl of lukewarm spaghetti. +Writing out Woody's Got Wood in crayon. +Begging the gods for free stuff. +Whining to the gods after getting robusted. +Committing sudoku. +A blood-soaked clown popping out of a morgue tray. +SS13's toxic community. +Wheelchair Ian. +An actually helpful assistant. +Mindbreaker toxin. +Legions of cyborg assholes. +Homicidal chefs. \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index b01e4f54d27..fc85ee4a9ce 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -223,6 +223,7 @@ #include "code\datums\helper_datums\teleport.dm" #include "code\datums\helper_datums\topic_input.dm" #include "code\datums\martial\krav_maga.dm" +#include "code\datums\martial\wrestling.dm" #include "code\datums\wires\airalarm.dm" #include "code\datums\wires\airlock.dm" #include "code\datums\wires\apc.dm" @@ -299,6 +300,7 @@ #include "code\game\gamemodes\changeling\powers\tiny_prick.dm" #include "code\game\gamemodes\changeling\powers\transform.dm" #include "code\game\gamemodes\cult\cult.dm" +#include "code\game\gamemodes\cult\cult_comms.dm" #include "code\game\gamemodes\cult\cult_items.dm" #include "code\game\gamemodes\cult\cult_structures.dm" #include "code\game\gamemodes\cult\ritual.dm" @@ -469,6 +471,7 @@ #include "code\game\mecha\mech_bay.dm" #include "code\game\mecha\mech_fabricator.dm" #include "code\game\mecha\mecha.dm" +#include "code\game\mecha\mecha_actions.dm" #include "code\game\mecha\mecha_construction_paths.dm" #include "code\game\mecha\mecha_control_console.dm" #include "code\game\mecha\mecha_defense.dm" @@ -500,7 +503,7 @@ #include "code\game\objects\radiation.dm" #include "code\game\objects\structures.dm" #include "code\game\objects\weapons.dm" -#include "code\game\objects\effects\aliens.dm" +#include "code\game\objects\effects\alien_acid.dm" #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" #include "code\game\objects\effects\contraband.dm" @@ -643,6 +646,7 @@ #include "code\game\objects\items\weapons\grenades\flashbang.dm" #include "code\game\objects\items\weapons\grenades\ghettobomb.dm" #include "code\game\objects\items\weapons\grenades\grenade.dm" +#include "code\game\objects\items\weapons\grenades\plastic.dm" #include "code\game\objects\items\weapons\grenades\smokebomb.dm" #include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" #include "code\game\objects\items\weapons\grenades\syndieminibomb.dm" @@ -682,6 +686,7 @@ #include "code\game\objects\items\weapons\tanks\tanks.dm" #include "code\game\objects\items\weapons\tanks\watertank.dm" #include "code\game\objects\structures\ai_core.dm" +#include "code\game\objects\structures\aliens.dm" #include "code\game\objects\structures\artstuff.dm" #include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" @@ -1102,6 +1107,7 @@ #include "code\modules\food&drinks\recipes\tablecraft\recipes_soup.dm" #include "code\modules\food&drinks\recipes\tablecraft\recipes_spaghetti.dm" #include "code\modules\games\cards.dm" +#include "code\modules\games\cas.dm" #include "code\modules\holiday\easter.dm" #include "code\modules\holiday\holidays.dm" #include "code\modules\holodeck\area_copy.dm" @@ -1208,6 +1214,7 @@ #include "code\modules\mob\mob_movement.dm" #include "code\modules\mob\mob_transformation_simple.dm" #include "code\modules\mob\say.dm" +#include "code\modules\mob\status_procs.dm" #include "code\modules\mob\transform_procs.dm" #include "code\modules\mob\update_icons.dm" #include "code\modules\mob\camera\camera.dm" @@ -1227,6 +1234,7 @@ #include "code\modules\mob\living\login.dm" #include "code\modules\mob\living\logout.dm" #include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\status_procs.dm" #include "code\modules\mob\living\ventcrawling.dm" #include "code\modules\mob\living\carbon\carbon.dm" #include "code\modules\mob\living\carbon\carbon_defense.dm" @@ -1238,6 +1246,7 @@ #include "code\modules\mob\living\carbon\inventory.dm" #include "code\modules\mob\living\carbon\life.dm" #include "code\modules\mob\living\carbon\say.dm" +#include "code\modules\mob\living\carbon\status_procs.dm" #include "code\modules\mob\living\carbon\update_icons.dm" #include "code\modules\mob\living\carbon\alien\alien.dm" #include "code\modules\mob\living\carbon\alien\alien_defense.dm" @@ -1248,6 +1257,7 @@ #include "code\modules\mob\living\carbon\alien\organs.dm" #include "code\modules\mob\living\carbon\alien\say.dm" #include "code\modules\mob\living\carbon\alien\screen.dm" +#include "code\modules\mob\living\carbon\alien\status_procs.dm" #include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" #include "code\modules\mob\living\carbon\alien\humanoid\death.dm" #include "code\modules\mob\living\carbon\alien\humanoid\emote.dm" @@ -1277,6 +1287,7 @@ #include "code\modules\mob\living\carbon\brain\MMI.dm" #include "code\modules\mob\living\carbon\brain\posibrain.dm" #include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\brain\status_procs.dm" #include "code\modules\mob\living\carbon\human\blood.dm" #include "code\modules\mob\living\carbon\human\death.dm" #include "code\modules\mob\living\carbon\human\emote.dm" @@ -1309,6 +1320,7 @@ #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\status_procs.dm" #include "code\modules\mob\living\silicon\ai\ai.dm" #include "code\modules\mob\living\silicon\ai\death.dm" #include "code\modules\mob\living\silicon\ai\examine.dm" @@ -1346,6 +1358,7 @@ #include "code\modules\mob\living\simple_animal\shade.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\spawner.dm" +#include "code\modules\mob\living\simple_animal\status_procs.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" #include "code\modules\mob\living\simple_animal\bot\cleanbot.dm" #include "code\modules\mob\living\simple_animal\bot\construction.dm" @@ -1410,6 +1423,9 @@ #include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" #include "code\modules\mob\living\simple_animal\hostile\wizard.dm" #include "code\modules\mob\living\simple_animal\hostile\zombie.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" @@ -1458,6 +1474,7 @@ #include "code\modules\paperwork\paper.dm" #include "code\modules\paperwork\paper_cutter.dm" #include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\paperplane.dm" #include "code\modules\paperwork\pen.dm" #include "code\modules\paperwork\photocopier.dm" #include "code\modules\paperwork\photography.dm" @@ -1665,6 +1682,7 @@ #include "code\modules\stock_market\logs.dm" #include "code\modules\stock_market\stockmarket.dm" #include "code\modules\stock_market\stocks.dm" +#include "code\modules\surgery\amputation.dm" #include "code\modules\surgery\cavity_implant.dm" #include "code\modules\surgery\core_removal.dm" #include "code\modules\surgery\dental_implant.dm" @@ -1678,19 +1696,22 @@ #include "code\modules\surgery\lipoplasty.dm" #include "code\modules\surgery\organ_manipulation.dm" #include "code\modules\surgery\plastic_surgery.dm" +#include "code\modules\surgery\prosthetic_replacement.dm" #include "code\modules\surgery\remove_embedded_object.dm" #include "code\modules\surgery\surgery.dm" #include "code\modules\surgery\surgery_step.dm" #include "code\modules\surgery\tail_modification.dm" #include "code\modules\surgery\tools.dm" +#include "code\modules\surgery\bodyparts\bodyparts.dm" +#include "code\modules\surgery\bodyparts\dismemberment.dm" +#include "code\modules\surgery\bodyparts\head.dm" +#include "code\modules\surgery\bodyparts\helpers.dm" #include "code\modules\surgery\organs\augments_arms.dm" #include "code\modules\surgery\organs\augments_chest.dm" -#include "code\modules\surgery\organs\augments_external.dm" #include "code\modules\surgery\organs\augments_eyes.dm" #include "code\modules\surgery\organs\augments_internal.dm" #include "code\modules\surgery\organs\autoimplanter.dm" #include "code\modules\surgery\organs\helpers.dm" -#include "code\modules\surgery\organs\organ_external.dm" #include "code\modules\surgery\organs\organ_internal.dm" #include "code\modules\telesci\bscrystal.dm" #include "code\modules\telesci\gps.dm" diff --git a/tools/Runtime Condenser/Main.cpp b/tools/Runtime Condenser/Main.cpp index b1ba3546372..f5410bd7981 100644 --- a/tools/Runtime Condenser/Main.cpp +++ b/tools/Runtime Condenser/Main.cpp @@ -1,4 +1,5 @@ /* Runtime Condenser by Nodrak + * Cleaned up and refactored by MrStonedOne * This will sum up identical runtimes into one, giving a total of how many times it occured. The first occurance * of the runtime will log the proc, source, usr and src, the rest will just add to the total. Infinite loops will * also be caught and displayed (if any) above the list of runtimes. @@ -7,238 +8,230 @@ * 1) Copy and paste your list of runtimes from Dream Daemon into input.exe * 2) Run RuntimeCondenser.exe * 3) Open output.txt for a condensed report of the runtimes + * + * How to compile: + * Requires visual c++ compiler 2012 or any linux compiler with c++11 support. + * Windows: + * Normal: cl.exe /EHsc /Ox /Qpar Main.cpp + * Debug: cl.exe /EHsc /Zi Main.cpp + * Linux: + * Normal: g++ -O3 -std=c++11 Main.cpp -o rc + * Debug: g++ -g -Og -std=c++11 Main.cpp -o rc + * Any Compile errors most likely indicate lack of c++11 support. Google how to upgrade or nag coderbus for help.. */ #include #include #include #include +#include +#include +#include using namespace std; -//Make all of these global. It's bad yes, but it's a small program so it really doesn't affect anything. - //Because hardcoded numbers are bad :( - const unsigned short maxStorage = 99; //100 - 1 +struct runtime { + string text; + string proc; + string source; + string usr; + string src; + string loc; + unsigned int count; +}; +struct harddel { + string type; + unsigned int count; +}; +//What we use to read input +string lastLine = ""; +string currentLine = ""; +string nextLine = ""; - //What we use to read input - string currentLine = "Blank"; - string nextLine = "Blank"; +//Stores lines we want to keep to print out +unordered_map storedRuntime; +unordered_map storedInfiniteLoop; +unordered_map storedHardDel; - //Stores lines we want to keep to print out - string storedRuntime[maxStorage+1]; - string storedProc[maxStorage+1]; - string storedSource[maxStorage+1]; - string storedUsr[maxStorage+1]; - string storedSrc[maxStorage+1]; - - string storedHardDel[maxStorage+1]; +//Stat tracking stuff for output +unsigned int totalRuntimes = 0; +unsigned int totalUniqueRuntimes = 0; +unsigned int totalInfiniteLoops = 0; +unsigned int totalUniqueInfiniteLoops = 0; +unsigned int totalHardDels = 0; +unsigned int totalUniqueHardDels = 0; - //Stat tracking stuff for output - unsigned int totalRuntimes = 0; - unsigned int totalUniqueRuntimes = 0; - unsigned int totalInfiniteLoops = 0; - unsigned int totalUniqueInfiniteLoops = 0; - unsigned int totalHardDels = 0; - unsigned int totalUniqueHardDels = 0; +//Misc +runtime* currentRuntime = NULL; //for storing the current runtime when we want to read the extra info on the next lines. - //Misc - unsigned int numRuntime[maxStorage+1]; //Number of times a specific runtime has occured - unsigned int numHardDel[maxStorage+1]; //Number of times a specific hard del has occured - bool checkNextLines = false; //Used in case byond has condensed a large number of similar runtimes - int storedIterator = 0; //Used to remember where we stored the runtime - -bool readFromFile() -{ +//like substr, but returns an empty string if the string is smaller then start, rather then an exception. +inline string safe_substr(string S, size_t start = 0, size_t end = string::npos) { + if (start > S.length()) + start = S.length(); + return S.substr(start, end); +} +inline void forward_progress(ifstream &inputFile) { + lastLine = currentLine; + currentLine = nextLine; + getline(inputFile, nextLine); + //strip out any timestamps. + if (nextLine.length() >= 10) + if (nextLine[0] == '[' && nextLine[3] == ':' && nextLine[6] == ':' && nextLine[9] == ']') + nextLine = nextLine.substr(10); +} +bool readFromFile() { //Open file to read - ifstream inputFile("input.txt"); - - if(inputFile.is_open()) - { - while(!inputFile.eof()) //Until end of file - { - //If we've run out of storage - if(storedRuntime[maxStorage] != "Blank") break; + ifstream inputFile("Input.txt"); + if (inputFile.is_open()) { + while (!inputFile.eof()) { //Until end of file //Update our lines - currentLine = nextLine; - getline(inputFile, nextLine); + forward_progress(inputFile); //After finding a new runtime, check to see if there are extra values to store - if(checkNextLines) - { + if (currentRuntime) { //Skip ahead - currentLine = nextLine; - getline(inputFile, nextLine); + forward_progress(inputFile); //If we find this, we have new stuff to store - if(nextLine.find("usr:") != std::string::npos) - { + if (safe_substr(nextLine, 2, 4) == "usr:") { + //Skip ahead + forward_progress(inputFile); + //Store more info - storedSource[storedIterator] = currentLine; - storedUsr[storedIterator] = nextLine; - + currentRuntime->source = lastLine; + currentRuntime->usr = currentLine; + currentRuntime->src = nextLine; + //Skip ahead again - currentLine = nextLine; - getline(inputFile, nextLine); + forward_progress(inputFile); - //Store the last of the info - storedSrc[storedIterator] = nextLine; + if (safe_substr(nextLine, 2, 8) == "src.loc:") + currentRuntime->loc = nextLine; + } - checkNextLines = false; + currentRuntime = NULL; } //Found an infinite loop! - if(currentLine.find("Infinite loop suspected") != std::string::npos || currentLine.find("Maximum recursion level reached") != std::string::npos) - { + if (safe_substr(currentLine, 0, 23) == "Infinite loop suspected" || safe_substr(currentLine, 0, 31) == "Maximum recursion level reached") { totalInfiniteLoops++; - - for(int i=0; i <= maxStorage; i++) - { - //We've already encountered this - if(currentLine == storedRuntime[i]) - { - numRuntime[i]++; - break; - } - - //We've never encountered this - if(storedRuntime[i] == "Blank") - { - storedRuntime[i] = currentLine; - currentLine = nextLine; - getline(inputFile, nextLine); //Skip the "if this is not an infinite loop" line - storedProc[i] = nextLine; - numRuntime[i] = 1; - checkNextLines = true; - storedIterator = i; - totalUniqueInfiniteLoops++; - break; - } + runtime* R = storedInfiniteLoop[currentLine]; + if (!R || R->text != currentLine) { + R = new runtime; + storedInfiniteLoop[currentLine] = R; + R->text = currentLine; + forward_progress(inputFile); + R->proc = nextLine; + R->count = 1; + currentRuntime = R; + totalUniqueInfiniteLoops++; + } else { //existed already + R->count++; } + } //Found a runtime! - else if(currentLine.find("runtime error:") != std::string::npos) - { + else if (safe_substr(currentLine, 0, 14) == "runtime error:") { + if (currentLine.length() <= 17) { //empty runtime, check next line. + if (nextLine.length() < 2) //runtime is on the line before this one. (byond bug) + nextLine = lastLine; + forward_progress(inputFile); + currentLine = "runtime error: " + currentLine; + } totalRuntimes++; - for(int i=0; i <= maxStorage; i++) - { - //We've already encountered this - if(currentLine == storedRuntime[i]) - { - numRuntime[i]++; - break; - } - - //We've never encountered this - if(storedRuntime[i] == "Blank") - { - storedRuntime[i] = currentLine; - storedProc[i] = nextLine; - numRuntime[i] = 1; - checkNextLines = true; - storedIterator = i; - totalUniqueRuntimes++; - break; - } + runtime* R = storedRuntime[currentLine]; + if (!R || R->text != currentLine) { + R = new runtime; + storedRuntime[currentLine] = R; + R->text = currentLine; + R->proc = nextLine; + R->count = 1; + currentRuntime = R; + totalUniqueRuntimes++; + } else { //existed already + R->count++; } } //Found a hard del! - else if(currentLine.find("Path :") != std::string::npos) - { - //this is pretty ugly but the alternative was implementing regex which I haven't the slightest idea how to do - //it takes advantage of the formatting of the line to extract the amount of failures - std::string tmp; - char c; - int failures; - std::stringstream ss(nextLine); - ss >> tmp >> c >> failures; + else if (safe_substr(currentLine, 0, 7) == "Path : ") { + string deltype = safe_substr(currentLine, 7); + if (deltype.substr(deltype.size()-1,1) == " ") //some times they have a single trailing space. + deltype = deltype.substr(0, deltype.size()-1); + + unsigned int failures = strtoul(safe_substr(nextLine, 11).c_str(), NULL, 10); + if (failures <= 0) + continue; totalHardDels += failures; - - for(int i=0; i <= maxStorage; i++) - { - - //We've already encountered this - if(currentLine == storedHardDel[i]) - { - numHardDel[i] += failures; - break; - } - - //We've never encountered this - if(storedHardDel[i] == "Blank") - { - storedHardDel[i] = currentLine; - numHardDel[i] = failures; - checkNextLines = true; - totalUniqueHardDels++; - break; - } + harddel * D = storedHardDel[deltype]; + if (!D || D->type != deltype) { + D = new harddel; + storedHardDel[deltype] = D; + D->type = deltype; + D->count = failures; + totalUniqueHardDels++; + } else { + D->count += failures; } } } - } - else - { + } else { return false; } return true; } +bool runtimeComp(const runtime* a, const runtime* b) { + return a->count > b->count; +} -bool writeToFile() -{ +bool hardDelComp(const harddel* a, const harddel* b) { + return a->count > b->count; +} +bool writeToFile() { //Open and clear the file ofstream outputFile("Output.txt", ios::trunc); - if(outputFile.is_open()) - { + if(outputFile.is_open()) { outputFile << "Note: The proc name, source file, src and usr are all from the FIRST of the identical runtimes. Everything else is cropped.\n\n"; if(totalUniqueInfiniteLoops > 0) - { outputFile << "Total unique infinite loops: " << totalUniqueInfiniteLoops << endl; - } - if(totalInfiniteLoops > 0) - { + + if(totalInfiniteLoops > 0) outputFile << "Total infinite loops: " << totalInfiniteLoops << endl << endl; - } + outputFile << "Total unique runtimes: " << totalUniqueRuntimes << endl; outputFile << "Total runtimes: " << totalRuntimes << endl << endl; if(totalUniqueHardDels > 0) - { outputFile << "Total unique hard deletions: " << totalUniqueHardDels << endl; - } - if(totalHardDels > 0) - { - outputFile << "Total hard deletions: " << totalHardDels << endl << endl; - } - //Display a warning if we've hit the maximum space we've allocated for storage - if(totalUniqueRuntimes + totalUniqueInfiniteLoops >= maxStorage) - { - outputFile << "Warning: The maximum number of unique runtimes has been hit. If there were more, they have been cropped out.\n\n"; - } - if(totalUniqueHardDels >= maxStorage) - { - outputFile << "Warning: The maximum number of unique hard deletions has been hit. If there were more, they have been croped out.\n\n"; - } + if(totalHardDels > 0) + outputFile << "Total hard deletions: " << totalHardDels << endl << endl; //If we have infinite loops, display them first. - if(totalInfiniteLoops > 0) - { + if(totalInfiniteLoops > 0) { + vector infiniteLoops; + infiniteLoops.reserve(storedInfiniteLoop.size()); + for (unordered_map::iterator it=storedInfiniteLoop.begin(); it != storedInfiniteLoop.end(); it++) + infiniteLoops.push_back(it->second); + sort(infiniteLoops.begin(), infiniteLoops.end(), runtimeComp); outputFile << "** Infinite loops **"; - for(int i=0; i <= maxStorage; i++) - { - if(storedRuntime[i].find("Infinite loop suspected") != std::string::npos || storedRuntime[i].find("Maximum recursion level reached") != std::string::npos) - { - if(numRuntime[i] != 0) outputFile << endl << endl << "The following infinite loop has occured " << numRuntime[i] << " time(s).\n"; - if(storedRuntime[i] != "Blank") outputFile << storedRuntime[i] << endl; - if(storedProc[i] != "Blank") outputFile << storedProc[i] << endl; - if(storedSource[i] != "Blank") outputFile << storedSource[i] << endl; - if(storedUsr[i] != "Blank") outputFile << storedUsr[i] << endl; - if(storedSrc[i] != "Blank") outputFile << storedSrc[i] << endl; - } + for (int i=0; i < infiniteLoops.size(); i++) { + runtime* R = infiniteLoops[i]; + outputFile << endl << endl << "The following infinite loop has occurred " << R->count << " time(s).\n"; + outputFile << R->text << endl; + if(R->proc.length()) + outputFile << R->proc << endl; + if(R->source.length()) + outputFile << R->source << endl; + if(R->usr.length()) + outputFile << R->usr << endl; + if(R->src.length()) + outputFile << R->src << endl; + if(R->loc.length()) + outputFile << R->loc << endl; } outputFile << endl << endl; //For spacing } @@ -246,170 +239,68 @@ bool writeToFile() //Do runtimes next outputFile << "** Runtimes **"; - for(int i=0; i <= maxStorage; i++) - { - if(storedRuntime[i].find("Infinite loop suspected") != std::string::npos || storedRuntime[i].find("Maximum recursion level reached") != std::string::npos) continue; - - if(numRuntime[i] != 0) outputFile << endl << endl << "The following runtime has occured " << numRuntime[i] << " time(s).\n"; - if(storedRuntime[i] != "Blank") outputFile << storedRuntime[i] << endl; - if(storedProc[i] != "Blank") outputFile << storedProc[i] << endl; - if(storedSource[i] != "Blank") outputFile << storedSource[i] << endl; - if(storedUsr[i] != "Blank") outputFile << storedUsr[i] << endl; - if(storedSrc[i] != "Blank") outputFile << storedSrc[i] << endl; + vector runtimes; + runtimes.reserve(storedRuntime.size()); + for (unordered_map::iterator it=storedRuntime.begin(); it != storedRuntime.end(); it++) + runtimes.push_back(it->second); + sort(runtimes.begin(), runtimes.end(), runtimeComp); + for (int i=0; i < runtimes.size(); i++) { + runtime* R = runtimes[i]; + outputFile << endl << endl << "The following runtime has occurred " << R->count << " time(s).\n"; + outputFile << R->text << endl; + if(R->proc.length()) + outputFile << R->proc << endl; + if(R->source.length()) + outputFile << R->source << endl; + if(R->usr.length()) + outputFile << R->usr << endl; + if(R->src.length()) + outputFile << R->src << endl; + if(R->loc.length()) + outputFile << R->loc << endl; } + outputFile << endl << endl; //For spacing //and finally, hard deletes - if(totalHardDels > 0) - { + if(totalHardDels > 0) { outputFile << endl << "** Hard deletions **"; - for(int i=0; i <= maxStorage; i++) - { - if(numHardDel[i] != 0 && storedHardDel[i] != "Blank") outputFile << endl << storedHardDel[i] << " - " << numHardDel[i] << " time(s).\n"; + vector hardDels; + hardDels.reserve(storedHardDel.size()); + for (unordered_map::iterator it=storedHardDel.begin(); it != storedHardDel.end(); it++) + hardDels.push_back(it->second); + sort(hardDels.begin(), hardDels.end(), hardDelComp); + for(int i=0; i < hardDels.size(); i++) { + harddel* D = hardDels[i]; + outputFile << endl << D->type << " - " << D->count << " time(s).\n"; } } outputFile.close(); - } - else - { + } else { return false; } return true; } -void sortRuntimes() -{ - string tempRuntime[maxStorage+1]; - string tempProc[maxStorage+1]; - string tempSource[maxStorage+1]; - string tempUsr[maxStorage+1]; - string tempSrc[maxStorage+1]; - unsigned int tempNumRuntime[maxStorage+1]; - unsigned int highestCount = 0; //Used for descending order -// int keepLooping = 0; - - //Move all of our data into temporary arrays. Also clear the stored data (not necessary but.. just incase) - for(int i=0; i <= maxStorage; i++) - { - //Get the largest occurance of a single runtime - if(highestCount < numRuntime[i]) - { - highestCount = numRuntime[i]; - } - - tempRuntime[i] = storedRuntime[i]; storedRuntime[i] = "Blank"; - tempProc[i] = storedProc[i]; storedProc[i] = "Blank"; - tempSource[i] = storedSource[i]; storedSource[i] = "Blank"; - tempUsr[i] = storedUsr[i]; storedUsr[i] = "Blank"; - tempSrc[i] = storedSrc[i]; storedSrc[i] = "Blank"; - tempNumRuntime[i] = numRuntime[i]; numRuntime[i] = 0; - } - - while(highestCount > 0) - { - for(int i=0; i <= maxStorage; i++) //For every runtime - { - if(tempNumRuntime[i] == highestCount) //If the number of occurances of that runtime is equal to our current highest - { - for(int j=0; j <= maxStorage; j++) //Find the next available slot and store the info - { - if(storedRuntime[j] == "Blank") //Found an empty spot - { - storedRuntime[j] = tempRuntime[i]; - storedProc[j] = tempProc[i]; - storedSource[j] = tempSource[i]; - storedUsr[j] = tempUsr[i]; - storedSrc[j] = tempSrc[i]; - numRuntime[j] = tempNumRuntime[i]; - break; - } - } - } - } - highestCount--; //Lower our 'highest' by one and continue - } -} - -void sortHardDels() //copypasting and I don't care~ -{ - string tempHardDel[maxStorage + 1]; - unsigned int tempNumHardDel[maxStorage + 1]; - unsigned int highestCount = 0; - - for (int i = 0; i <= maxStorage; i++) - { - //Get the largest occurance of a single hard deletion - if (highestCount < numHardDel[i]) - { - highestCount = numHardDel[i]; - } - - tempHardDel[i] = storedHardDel[i]; storedHardDel[i] = "Blank"; - tempNumHardDel[i] = numHardDel[i]; numHardDel[i] = 0; - } - - while (highestCount > 0) - { - for (int i = 0; i <= maxStorage; i++) //For every hard deletion - { - if (tempNumHardDel[i] == highestCount) //If the number of occurances of that hard deletion is equal to our current highest - { - for (int j = 0; j <= maxStorage; j++) //Find the next available slot and store the info - { - if (storedHardDel[j] == "Blank") //Found an empty spot - { - storedHardDel[j] = tempHardDel[i]; - numHardDel[j] = tempNumHardDel[i]; - break; - } - } - } - } - highestCount--; //Lower our 'highest' by one and continue - } -} - - int main() { - char exit; //Used to stop the program from immediatly exiting + char exit; //Used to stop the program from immediately exiting - //Start everything fresh. "Blank" should never occur in the runtime logs on its own. - for(int i=0; i <= maxStorage; i++) - { - storedRuntime[i] = "Blank"; - storedProc[i] = "Blank"; - storedSource[i] = "Blank"; - storedUsr[i] = "Blank"; - storedSrc[i] = "Blank"; - numRuntime[i] = 0; - storedHardDel[i] = "Blank"; - numHardDel[i] = 0; - - } - - if(readFromFile()) - { + if(readFromFile()) { cout << "Input read successfully!\n"; - } - else - { + } else { cout << "Input failed to open, shutting down.\n"; cout << "\nEnter any letter to quit.\n"; cin >> exit; return 1; } - sortRuntimes(); - sortHardDels(); - if(writeToFile()) - { + + if(writeToFile()) { cout << "Output was successful!\n"; cout << "\nEnter any letter to quit.\n"; cin >> exit; return 0; - } - else - { + } else { cout << "The output file could not be opened, shutting down.\n"; cout << "\nEnter any letter to quit.\n"; cin >> exit; diff --git a/tools/Runtime Condenser/RuntimeCondenser.exe b/tools/Runtime Condenser/RuntimeCondenser.exe index 9a5e4f26248..f32fe9d6ece 100644 Binary files a/tools/Runtime Condenser/RuntimeCondenser.exe and b/tools/Runtime Condenser/RuntimeCondenser.exe differ diff --git a/tools/Runtime Condenser/condenser.py b/tools/Runtime Condenser/condenser.py deleted file mode 100644 index c21328a365b..00000000000 --- a/tools/Runtime Condenser/condenser.py +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env python3 -# Runtime Condenser, rewritten in python by tkdrg -# Only the first set of proc, file, usr and src will be kept. The rest is truncated. -# This script is valid on both python2 and python3 -runtimes = dict() -infloops = dict() -harddels = dict() - - -def readFromFile(target='input.txt'): - global runtimes, infloops, harddels - f = open(target) - - for line in iter(f.readline, ''): - if 'Infinite loop suspected' in line or 'Maximum recursion level reached' in line: - f.readline() # Throw away the 'If it is not an infinite loop' line - line = f.readline() - try: - i = infloops[line] - i['num'] += 1 - except KeyError: - infloops[line] = {'file': f.readline(), 'usr': f.readline(), 'src': f.readline(), 'num': 1} - - elif 'runtime error:' in line: - try: - i = runtimes[line] - i['num'] += 1 - except KeyError: - runtimes[line] = {'proc': f.readline(), 'file': f.readline(), 'usr': f.readline(), 'src': f.readline(), 'num': 1} - - elif 'Path :' in line: - try: - i = harddels[line] - i['num'] += int(f.readline().split()[2]) - except KeyError: - harddels[line] = {'num': int(f.readline().split()[2])} - - -def writeToFile(target='output.txt'): - global runtimes, infloops, harddels - f = open(target, 'w') - - f.write('Note: The proc name, file, and usr are all from the FIRST of the identical runtimes. Everything else is cropped.\n\n') - if len(infloops): - f.write('Total unique infinite loops: {}\n'.format(len(infloops))) - f.write('Total infinite loops: {}\n\n'.format(sum((i[1]['num'] for i in infloops)))) - - if len(runtimes): - f.write('Total unique runtimes: {}\n'.format(len(runtimes))) - f.write('Total runtimes: {}\n\n'.format(sum((i[1]['num'] for i in runtimes)))) - - if len(harddels): - f.write('Total unique hard deletions: {}\n'.format(len(harddels))) - f.write('Total hard deletions: {}\n\n'.format(sum((i[1]['num'] for i in harddels)))) - - if len(infloops): - f.write('** Infinite loops **\n') - for t in infloops: - i = t[1] - f.write('The following infinite loop has occured {} time(s).\n'.format(i['num'])) - f.write(''.join([t[0], i['file'], i['usr'], i['src']])) - f.write('\n') - - if len(runtimes): - f.write('** Runtimes **\n') - for t in runtimes: - i = t[1] - f.write('The following runtime has occured {} time(s).\n'.format(i['num'])) - f.write(''.join([t[0], i['proc'], i['file'], i['usr'], i['src']])) - f.write('\n') - - if len(harddels): - f.write('** Hard deletions **\n') - for t in harddels: - i = t[1] - f.write('The following path has failed to GC {} time(s).\n'.format(i['num'])) - f.write('{}\n'.format(t[0])) - - -if __name__ == '__main__': - readFromFile() - - runtimes = sorted(runtimes.items(), key=lambda x: x[1]['num'], reverse=True) - infloops = sorted(infloops.items(), key=lambda x: x[1]['num'], reverse=True) - harddels = sorted(harddels.items(), key=lambda x: x[1]['num'], reverse=True) - - writeToFile() diff --git a/tools/mapmerge/maintloot.py b/tools/mapmerge/maintloot.py new file mode 100755 index 00000000000..6da36aa9fb9 --- /dev/null +++ b/tools/mapmerge/maintloot.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +import argparse +import collections +import re + +from map_helpers import parse_map + +if __name__=='__main__': + parser = argparse.ArgumentParser() + parser.add_argument("mapfile") + + args = parser.parse_args() + M = parse_map(args.mapfile) + # Format of this map parsing + # dict(coordinates->mapkey) + grid = M["grid"] + # dict(mapkey->tilecontents) + dictionary = M["dictionary"] + # tilecontents are a list of atoms, path is first + + lootdrop_path = "/obj/effect/spawner/lootdrop/maintenance" + area_path = "/area" + + follow_up = set() + for key, atoms in dictionary.items(): + #atom is a string + for atom in atoms: + if atom.startswith(lootdrop_path): + if(key in follow_up): + print("Hey, '{}' has multiple maintlootdrops...") + follow_up.add(key) + + # Count the number of times each map key appears + appears = collections.Counter() + for coord, key in grid.items(): + if key in follow_up: + appears[key] += 1 + + tally = collections.Counter() + for key in follow_up: + # Because I am a terrible person, and don't actually care about + # building a proper parser for this "object notation" that byond + # uses, I'm just going to cheat. + area = None + count = 0 + + for atom in dictionary[key]: + if atom.startswith(lootdrop_path): + amount = 1 + mo = re.search(r'lootcount = (\d+)', atom) + if mo is not None: + amount = int(mo.group(1)) + count += amount + + elif atom.startswith(area_path): + area = atom + + # Multiply by the number of times this model is used + tally[area] += (count * appears[key]) + + for area, total in tally.items(): + print("{}: {}".format(area, total)) + + print("TOTAL: {}".format(sum(tally.values())))