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/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm
index dd60f599a3f..fe15b19a5ec 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{
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/misc.dm b/code/__DEFINES/misc.dm
index 6da4887e902..8ae4a5d974b 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -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
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/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/subsystem.dm b/code/controllers/subsystem.dm
index dea6e9645a0..7decbd16a22 100644
--- a/code/controllers/subsystem.dm
+++ b/code/controllers/subsystem.dm
@@ -92,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/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 9bbfe5412ff..677ccc18254 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -275,13 +275,16 @@
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..b62367c4cb9 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 += ""
diff --git a/code/datums/martial.dm b/code/datums/martial.dm
index 6ecff3fcaf9..46e18dde7d7 100644
--- a/code/datums/martial.dm
+++ b/code/datums/martial.dm
@@ -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/bodypart/affecting = D.get_bodypart(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/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/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index 7f433d5fc36..037d0d246ea 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -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/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index 1ff18339458..72112430613 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -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/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm
index 99ec015d119..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)
@@ -36,11 +39,14 @@
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/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm
index a9c9d2b07d9..d4c60625f27 100644
--- a/code/game/gamemodes/changeling/powers/panacea.dm
+++ b/code/game/gamemodes/changeling/powers/panacea.dm
@@ -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/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 6b619838ded..f6b7c033c34 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -23,43 +23,13 @@
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
@@ -75,7 +45,7 @@
/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()
@@ -113,13 +83,14 @@
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
if("sacrifice" in cult_objectives)
@@ -139,12 +110,12 @@
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 +151,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 +169,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 += "