diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 05947daa3e316..3d9990882a788 100755
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -176,7 +176,7 @@
"dt" = (/obj/structure/stool/bed/chair/wood/normal{dir = 1},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"du" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/awaymission/academy/classrooms)
"dv" = (/obj/structure/stool,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
-"dw" = (/obj/item/seeds/eggyseed,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
+"dw" = (/obj/item/seeds/eggplant/eggy,/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dx" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dy" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/academy/classrooms)
"dz" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/item/weapon/weldingtool,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
@@ -194,7 +194,7 @@
"dL" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/replicapod,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dM" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dN" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
-"dO" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/bluespacetomatoseed,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
+"dO" = (/obj/machinery/hydroponics/constructable,/obj/effect/anomaly/bluespace,/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dP" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/awaymission/academy/classrooms)
"dQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/awaymission/academy/classrooms)
"dR" = (/obj/machinery/door/airlock/freezer,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/academy/classrooms)
diff --git a/_maps/RandomZLevels/blackmarketpackers.dmm b/_maps/RandomZLevels/blackmarketpackers.dmm
index bbe7eb3f77652..5b14c336d0c20 100644
--- a/_maps/RandomZLevels/blackmarketpackers.dmm
+++ b/_maps/RandomZLevels/blackmarketpackers.dmm
@@ -220,7 +220,7 @@
"el" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{tag = "icon-carpet"; icon_state = "carpet"},/area/awaymission/BMPship/Fore)
"em" = (/obj/machinery/hydroponics,/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHWEST)"; icon_state = "green"; dir = 10},/area/awaymission/BMPship/Midship)
"en" = (/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
-"eo" = (/obj/machinery/seed_extractor,/obj/item/seeds/walkingmushroommycelium,/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
+"eo" = (/obj/machinery/seed_extractor,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom,/turf/simulated/floor/plasteel{tag = "icon-green"; icon_state = "green"},/area/awaymission/BMPship/Midship)
"ep" = (/obj/machinery/hydroponics,/turf/simulated/floor/plasteel{tag = "icon-green (SOUTHEAST)"; icon_state = "green"; dir = 6},/area/awaymission/BMPship/Midship)
"eq" = (/turf/simulated/wall/shuttle{tag = "icon-swall2"; icon_state = "swall2"},/area/awaymission/BMPship/Midship)
"er" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/awaymission/BMPship/Midship)
diff --git a/_maps/map_files/MetaStation/MetaStation.v40D.dmm b/_maps/map_files/MetaStation/MetaStation.v40D.dmm
index 72045be4efa5a..4dde69eaf1383 100755
--- a/_maps/map_files/MetaStation/MetaStation.v40D.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v40D.dmm
@@ -30,7 +30,7 @@
"aaD" = (/obj/structure/flora/kirbyplants{tag = "icon-plant-15"; icon_state = "plant-15"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaE" = (/obj/machinery/biogenerator,/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "Prison Hydroponics"; network = list("SS13","Prison")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaF" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/prison)
-"aaG" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/ambrosiavulgarisseed,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
+"aaG" = (/obj/machinery/hydroponics/constructable,/obj/item/seeds/ambrosia,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaH" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaI" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaJ" = (/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/item/weapon/cultivator,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
@@ -40,7 +40,7 @@
"aaN" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/pod_2)
"aaO" = (/turf/simulated/wall/shuttle{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/pod_2)
"aaP" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
-"aaQ" = (/obj/machinery/hydroponics/constructable,/obj/item/weapon/cultivator,/obj/item/seeds/carrotseed,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
+"aaQ" = (/obj/machinery/hydroponics/constructable,/obj/item/weapon/cultivator,/obj/item/seeds/carrot,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/cultivator,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
"aaS" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/prison)
"aaT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison)
@@ -1954,7 +1954,7 @@
"aLD" = (/obj/machinery/biogenerator,/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"})
"aLE" = (/obj/structure/table,/obj/item/weapon/cultivator,/obj/item/weapon/hatchet,/obj/item/weapon/crowbar,/obj/machinery/light{dir = 1},/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"})
"aLF" = (/obj/machinery/seed_extractor,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"})
-"aLG" = (/obj/item/seeds/appleseed,/obj/item/seeds/bananaseed,/obj/item/seeds/cocoapodseed,/obj/item/seeds/grapeseed,/obj/item/seeds/orangeseed,/obj/item/seeds/sugarcaneseed,/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/structure/table,/obj/item/seeds/towermycelium,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"})
+"aLG" = (/obj/item/seeds/apple,/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/construction{name = "\improper Garden"})
"aLH" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"})
"aLI" = (/mob/living/simple_animal/chicken{name = "Featherbottom"; real_name = "Featherbottom"},/turf/simulated/floor/grass,/area/hallway/secondary/construction{name = "\improper Garden"})
"aLJ" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/wirecutters,/obj/item/weapon/weldingtool,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -5401,7 +5401,7 @@
"bZS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hallway/primary/central)
"bZT" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 4; name = "Hydroponics Desk"; req_access_txt = "0"; req_one_access_txt = "30;35"},/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/turf/simulated/floor/plasteel{dir = 4; icon_state = "greenfull"; tag = "icon-whitehall (WEST)"},/area/hydroponics)
"bZU" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics)
-"bZV" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hydroponics)
+"bZV" = (/obj/machinery/plantgenes,/obj/item/weapon/storage/box/disks_plantgene,/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hydroponics)
"bZW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 8},/area/hydroponics)
"bZX" = (/obj/machinery/hydroponics/constructable,/turf/simulated/floor/plasteel,/area/hydroponics)
"bZY" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics)
@@ -5474,7 +5474,7 @@
"cbn" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_CO2 = 0; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hydroponics)
"cbo" = (/turf/simulated/floor/plasteel,/area/hydroponics)
"cbp" = (/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics)
-"cbq" = (/obj/item/seeds/wheatseed,/obj/item/seeds/sugarcaneseed,/obj/item/seeds/potatoseed,/obj/item/seeds/appleseed,/obj/item/weapon/grown/corncob,/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin{pixel_y = 5},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hydroponics)
+"cbq" = (/obj/item/weapon/grown/corncob,/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin{pixel_y = 5},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera/autoname{dir = 8; network = list("SS13")},/obj/structure/table/glass,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hydroponics)
"cbr" = (/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cbs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/landmark/start{name = "Botanist"},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cbt" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -5958,8 +5958,8 @@
"ckD" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"ckE" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = 0; pixel_y = 31},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"ckF" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/obj/machinery/door_control{dir = 2; id = "rndshuttersup"; name = "Shutters Control Button"; pixel_x = 26; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"; tag = "icon-whitehall (WEST)"},/area/toxins/lab)
-"ckG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
-"ckH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
+"ckG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
+"ckH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"ckI" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science{name = "Security Post - Research Division"})
"ckJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Post - Research Division"; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/checkpoint/science{name = "Security Post - Research Division"})
"ckK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6242,10 +6242,10 @@
"cqb" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab)
"cqc" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"},/area/toxins/lab)
"cqd" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/camera{c_tag = "Research and Development"; dir = 8; network = list("SS13","RD")},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/stock_parts/scanning_module,/obj/item/weapon/stock_parts/scanning_module,/turf/simulated/floor/plasteel,/area/toxins/lab)
-"cqe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
+"cqe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"cqf" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"})
"cqg" = (/obj/machinery/door/airlock{name = "Research Emergency Storage"; req_access_txt = "0"; req_one_access_txt = "47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
-"cqh" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/doorresearch.dmi'; id_tag = ""; name = "Research Break Room"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"})
+"cqh" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Break Room"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"})
"cqi" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced/tinted/fulltile,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"cqj" = (/turf/simulated/wall,/area/toxins/explab)
"cqk" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/explab)
@@ -7623,10 +7623,10 @@
"cQE" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Access"; req_access_txt = "47"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
"cQF" = (/turf/simulated/wall,/area/toxins/xenobiology)
"cQG" = (/obj/machinery/biogenerator,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cQH" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/obj/structure/rack{layer = 2.8},/obj/item/seeds/wheatseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/watermelonseed,/obj/item/seeds/grapeseed,/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cQI" = (/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/rack{layer = 2.8},/obj/item/seeds/cornseed,/obj/item/seeds/cabbageseed,/obj/item/seeds/ambrosiavulgarisseed,/obj/item/seeds/grassseed,/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cQJ" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/carrotseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cQK" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/obj/item/seeds/cornseed,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
+"cQH" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange,/obj/item/weapon/reagent_containers/food/snacks/grown/grapes,/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,/obj/structure/rack{layer = 2.8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
+"cQI" = (/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/weapon/storage/bag/plants/portaseeder,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/cultivator,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/rack{layer = 2.8},/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
+"cQJ" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
+"cQK" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
"cQL" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/device/analyzer/plant_analyzer,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
"cQM" = (/obj/machinery/power/solar_control{id = "aftstarboard"; name = "Aft Starboard Solar Control"; track = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cQN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar)
@@ -7662,379 +7662,374 @@
"cRr" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
"cRs" = (/obj/item/clothing/head/tinfoil,/turf/simulated/floor/plating{tag = "icon-platingdmg2"; icon_state = "platingdmg2"},/area/maintenance/aft{name = "Aft Maintenance"})
"cRt" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cRu" = (/obj/item/seeds/watermelonseed,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cRv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cRw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cRx" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
-"cRy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
-"cRz" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cRA" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cRB" = (/obj/machinery/door/airlock/centcom{layer = 2.7; name = "Crematorium"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cRC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cRD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cRE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cRF" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cRG" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted/fulltile,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cRH" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/turf/simulated/floor/carpet,/area/chapel/main)
-"cRI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/chapel/main)
-"cRJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/carpet,/area/chapel/main)
-"cRK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main)
-"cRL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/chapel/main)
-"cRM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cRN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRQ" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRS" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRT" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Departure Lounge Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRW" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRY" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cRZ" = (/obj/structure/table,/obj/machinery/newscaster/security_unit{pixel_x = 29; pixel_y = 1},/obj/machinery/camera{c_tag = "Departure Lounge - Security Post"; dir = 1; network = list("SS13")},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -4; pixel_y = 4},/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSa" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cSb" = (/obj/item/seeds/moonflowerseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cSc" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cSd" = (/obj/item/seeds/berryseed,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cSe" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
-"cSf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar)
-"cSg" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cSh" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cSi" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cSj" = (/obj/machinery/power/apc{dir = 2; lighting = 3; name = "Chapel Office APC"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cSk" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
-"cSl" = (/obj/machinery/door/morgue{name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cSm" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cSn" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cSo" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cSp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cSq" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cSr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cSs" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cSt" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cSu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSv" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSw" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSx" = (/obj/structure/grille,/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced/fulltile{health = 1e+007},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSy" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSA" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSB" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSC" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSD" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSE" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSF" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cSG" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
-"cSH" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/weapon/cultivator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
-"cSI" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/ambrosiavulgarisseed,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
-"cSJ" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/watermelonseed,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
-"cSK" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/berryseed,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
-"cSL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/office)
-"cSM" = (/obj/machinery/door/airlock/centcom{name = "Chapel Office"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
-"cSN" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cSO" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cSP" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cSQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cSR" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cSS" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cST" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSV" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSW" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cSX" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cSY" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cSZ" = (/obj/machinery/doorButtons/access_button{idDoor = "xeno_airlock_exterior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cTa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cTb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "chapelparlourshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main)
-"cTc" = (/obj/structure/closet/coffin,/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/chapel/main)
-"cTd" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main)
-"cTe" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
-"cTf" = (/obj/structure/sign/atmosplaque{desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; pixel_x = 0; pixel_y = 32},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
-"cTg" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/book/bible,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
-"cTh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/main)
-"cTi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/effect/decal/cleanable/cobweb2,/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTk" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cTl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cTm" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cTn" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cTo" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cTp" = (/obj/machinery/camera{c_tag = "Departure Lounge - Port Aft"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/flora/kirbyplants{tag = "icon-plant-04"; icon_state = "plant-04"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/beacon,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTv" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTw" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/flora/kirbyplants{tag = "icon-plant-16"; icon_state = "plant-16"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTx" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
-"cTy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
-"cTz" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology)
-"cTA" = (/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/chapel/main)
-"cTB" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTD" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTE" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTG" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cTH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cTI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cTJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cTK" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cTL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cTM" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cTN" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTO" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTQ" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cTR" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cTS" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cTT" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology - Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cTU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cTV" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "waste_in"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/space)
-"cTW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cTX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cTY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cTZ" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main)
-"cUa" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cUb" = (/obj/structure/stool/bed/chair{pixel_y = -2},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cUc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUe" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cUh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cUi" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUj" = (/obj/item/weapon/storage/book/bible,/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cUl" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/camera{c_tag = "Chapel - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cUm" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUn" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUo" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUp" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUr" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUs" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUt" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/doorButtons/access_button{idDoor = "xeno_airlock_interior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
-"cUu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cUv" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
-"cUw" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main)
-"cUx" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUy" = (/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
-"cUz" = (/obj/item/device/flashlight/lantern{pixel_y = 7},/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUA" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUB" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cUC" = (/obj/machinery/door/airlock/external{name = "Departure Lounge Airlock"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUD" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 2; name = "xenobiology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUE" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/weapon/storage/box/syringes{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUF" = (/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUG" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 8},/obj/machinery/power/apc{dir = 1; name = "Xenobiology APC"; pixel_x = 0; pixel_y = 27},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cUI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUJ" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes{pixel_x = 3; pixel_y = 5},/obj/item/weapon/storage/box/monkeycubes{pixel_x = -3; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUK" = (/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUL" = (/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/structure/table/glass,/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUM" = (/obj/machinery/smartfridge/extract,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cUN" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUO" = (/mob/living/simple_animal/hostile/retaliate/bat{name = "Orlocke"; real_name = "Orlocke"; turns_per_move = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUP" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
-"cUQ" = (/obj/machinery/mass_driver{dir = 2; id = "chapelgun"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/device/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main)
-"cUR" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
-"cUS" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
-"cUT" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cUU" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cUV" = (/obj/machinery/light/small,/obj/machinery/door_control{id = "chapelspaceshutters"; name = "Space Window Shutter Control"; pixel_x = -6; pixel_y = -25; req_access_txt = "0"},/obj/machinery/light_switch{pixel_x = 6; pixel_y = -25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
-"cUW" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUX" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
-"cUY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cUZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVa" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVb" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVc" = (/obj/machinery/chem_heater,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVd" = (/obj/machinery/doorButtons/airlock_controller{idExterior = "xeno_airlock_exterior"; idInterior = "xeno_airlock_interior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVf" = (/obj/machinery/camera{c_tag = "Xenobiology Lab - Fore"; dir = 2; network = list("SS13","RD")},/obj/machinery/firealarm{dir = 2; pixel_y = 26},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVg" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVh" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVi" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
-"cVj" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVk" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
-"cVl" = (/obj/machinery/door/morgue{name = "Chapel Garden"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
-"cVm" = (/obj/machinery/light/small,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/door_control{id = "chapelparlourshutters"; name = "Window Shutter Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cVn" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cVo" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cVp" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
-"cVq" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main)
-"cVr" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "chapelspaceshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main)
-"cVs" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; tag = "icon-sink (WEST)"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVt" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVu" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVw" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVx" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVz" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cVA" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVB" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
-"cVC" = (/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVD" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main)
-"cVE" = (/obj/docking_port/stationary{dheight = 0; dir = 2; dwidth = 2; height = 22; id = "emergency_home"; name = "emergency evac bay"; width = 14},/turf/space,/area/space)
-"cVF" = (/obj/item/weapon/extinguisher{pixel_x = 4; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHWEST)"; icon_state = "whitepurple"; dir = 10},/area/toxins/xenobiology)
-"cVG" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVH" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVI" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/xenobiology)
-"cVJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
-"cVK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cVL" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cVM" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cVN" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
-"cVO" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/toxins/xenobiology)
-"cVP" = (/obj/machinery/monkey_recycler,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVQ" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVR" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/toxins/xenobiology)
-"cVS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVU" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVV" = (/obj/item/stack/cable_coil,/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVW" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVX" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cVZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
-"cWa" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
-"cWb" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
-"cWc" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
-"cWd" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWe" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWf" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWg" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology)
-"cWh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
-"cWi" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
-"cWj" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
-"cWk" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
-"cWl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWm" = (/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWn" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWo" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWp" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
-"cWq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWs" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWt" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
-"cWu" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWv" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWx" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWy" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
-"cWz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
-"cWA" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWB" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
-"cWC" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
-"cWD" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWE" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology)
-"cWG" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cWH" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWI" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Xenobiology Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cWJ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
-"cWL" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/toxins/xenobiology)
-"cWM" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
-"cWN" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWO" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #3"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWP" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
-"cWQ" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "lightsout"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWR" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
-"cWS" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #4"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cWT" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
-"cWU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cWV" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
-"cWW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
-"cWX" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cWY" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
-"cWZ" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
-"cXa" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXb" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/space,/area/solar/starboard)
-"cXc" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/space,/area/solar/starboard)
-"cXd" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXe" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXf" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/space,/area/solar/starboard)
-"cXg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXh" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
-"cXi" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
-"cXj" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
-"cXk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXm" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
-"cXn" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #5"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXo" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
-"cXp" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXq" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
-"cXr" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #6"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXt" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXu" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
-"cXw" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXx" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXz" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXA" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
-"cXB" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
-"cXC" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXD" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cXE" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard)
-"cXF" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Xenobiology Lab - Aft-Port"; dir = 4; network = list("SS13","RD")},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
-"cXG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXJ" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
-"cXK" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Xenobiology Lab - Aft-Starboard"; dir = 8; network = list("SS13","RD")},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
-"cXL" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXM" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXN" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXO" = (/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
-"cXP" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
-"cXQ" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology)
-"cXR" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
-"cXS" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
-"cXT" = (/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
-"cXU" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
-"cXV" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXW" = (/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXX" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXY" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cXZ" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYa" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYc" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYd" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYe" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYf" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
-"cYg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cYh" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYi" = (/obj/structure/disposaloutlet{dir = 2},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYj" = (/obj/item/organ/internal/body_egg/alien_embryo,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYk" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/device/electropack,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYl" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYm" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1; unacidable = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYn" = (/mob/living/simple_animal/pug,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYo" = (/obj/item/device/beacon,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYp" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYq" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYr" = (/obj/machinery/computer/rdconsole/experiment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYs" = (/obj/machinery/light{dir = 2},/obj/machinery/camera{c_tag = "Xenobiology Lab - Test Chamber"; dir = 1; network = list("SS13","RD","Xeno")},/obj/machinery/r_n_d/experimentor,/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYt" = (/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYu" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
-"cYv" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYy" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
-"cYz" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
-"cYA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space)
-"cYB" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/space)
-"cYC" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_s"; name = "south of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
+"cRu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
+"cRv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
+"cRw" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
+"cRx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{name = "Solar Maintenance"; req_access = null; req_access_txt = "10; 13"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
+"cRy" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cRz" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cRA" = (/obj/machinery/door/airlock/centcom{layer = 2.7; name = "Crematorium"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cRB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cRC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cRD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cRE" = (/obj/machinery/light_switch{pixel_x = 28; pixel_y = 0},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/camera{c_tag = "Chapel Office"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cRF" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted/fulltile,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cRG" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "Chapel APC"; pixel_x = -25},/turf/simulated/floor/carpet,/area/chapel/main)
+"cRH" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/chapel/main)
+"cRI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/carpet,/area/chapel/main)
+"cRJ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/carpet,/area/chapel/main)
+"cRK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/chapel/main)
+"cRL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Chapel"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cRM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRP" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=10-Aft-Central"; location = "9.5-Escape2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRR" = (/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Departure Lounge Security Post"; req_access_txt = "63"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRV" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 10},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRW" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRX" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "red"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRY" = (/obj/structure/table,/obj/machinery/newscaster/security_unit{pixel_x = 29; pixel_y = 1},/obj/machinery/camera{c_tag = "Departure Lounge - Security Post"; dir = 1; network = list("SS13")},/obj/item/weapon/book/manual/wiki/security_space_law{pixel_x = -4; pixel_y = 4},/obj/item/device/taperecorder{pixel_x = 4; pixel_y = 0},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 6},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cRZ" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cSa" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
+"cSb" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
+"cSc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar)
+"cSd" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cSe" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cSf" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cSg" = (/obj/machinery/power/apc{dir = 2; lighting = 3; name = "Chapel Office APC"; pixel_x = 0; pixel_y = -25},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cSh" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
+"cSi" = (/obj/machinery/door/morgue{name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cSj" = (/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; pixel_x = 25},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cSk" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cSl" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cSm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cSn" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cSo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cSp" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cSq" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cSr" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSs" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSu" = (/obj/structure/grille,/obj/structure/flora/ausbushes/fernybush,/obj/structure/flora/ausbushes/fullgrass,/obj/structure/flora/ausbushes/brflowers,/obj/structure/flora/ausbushes/sunnybush,/obj/structure/window/reinforced/fulltile{health = 1e+007},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSv" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSx" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSy" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/sign/electricshock{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSz" = (/turf/simulated/wall,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSA" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSB" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cSD" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/seeds/glowshroom,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
+"cSE" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/weapon/cultivator,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
+"cSF" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/aft{name = "Aft Maintenance"})
+"cSG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/office)
+"cSH" = (/obj/machinery/door/airlock/centcom{name = "Chapel Office"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/office)
+"cSI" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cSJ" = (/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cSK" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cSL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool,/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cSM" = (/obj/structure/stool,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cSN" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cSO" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSQ" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSR" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cSS" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cST" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cSU" = (/obj/machinery/doorButtons/access_button{idDoor = "xeno_airlock_exterior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cSV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cSW" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "chapelparlourshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main)
+"cSX" = (/obj/structure/closet/coffin,/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/chapel/main)
+"cSY" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/chapel/main)
+"cSZ" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/fancy/candle_box,/obj/item/weapon/storage/fancy/candle_box{pixel_x = -2; pixel_y = 2},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
+"cTa" = (/obj/structure/sign/atmosplaque{desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom."; icon_state = "kiddieplaque"; name = "Remembrance Plaque"; pixel_x = 0; pixel_y = 32},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/item/weapon/reagent_containers/food/snacks/grown/poppy{pixel_y = 2},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
+"cTb" = (/obj/structure/noticeboard{desc = "A memorial wall for pinning up momentos"; name = "memorial board"; pixel_y = 32},/obj/item/weapon/storage/book/bible,/obj/structure/table/wood,/turf/simulated/floor/carpet,/area/chapel/main)
+"cTc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/chapel/main)
+"cTd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTe" = (/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/effect/decal/cleanable/cobweb2,/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTf" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cTg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cTh" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cTi" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cTj" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cTk" = (/obj/machinery/camera{c_tag = "Departure Lounge - Port Aft"; dir = 4; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/flora/kirbyplants{tag = "icon-plant-04"; icon_state = "plant-04"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTn" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/beacon,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTp" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTq" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=9.5-Escape2"; location = "9-Escape"},/obj/machinery/bot/secbot{auto_patrol = 1; health = 35; maxhealth = 35; name = "Inspector Johnson"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTr" = (/obj/machinery/camera{c_tag = "Departure Lounge - Starboard Aft"; dir = 8; network = list("SS13")},/obj/machinery/light{dir = 4},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/flora/kirbyplants{tag = "icon-plant-16"; icon_state = "plant-16"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTs" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
+"cTt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
+"cTu" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/toxins/xenobiology)
+"cTv" = (/obj/structure/closet/coffin,/turf/simulated/floor/plating,/area/chapel/main)
+"cTw" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTy" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTz" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTB" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cTD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cTE" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cTF" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cTG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cTH" = (/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cTI" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTJ" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTL" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cTM" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/shower{tag = "icon-shower (EAST)"; icon_state = "shower"; dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cTN" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cTO" = (/obj/structure/closet/l3closet/scientist,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Xenobiology - Airlock"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cTP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cTQ" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "waste_in"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/space)
+"cTR" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cTS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cTT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cTU" = (/obj/machinery/door/window/eastleft{dir = 4; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor/plating,/area/chapel/main)
+"cTV" = (/obj/structure/stool/bed/chair{pixel_y = -2},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cTW" = (/obj/structure/stool/bed/chair{pixel_y = -2},/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cTX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cTZ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/centcom{name = "Mortuary"; opacity = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cUc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cUd" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUe" = (/obj/item/weapon/storage/book/bible,/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cUg" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/camera{c_tag = "Chapel - Starboard"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cUh" = (/obj/structure/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUi" = (/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUj" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUm" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUn" = (/obj/structure/sign/vacuum{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUo" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/doorButtons/access_button{idDoor = "xeno_airlock_interior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = 8; pixel_y = -28; req_access_txt = "0"},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
+"cUp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cUq" = (/obj/structure/closet/l3closet/scientist,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology)
+"cUr" = (/obj/structure/closet/coffin,/obj/machinery/light/small,/turf/simulated/floor/plating,/area/chapel/main)
+"cUs" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/camera{c_tag = "Chapel - Funeral Parlour"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUt" = (/obj/machinery/camera{c_tag = "Chapel - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "chapel"},/area/chapel/main)
+"cUu" = (/obj/item/device/flashlight/lantern{pixel_y = 7},/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUv" = (/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUw" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cUx" = (/obj/machinery/door/airlock/external{name = "Departure Lounge Airlock"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUy" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 2; name = "xenobiology air connector port"},/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUz" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 7},/obj/item/weapon/storage/box/syringes{pixel_y = 5},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUA" = (/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUB" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 8},/obj/machinery/power/apc{dir = 1; name = "Xenobiology APC"; pixel_x = 0; pixel_y = 27},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cUD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1449; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUE" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/monkeycubes{pixel_x = 3; pixel_y = 5},/obj/item/weapon/storage/box/monkeycubes{pixel_x = -3; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUF" = (/obj/structure/table/glass,/obj/item/weapon/folder/white{pixel_y = 4},/obj/item/weapon/pen,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUG" = (/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/structure/table/glass,/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/obj/item/stack/sheet/mineral/plasma{layer = 2.9; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUH" = (/obj/machinery/smartfridge/extract,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cUI" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUJ" = (/mob/living/simple_animal/hostile/retaliate/bat{name = "Orlocke"; real_name = "Orlocke"; turns_per_move = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUK" = (/obj/machinery/door/window{dir = 4; name = "Mass Driver"; req_access_txt = "22"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
+"cUL" = (/obj/machinery/mass_driver{dir = 2; id = "chapelgun"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/obj/item/device/gps,/turf/simulated/floor/plating{tag = "icon-warnplate (NORTH)"; icon_state = "warnplate"; dir = 1},/area/chapel/main)
+"cUM" = (/obj/structure/bookcase{name = "Holy Bookcase"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"cUN" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 4; icon_state = "chapel"},/area/chapel/main)
+"cUO" = (/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cUP" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cUQ" = (/obj/machinery/light/small,/obj/machinery/door_control{id = "chapelspaceshutters"; name = "Space Window Shutter Control"; pixel_x = -6; pixel_y = -25; req_access_txt = "0"},/obj/machinery/light_switch{pixel_x = 6; pixel_y = -25},/turf/simulated/floor/plasteel{dir = 1; icon_state = "chapel"},/area/chapel/main)
+"cUR" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUS" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
+"cUT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{dir = 9; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUV" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUW" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUX" = (/obj/machinery/chem_heater,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUY" = (/obj/machinery/doorButtons/airlock_controller{idExterior = "xeno_airlock_exterior"; idInterior = "xeno_airlock_interior"; idSelf = "xeno_airlock_control"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cUZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVa" = (/obj/machinery/camera{c_tag = "Xenobiology Lab - Fore"; dir = 2; network = list("SS13","RD")},/obj/machinery/firealarm{dir = 2; pixel_y = 26},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVb" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVc" = (/obj/structure/stool/bed/chair/office/light{dir = 1; pixel_y = 3},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVd" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitepurple"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology)
+"cVe" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVf" = (/obj/machinery/hydroponics/soil{pixel_y = 8},/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
+"cVg" = (/obj/machinery/door/morgue{name = "Chapel Garden"; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/chapel/main)
+"cVh" = (/obj/machinery/light/small,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/door_control{id = "chapelparlourshutters"; name = "Window Shutter Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "0"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cVi" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cVj" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cVk" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/machinery/driver_button{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = -4; pixel_y = -26},/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
+"cVl" = (/turf/simulated/floor/plating{icon_state = "warnplate"},/area/chapel/main)
+"cVm" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "chapelspaceshutters"; name = "chapel shutters"},/turf/simulated/floor/plating,/area/chapel/main)
+"cVn" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; tag = "icon-sink (WEST)"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVo" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVp" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVr" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVs" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cVv" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVw" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
+"cVx" = (/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVy" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main)
+"cVz" = (/obj/docking_port/stationary{dheight = 0; dir = 2; dwidth = 2; height = 22; id = "emergency_home"; name = "emergency evac bay"; width = 14},/turf/space,/area/space)
+"cVA" = (/obj/item/weapon/extinguisher{pixel_x = 4; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-whitepurple (SOUTHWEST)"; icon_state = "whitepurple"; dir = 10},/area/toxins/xenobiology)
+"cVB" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVC" = (/obj/machinery/disposal,/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurplecorner"},/area/toxins/xenobiology)
+"cVE" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
+"cVF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cVG" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cVH" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cVI" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
+"cVJ" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/toxins/xenobiology)
+"cVK" = (/obj/machinery/monkey_recycler,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVL" = (/obj/machinery/processor{desc = "A machine used to process slimes and retrieve their extract."; name = "Slime Processor"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVM" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whitepurple"},/area/toxins/xenobiology)
+"cVN" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVO" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVP" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVQ" = (/obj/item/stack/cable_coil,/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVR" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cVU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
+"cVV" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
+"cVW" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/toxins/xenobiology)
+"cVX" = (/obj/structure/cable,/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard)
+"cVY" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cVZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWa" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology)
+"cWc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
+"cWd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
+"cWe" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
+"cWf" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio8"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
+"cWg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWh" = (/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWi" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWj" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #1"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWk" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #1"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
+"cWl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWm" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWn" = (/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWo" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #2"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
+"cWp" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #2"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWq" = (/mob/living/carbon/slime,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWr" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWs" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio3"; name = "containment blast door"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWt" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
+"cWu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
+"cWv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWw" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
+"cWx" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
+"cWy" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWz" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWA" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology)
+"cWB" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cWC" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWD" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera{c_tag = "Xenobiology Lab - Central"; dir = 8; network = list("SS13","RD")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cWE" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
+"cWG" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/toxins/xenobiology)
+"cWH" = (/obj/structure/window/reinforced,/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio7"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
+"cWI" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWJ" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #3"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWK" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #3"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
+"cWL" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "lightsout"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWM" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #4"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
+"cWN" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #4"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cWO" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard)
+"cWP" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio2"; name = "containment blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWQ" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
+"cWR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
+"cWS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cWT" = (/turf/simulated/floor/plasteel{tag = "icon-warnwhitecorner"; icon_state = "warnwhitecorner"; dir = 2},/area/toxins/xenobiology)
+"cWU" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
+"cWV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio7"; name = "containment blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cWW" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/space,/area/solar/starboard)
+"cWX" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/space,/area/solar/starboard)
+"cWY" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cWZ" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cXa" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/space,/area/solar/starboard)
+"cXb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXc" = (/obj/machinery/light{dir = 1},/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = -24; pixel_y = 24; req_access_txt = "55"},/turf/simulated/floor/plasteel{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/xenobiology)
+"cXd" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/xenobiology)
+"cXe" = (/obj/structure/window/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 24; pixel_y = 24; req_access_txt = "55"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
+"cXf" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXg" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXh" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
+"cXi" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #5"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXj" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #5"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
+"cXk" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Scientist"},/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXl" = (/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen #6"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
+"cXm" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen #6"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXn" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXo" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXp" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio1"; name = "containment blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXq" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/toxins/xenobiology)
+"cXr" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXs" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXt" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXu" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXv" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology)
+"cXw" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
+"cXx" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "xenobio6"; name = "containment blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXy" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXz" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless,/area/solar/starboard)
+"cXA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera{c_tag = "Xenobiology Lab - Aft-Port"; dir = 4; network = list("SS13","RD")},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
+"cXB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cXC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cXD" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cXE" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/xenobiology)
+"cXF" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Xenobiology Lab - Aft-Starboard"; dir = 8; network = list("SS13","RD")},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/xenobiology)
+"cXG" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXH" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXI" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXJ" = (/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
+"cXK" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
+"cXL" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/ignition_switch{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/door_control{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology)
+"cXM" = (/obj/machinery/door/window/southleft{dir = 1; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
+"cXN" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology)
+"cXO" = (/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
+"cXP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
+"cXQ" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXR" = (/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXS" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXT" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXU" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXV" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXW" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXX" = (/obj/machinery/door/window/southleft{dir = 2; name = "Maximum Security Test Chamber"; req_access_txt = "55"},/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cXY" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cXZ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/door/poddoor/preopen{id = "Xenolab"; name = "test chamber blast door"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cYa" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
+"cYb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cYc" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYd" = (/obj/structure/disposaloutlet{dir = 2},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYe" = (/obj/item/organ/internal/body_egg/alien_embryo,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYf" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/device/electropack,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYg" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYh" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1; unacidable = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYi" = (/mob/living/simple_animal/pug,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYj" = (/obj/item/device/beacon,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYk" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYl" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYm" = (/obj/machinery/computer/rdconsole/experiment,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYn" = (/obj/machinery/light{dir = 2},/obj/machinery/camera{c_tag = "Xenobiology Lab - Test Chamber"; dir = 1; network = list("SS13","RD","Xeno")},/obj/machinery/r_n_d/experimentor,/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYo" = (/obj/item/device/radio/intercom{pixel_y = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYp" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
+"cYq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cYr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cYs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cYt" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology)
+"cYu" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
+"cYv" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless,/area/space)
+"cYw" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating/airless,/area/space)
+"cYx" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_s"; name = "south of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8218,41 +8213,41 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaaacFzcOscOtcIgcOtcOscOucOvcOwcOxcOycOzcFAaaaaaacOAbWtcOBbWtbWtbWtcOCbWtbWtbWtbWtcODcOEcOFcOGcOHcOFcOIcOJcOKcOLcOMcONcOOcOPcOQcORcORcOScOTcOUcOVcOWcOXcxmcxmcOYcxmcOZcLmcPacPbcPccPdcPacPecxmcxmcPfcLLcxmcxmcxmcPgbWtckUcPhcPicOpcPjcPkcPlcOpaahaahaahaahaahaahaahaahaahaahaahaahaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcFzcFzcFAcFzcFAcFzcPmcPncPocPpcPqcPrcFzaahaahcOAcPscPtcOAcPucPvcPwcPxcPycPzbWtbWtbWtbWtcPAbWtbWtbWtbWtbWtcPBcOMcPCcOMcPDcPEcPFcOMcPGcPHcPIbWtbWtbWtbWtbWtbWtczpcPJcdcbWtcPKcPLcPMbWtcgrcdccPNbWtbWtbWtbWtbWtbWtbWtbWtbWtcrLcOpcPOcPPcPQcOpaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaahaahcPRcPScPTcPUcPVcPWcPXcPYcPZcFzaaaaaacOAcQacQbcOAcQccQdcQecQfcOAcOAcQgcQhcQicQjcQkcQlcQmcQncQocQpcQqcOMcPCcOMcQrcQscQtcOMcQucQvcQwcQxcQycQzcQAcQBbWtcQCbWtbWtbWtcQDcQEcQFbWtbWtbWtcogbWtcQGcQHcQIbWtcQJcQKcQLbWtcqtcOpcQMcQNcQOcOpaaaaahaaaaaaaaaaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaaaaahaaaaaacQPaaacQQcFzcFzcFzcFzcFzcFzcFzaaaaaacOAcQRcQScOAcQTcQUcQVcQWcOAcQXcQYcQZcRacRbcRccRdcRecRecRfcRgcRhcRicRjcOMcQrcRkcQtcOMcPGcPHcQrcRlcRmcOMcRncRobWtcRpbWtaahaaacRqcRrcRqaaaaaaaahaaabWtcRsbZkbZkcRtcgmcRucgmcRvcRwcOpcRxcRycRxcOpaaaaahaaaaahaahaaaaaaaaharaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahaahaaaaaaaaaaahaahaahaaaaaaaaaaahaaaaaaaaacOAcRzcRAcRBcRCcRDcREcRFcOAcRGcOAcRHcRIcRJcRKcRLcRacRacRMcRNcROcRPcRQcRRcQrcRScQtcOMcPGcRTcRUcRVcRWcRXcRYcRZbWtcQCbWtaahaahcRqcSacRqaahaahaahaaabWtcSbbZkbZkcSccSdbZgcSebWtcogcOpcRxcSfcRxaahaaaaahaaaaaaaahaahaahaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaacOAcQRcSgcOAcShcSicSjcSkcSlcSmcOAcSncSocSpcSqcSrcSscStcQocQpcQtcOMcSucSvcSwcSxcSycRPcSzcSAcSBcSCcSCcSDcSEcSCbWtacmaahaaaaaacRqcSFcRqaaaaaaaahaahbWtcSGcSHcSIbWtcSJcSKcSIbWtaaaaahcRxcRycRxaahaaaaahaaaaaaaahaahaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaahaafaagaafaahaafaafaafaahcQgcQgcQgcOAcOAcOAcOAcSLcSMcOAcOAcOAcSNcSOcSPcSqcSQcSRcSScQgcQgcQtcOMcOMcOMcQrcQscQtcOMcSTcSUcSVcSWaahaahaaaaaaaahacmaahaaacSXcSYcSZcSYcSXaaaaahaaabWtbWtbWtbWtbWtbWtbWtbWtbWtaaaaahaaacTaaaaaahaahaahaahaahaahaaaaaaaahaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacTbcTccTdcQgcTecTfcTgcThcTicTjcQgcTkcTlcTmcTncSqcSrcSscStcTocQgcTpcOMcTqcTrcTscTtcTucTrcTvcOMcTwcSCaaaaahaahaahaahaahaahaahcSYcTxcTycTzcSYaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaahaaacTaaaaaahaahaaaaaaaaaaahaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacTbcTAcTdcTBcTCcTCcTCcTDcTEcTFcTGcTHcTIcTHcTJcTCcTKcTJcTLcTMcQocTNcTOcTPcTOcTOcTOcTOcTOcTPcTOcTQcSWaaaaahaaaaaaaahaaaaaaaaacSYcTRcTScTTcTUcTVaahaahaahaahaahaahaahaahaahaahaahaahaahaaacTWcTXcTXcTXcTYaaaaaaaaaaaaaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacTbcTAcTZcTicUacUbcUacUccUdcUecUfcUgcUhcUicUicUjcUicUicUkcUlcQgcUmcUncUocUncUncUpcUncUncUqcUrcUscSCaahaahaaacSYcSYcSYcSYcSYcSYcUtcUucUvcSYcSYcSYcSYcSYcSYaahaaaaaaaaaaaaaahaaaaaaaahaaaaaaaaaaaaaaacTaaaaaaaaahaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahaaacTbcUwcTdcTicUacUacUacUxcQgcQgcQgcQgcUycUzcSqcUAcSqcUzcUBcQgcQgcSWcUCcSWcUCcSWcSWcSWcUCcUCcSWcSWcSCaaaaahaahcSYcUDcUEcUFcUGcSYcUHcUIcSYcSYcUJcUKcULcUMcSYaahaahaahaaaaaaaahaaharaaoqaraaahaahaahaahcTaaahaahaahaahaahaafaoqaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcQgcQgcQgcUNcSqcSqcUOcSqcUPcUQcQgcURcUScUTcUTcUUcUTcUTcUVcQgaaacSWcUWcSWcUncSWaaacSWcUncUXcSWaaaaaaaaaaahaaacRqcUYcUZcVacVbcVccVdcVecVfcVgcVgcVhcVgcVicRqaahaaaaahaahaahaahaahaaaaahaaaaahaaaaaaaaacVjaaaaaaaahaaaaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacTbcVkcVlcVmcVncVncVocUUcVpcVqcQgcQgcQgcVrcVrcVrcVrcVrcQgcQgaahcSWcUCcSWcUCcSWaahcSWcUCcUCcSWaahaahaahaahaaacRqcVscVtcVucVvcVvcVwcVxcVycVycVycVycVzcVAcRqaahaaaaaaaaaaaaaaaaafaaacVBcVBcVBcVBcVBaahcVCaahcVBcVBcVBcVBcVBaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcQgcTbcQgcQgcTbcTbcTbcTbcQgcVDcQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVEaaaaaaaaaaaaaahaaacSYcVFcVGcVHcVIcVJcVKcVLcVMcVNcVOcVPcVQcVRcSYaahaaaaaaaaaaaaaaaaoqaahcVScVTcVTcVTcVTcVUcVVcVWcVXcVXcVXcVXcVYaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcQFcQFcQFcQFcQDcVZcWacWbcQDcQFcQFcQFcQFcSYaahaahaahaahaahaahaoqaahcWccWccWccWccWcaaacVCaaacWccWccWccWccWcaahaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWdcWecWecWfcWgcWhcWicWjcWkcWlcWmcWmcWmcSYaaaaaaaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaacVCaaaaahaaaaahaaaaahaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcSYcWncWmcWmcWocWpcWqcWrcWscWtcWucWmcWvcWwcSYaahaaaaaaaaaaaaaaaaoqaaacVBcVBcVBcVBcVBaahcVCaahcVBcVBcVBcVBcVBaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWmcWmcWmcWxcWycWzcWAcWBcWCcWDcWecWecWEcSYaahaaaaaaaaaaahaahaoqaahcVScVTcVTcVTcVTcVUcVCcVWcVXcVXcVXcVXcVYaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcQFcQFcQFcQFcWFcWGcWHcWIcWFcQFcQFcQFcQFcSYaahaaaaaaaaaaaaaahaoqaahcWccWccWccWccWcaaacVCaahcWccWccWccWccWcaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWdcWecWecWJcWgcWKcWHcWLcWMcWNcWmcWmcWmcSYaahaahaaaaaaaaaaaharaaaaaahaaaaahaaaaahaaacVCaaaaahaaaaahaahaahaaharaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWncWvcWmcWOcWPcWqcWQcWscWRcWScWmcWmcWwcSYaahaaaaaaaaaaaaaaaaoqaaacVBcVBcVBcVBcVBaahcWTaahcVBcVBcVBcVBcVBaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcSYcWmcWmcWmcWUcWVcWWcWXcWYcWZcXacWecWecWEcSYaahaaaaaaaaaaaaaahaoqaahcVScVTcVTcVTcVTcXbcVCcXccVXcVXcVXcVXcVYaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcSYcQFcQFcQFcQFcWFcXdcWHcXecWFcQFcQFcQFcQFcSYcSYaahaahaahaahaahaahaahcWccWccWccWccWcaaacXfaaacWccWccWccWccWcaaaaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWdcWecWecXgcWgcXhcXicWHcWLcWjcXjcXkcXlcWmcWmcSYaaaaaaaaaaaaaaaaafaaaaaaaahaahaahaaaaaacTaaahaaaaaaaahaahaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcWncWmcWmcXncXocWscWscXpcWscWscXqcXrcXscWmcWwcSYaaaaaaaaaaaaaaaaoqaafaoqaoqaoqaaaaaaaaacTaaaaaaaaaaaoqaoqaoqaraaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcXtcWmcWmcXucXvcXwcXxcXycXzcXAcXBcXCcXDcWecWEcSYaahaahaaaaahaahaaaaaaaaaaaaaahaaaaoqaahcXEaahaoqaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcSYcSYcSYcSYcXFcXGcXHcXIcVMcXJcXKcSYcSYcSYcSYcSYaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaaaaahaaaaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacSYcXLcXMcXNcXOcXPcXQcXRcXScXTcXUcXVcXWcXXcSYaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaoqaoqaoqaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacSYcSYcXYcSYcXZcYacYbcYccYdcYecXZcSYcXWcSYcSYaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahcSYcXYcSYcSYcYgcYhcWmcYicYgcSYcSYcXWcSYaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcXYcSYcWmcWmcYhcYjcWmcWmcYkcSYcXWcSYaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSYcXYcSYcYlcWmcYmcYncYocWmcYpcSYcXWcSYaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcSYcXYcSYcYqcWmcYrcYscWmcYtcYucSYcXWcSYaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcXYcSYcSYcSYcSYcSYcSYcSYcSYcSYcXWcSYaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSYcYvcYwcYwcYwcYxcYycXWcXWcXWcXWcXWcSYaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSYcSYcSYcSYcSYcRqcYzcRqcSYcSYcSYcSYcSYaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaaaaahaahaaaaaacYAaaaaahaahaahaahaahaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaaaaaaaaaaaaaaacYBaaaaaaaahaaaaahaaaaahaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaaaaahaaaaaacQPaaacQQcFzcFzcFzcFzcFzcFzcFzaaaaaacOAcQRcQScOAcQTcQUcQVcQWcOAcQXcQYcQZcRacRbcRccRdcRecRecRfcRgcRhcRicRjcOMcQrcRkcQtcOMcPGcPHcQrcRlcRmcOMcRncRobWtcRpbWtaahaaacRqcRrcRqaaaaaaaahaaabWtcRsbZkbZkcRtcgmcgmcgmcRucRvcOpcRwcRxcRwcOpaaaaahaaaaahaahaaaaaaaaharaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaahaahaahaaaaaaaaaaahaahaahaaaaaaaaaaahaaaaaaaaacOAcRycRzcRAcRBcRCcRDcREcOAcRFcOAcRGcRHcRIcRJcRKcRacRacRLcRMcRNcROcRPcRQcQrcRRcQtcOMcPGcRScRTcRUcRVcRWcRXcRYbWtcQCbWtaahaahcRqcRZcRqaahaahaahaaabWtbZkbZkbZkcSabZkbZgcSbbWtcogcOpcRwcSccRwaahaaaaahaaaaaaaahaahaahaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaahaaaaaaaaaaahaaaaaaaaacOAcQRcSdcOAcSecSfcSgcShcSicSjcOAcSkcSlcSmcSncSocSpcSqcQocQpcQtcOMcSrcSscStcSucSvcROcSwcSxcSycSzcSzcSAcSBcSzbWtacmaahaaaaaacRqcSCcRqaaaaaaaahaahbWtcSDcSEcSFbWtcSFcSFcSFbWtaaaaahcRwcRxcRwaahaaaaahaaaaaaaahaahaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaahaafaagaafaahaafaafaafaahcQgcQgcQgcOAcOAcOAcOAcSGcSHcOAcOAcOAcSIcSJcSKcSncSLcSMcSNcQgcQgcQtcOMcOMcOMcQrcQscQtcOMcSOcSPcSQcSRaahaahaaaaaaaahacmaahaaacSScSTcSUcSTcSSaaaaahaaabWtbWtbWtbWtbWtbWtbWtbWtbWtaaaaahaaacSVaaaaahaahaahaahaahaahaaaaaaaahaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacSWcSXcSYcQgcSZcTacTbcTccTdcTecQgcTfcTgcThcTicSncSocSpcSqcTjcQgcTkcOMcTlcTmcTncTocTpcTmcTqcOMcTrcSzaaaaahaahaahaahaahaahaahcSTcTscTtcTucSTaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaahaaacSVaaaaahaahaaaaaaaaaaahaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacSWcTvcSYcTwcTxcTxcTxcTycTzcTAcTBcTCcTDcTCcTEcTxcTFcTEcTGcTHcQocTIcTJcTKcTJcTJcTJcTJcTJcTKcTJcTLcSRaaaaahaaaaaaaahaaaaaaaaacSTcTMcTNcTOcTPcTQaahaahaahaahaahaahaahaahaahaahaahaahaahaaacTRcTScTScTScTTaaaaaaaaaaaaaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaacSWcTvcTUcTdcTVcTWcTVcTXcTYcTZcUacUbcUccUdcUdcUecUdcUdcUfcUgcQgcUhcUicUjcUicUicUkcUicUicUlcUmcUncSzaahaahaaacSTcSTcSTcSTcSTcSTcUocUpcUqcSTcSTcSTcSTcSTcSTaahaaaaaaaaaaaaaahaaaaaaaahaaaaaaaaaaaaaaacSVaaaaaaaahaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahaaacSWcUrcSYcTdcTVcTVcTVcUscQgcQgcQgcQgcUtcUucSncUvcSncUucUwcQgcQgcSRcUxcSRcUxcSRcSRcSRcUxcUxcSRcSRcSzaaaaahaahcSTcUycUzcUAcUBcSTcUCcUDcSTcSTcUEcUFcUGcUHcSTaahaahaahaaaaaaaahaaharaaoqaraaahaahaahaahcSVaahaahaahaahaahaafaoqaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcQgcQgcQgcUIcSncSncUJcSncUKcULcQgcUMcUNcUOcUOcUPcUOcUOcUQcQgaaacSRcURcSRcUicSRaaacSRcUicUScSRaaaaaaaaaaahaaacRqcUTcUUcUVcUWcUXcUYcUZcVacVbcVbcVccVbcVdcRqaahaaaaahaahaahaahaahaaaaahaaaaahaaaaaaaaacVeaaaaaaaahaaaaaaaaaaaaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSWcVfcVgcVhcVicVicVjcUPcVkcVlcQgcQgcQgcVmcVmcVmcVmcVmcQgcQgaahcSRcUxcSRcUxcSRaahcSRcUxcUxcSRaahaahaahaahaaacRqcVncVocVpcVqcVqcVrcVscVtcVtcVtcVtcVucVvcRqaahaaaaaaaaaaaaaaaaafaaacVwcVwcVwcVwcVwaahcVxaahcVwcVwcVwcVwcVwaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcQgcSWcQgcQgcSWcSWcSWcSWcQgcVycQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVzaaaaaaaaaaaaaahaaacSTcVAcVBcVCcVDcVEcVFcVGcVHcVIcVJcVKcVLcVMcSTaahaaaaaaaaaaaaaaaaoqaahcVNcVOcVOcVOcVOcVPcVQcVRcVScVScVScVScVTaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaaaaaaaahaaaaaaaaaaaaaaaaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcQFcQFcQFcQFcQDcVUcVVcVWcQDcQFcQFcQFcQFcSTaahaahaahaahaahaahaoqaahcVXcVXcVXcVXcVXaaacVxaaacVXcVXcVXcVXcVXaahaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcVYcVZcVZcWacWbcWccWdcWecWfcWgcWhcWhcWhcSTaaaaaaaaaaaaaaaaaaaafaaaaahaaaaahaahaahaaacVxaaaaahaaaaahaaaaahaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcSTcWicWhcWhcWjcWkcWlcWmcWncWocWpcWhcWqcWrcSTaahaaaaaaaaaaaaaaaaoqaaacVwcVwcVwcVwcVwaahcVxaahcVwcVwcVwcVwcVwaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcWhcWhcWhcWscWtcWucWvcWwcWxcWycVZcVZcWzcSTaahaaaaaaaaaaahaahaoqaahcVNcVOcVOcVOcVOcVPcVxcVRcVScVScVScVScVTaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcQFcQFcQFcQFcWAcWBcWCcWDcWAcQFcQFcQFcQFcSTaahaaaaaaaaaaaaaahaoqaahcVXcVXcVXcVXcVXaaacVxaahcVXcVXcVXcVXcVXaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcVYcVZcVZcWEcWbcWFcWCcWGcWHcWIcWhcWhcWhcSTaahaahaaaaaaaaaaaharaaaaaahaaaaahaaaaahaaacVxaaaaahaaaaahaahaahaaharaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcWicWqcWhcWJcWKcWlcWLcWncWMcWNcWhcWhcWrcSTaahaaaaaaaaaaaaaaaaoqaaacVwcVwcVwcVwcVwaahcWOaahcVwcVwcVwcVwcVwaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahcSTcWhcWhcWhcWPcWQcWRcWScWTcWUcWVcVZcVZcWzcSTaahaaaaaaaaaaaaaahaoqaahcVNcVOcVOcVOcVOcWWcVxcWXcVScVScVScVScVTaahaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcSTcQFcQFcQFcQFcWAcWYcWCcWZcWAcQFcQFcQFcQFcSTcSTaahaahaahaahaahaahaahcVXcVXcVXcVXcVXaaacXaaaacVXcVXcVXcVXcVXaaaaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcVYcVZcVZcXbcWbcXccXdcWCcWGcWecXecXfcXgcWhcWhcSTaaaaaaaaaaaaaaaaafaaaaaaaahaahaahaaaaaacSVaahaaaaaaaahaahaaaaaaaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcWicWhcWhcXicXjcWncWncXkcWncWncXlcXmcXncWhcWrcSTaaaaaaaaaaaaaaaaoqaafaoqaoqaoqaaaaaaaaacSVaaaaaaaaaaoqaoqaoqaraaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcXocWhcWhcXpcXqcXrcXscXtcXucXvcXwcXxcXycVZcWzcSTaahaahaaaaahaahaaaaaaaaaaaaaahaaaaoqaahcXzaahaoqaaaaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcSTcSTcSTcSTcXAcXBcXCcXDcVHcXEcXFcSTcSTcSTcSTcSTaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaaaaahaaaaoqaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacSTcXGcXHcXIcXJcXKcXLcXMcXNcXOcXPcXQcXRcXScSTaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoqaoqaoqaoqaoqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaaacSTcSTcXTcSTcXUcXVcXWcXXcXYcXZcXUcSTcXRcSTcSTaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahcSTcXTcSTcSTcYbcYccWhcYdcYbcSTcSTcXRcSTaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcXTcSTcWhcWhcYccYecWhcWhcYfcSTcXRcSTaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSTcXTcSTcYgcWhcYhcYicYjcWhcYkcSTcXRcSTaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahcSTcXTcSTcYlcWhcYmcYncWhcYocYpcSTcXRcSTaahaahaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcXTcSTcSTcSTcSTcSTcSTcSTcSTcSTcXRcSTaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSTcYqcYrcYrcYrcYscYtcXRcXRcXRcXRcXRcSTaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaaacSTcSTcSTcSTcSTcRqcYucRqcSTcSTcSTcSTcSTaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaaaaahaahaaaaaacYvaaaaahaahaahaahaahaahaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahaaaaaaaaaaaaaaacYwaaaaaaaahaaaaahaaaaahaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaaaaaaaaaaahaaaaaaaaaaaaaaaaahaaaaaaaaaaagaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaagaagaahaaaaaaaaaaaaaaaaahaagaafaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaagaafaagaaaaaaaahaagaagaagaaaaaaaahaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8276,7 +8271,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -8293,3 +8288,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/_maps/map_files/MetaStation/z5.dmm b/_maps/map_files/MetaStation/z5.dmm
index 32f7717b25825..d1717b04ef550 100755
--- a/_maps/map_files/MetaStation/z5.dmm
+++ b/_maps/map_files/MetaStation/z5.dmm
@@ -87,7 +87,7 @@
"bI" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/abandoned)
"bJ" = (/obj/structure/sink{pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned)
"bK" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned)
-"bL" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/obj/item/seeds/cherryseed,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned)
+"bL" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/obj/item/seeds/cherry,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned)
"bM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"bN" = (/obj/structure/alien/resin/membrane,/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"bO" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
@@ -972,3 +972,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/_maps/map_files/MetaStation/z8.dmm b/_maps/map_files/MetaStation/z8.dmm
index 321e5a36556e0..3dd649fadbfed 100755
--- a/_maps/map_files/MetaStation/z8.dmm
+++ b/_maps/map_files/MetaStation/z8.dmm
@@ -194,16 +194,16 @@
"dL" = (/obj/effect/landmark/corpse/clown,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/grass,/area/planet/clown/village)
"dM" = (/obj/item/weapon/pickaxe/drill/diamonddrill,/obj/effect/landmark/corpse/clown,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/grass,/area/planet/clown/village)
"dN" = (/obj/structure/ore_box,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
-"dO" = (/obj/item/seeds/bananaseed,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
+"dO" = (/obj/item/seeds/banana,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
"dP" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/plating,/area/planet/clown/village)
"dQ" = (/turf/simulated/floor/plating,/area/planet/clown/village)
"dR" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating,/area/planet/clown/village)
"dS" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/space/hardsuit/mining,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/grass,/area/planet/clown/village)
"dT" = (/obj/item/weapon/paper/crumpled/bloody{info = "I was told getting the bananium would be easy...fuck...they lied... If there was any bananium to be mined left, it's gone now. Send word to my family in the Alpha Minorious Sector if you find this."},/turf/simulated/floor/grass,/area/planet/clown/village)
"dU" = (/obj/structure/barricade/wooden,/turf/simulated/floor/grass,/area/planet/clown/village)
-"dV" = (/obj/item/seeds/bananaseed,/mob/living/simple_animal/hostile/asteroid/goldgrub,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
-"dW" = (/obj/item/seeds/bananaseed,/obj/effect/landmark/corpse/clown,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
-"dX" = (/obj/item/seeds/bananaseed,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
+"dV" = (/obj/item/seeds/banana,/mob/living/simple_animal/hostile/asteroid/goldgrub,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
+"dW" = (/obj/item/seeds/banana,/obj/effect/landmark/corpse/clown,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
+"dX" = (/obj/item/seeds/banana,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
"dY" = (/obj/effect/landmark/corpse/clown,/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
"dZ" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
"ea" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/planet/clown/village)
@@ -264,9 +264,9 @@
"fd" = (/obj/effect/decal/remains/human,/obj/effect/rune,/obj/item/clothing/mask/gas/mime,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/core,/turf/simulated/floor/engine/cult,/area/planet/clown/town)
"fe" = (/obj/structure/flora/ausbushes/lavendergrass,/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/grass,/area/planet/clown/village)
"ff" = (/obj/structure/table/wood,/obj/item/clothing/mask/gas/clown_hat,/obj/item/clothing/gloves/color/rainbow/clown,/obj/item/clothing/shoes/clown_shoes{desc = "These shoes appear to be enchanted!"; name = "uhangi's shoes"; slowdown = -1},/obj/item/clothing/under/rank/clown,/obj/item/device/pda/clown,/obj/item/weapon/storage/backpack/clown,/turf/simulated/floor/grass,/area/planet/clown/village)
-"fg" = (/obj/structure/table/wood,/obj/item/seeds/cashseed,/obj/item/seeds/cashseed,/obj/item/weapon/cartridge/clown,/turf/simulated/floor/grass,/area/planet/clown/village)
-"fh" = (/obj/structure/table/wood,/obj/item/seeds/cashseed,/obj/item/seeds/cashseed,/obj/item/weapon/bikehorn,/turf/simulated/floor/grass,/area/planet/clown/village)
-"fi" = (/obj/structure/table/wood,/obj/item/seeds/cashseed,/obj/item/seeds/cashseed,/turf/simulated/floor/grass,/area/planet/clown/village)
+"fg" = (/obj/structure/table/wood,/obj/item/seeds/cash,/obj/item/weapon/cartridge/clown,/turf/simulated/floor/grass,/area/planet/clown/village)
+"fh" = (/obj/structure/table/wood,/obj/item/seeds/cash,/obj/item/weapon/bikehorn,/turf/simulated/floor/grass,/area/planet/clown/village)
+"fi" = (/obj/structure/table/wood,/obj/item/seeds/cash,/turf/simulated/floor/grass,/area/planet/clown/village)
"fj" = (/obj/structure/sign/vacuum,/turf/indestructible{icon_state = "bananium0"; name = "bananium wall"},/area/planet/clown/village)
"fk" = (/obj/structure/window/reinforced/fulltile,/obj/structure/grille,/turf/simulated/floor/plating/dust/airless,/area/planet/clown/village)
"fl" = (/obj/structure/mineral_door/wood,/turf/simulated/floor/wood,/area/planet/clown/town)
@@ -444,3 +444,4 @@ dBdFdFdFdFdFdFdFdFdFdFdFdBdBdBdBdBdBdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdB
dBdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdFdBawawawaFaFaFawaFaFaFaFaFfFawaFaFaFaFaFaFaFaFaFaFaFaFaFaFaFawaFaFaFaFawawawawawdCdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdGdIdIdIdIdIdIdIdIdIdIdIdIdGdGdGdGgjdIdHdC
dBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdCdC
"}
+
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 7d0f0f2354175..24d87bff21cbc 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -160,4 +160,10 @@
#define MAT_BANANIUM "$bananium"
//subtypesof(), typesof() without the parent path
-#define subtypesof(typepath) ( typesof(typepath) - typepath )
\ No newline at end of file
+#define subtypesof(typepath) ( typesof(typepath) - typepath )// Plant types
+
+// Plant types
+#define PLANT_NORMAL 0
+#define PLANT_WEED 1
+#define PLANT_MUSHROOM 2
+#define PLANT_ALIEN 3
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 95914ac6b3050..79cc5601bec23 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -942,33 +942,33 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/datum/supply_packs/organic/hydroponics/seeds
name = "Seeds Crate"
- contains = list(/obj/item/seeds/chiliseed,
- /obj/item/seeds/berryseed,
- /obj/item/seeds/cornseed,
- /obj/item/seeds/eggplantseed,
- /obj/item/seeds/tomatoseed,
- /obj/item/seeds/soyaseed,
- /obj/item/seeds/wheatseed,
- /obj/item/seeds/carrotseed,
- /obj/item/seeds/sunflowerseed,
- /obj/item/seeds/chantermycelium,
- /obj/item/seeds/potatoseed,
- /obj/item/seeds/sugarcaneseed)
+ contains = list(/obj/item/seeds/chili,
+ /obj/item/seeds/berry,
+ /obj/item/seeds/corn,
+ /obj/item/seeds/eggplant,
+ /obj/item/seeds/tomato,
+ /obj/item/seeds/soya,
+ /obj/item/seeds/wheat,
+ /obj/item/seeds/carrot,
+ /obj/item/seeds/sunflower,
+ /obj/item/seeds/chanter,
+ /obj/item/seeds/potato,
+ /obj/item/seeds/sugarcane)
cost = 10
containername = "seeds crate"
/datum/supply_packs/organic/hydroponics/exoticseeds
name = "Exotic Seeds Crate"
- contains = list(/obj/item/seeds/nettleseed,
+ contains = list(/obj/item/seeds/nettle,
/obj/item/seeds/replicapod,
/obj/item/seeds/replicapod,
/obj/item/seeds/replicapod,
- /obj/item/seeds/plumpmycelium,
- /obj/item/seeds/libertymycelium,
- /obj/item/seeds/amanitamycelium,
- /obj/item/seeds/reishimycelium,
- /obj/item/seeds/bananaseed,
- /obj/item/seeds/eggyseed)
+ /obj/item/seeds/plump,
+ /obj/item/seeds/liberty,
+ /obj/item/seeds/amanita,
+ /obj/item/seeds/reishi,
+ /obj/item/seeds/banana,
+ /obj/item/seeds/eggplant/eggy)
cost = 15
containername = "exotic seeds crate"
diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index f5332dc989685..c40223cbce7d4 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -124,10 +124,10 @@ proc/make_mining_asteroid_secret()
if("plantlab")
theme = "plantlab"
- treasureitems = list(/obj/item/weapon/gun/energy/floragun=1,/obj/item/seeds/novaflowerseed=2,/obj/item/seeds/bluespacetomatoseed=2,/obj/item/seeds/bluetomatoseed=2,
- /obj/item/seeds/coffee_robusta_seed=2, /obj/item/seeds/cashseed=2)
- fluffitems = list(/obj/structure/flora/kirbyplants=1,/obj/structure/table/reinforced=2,/obj/machinery/hydroponics=1,
- /obj/effect/glowshroom/single=2,/obj/item/weapon/reagent_containers/syringe/antitoxin=2,
+ treasureitems = list(/obj/item/weapon/gun/energy/floragun=1,/obj/item/seeds/sunflower/novaflower=2,/obj/item/seeds/tomato/blue/bluespace=2,/obj/item/seeds/tomato/blue=2,
+ /obj/item/seeds/coffee/robusta=2, /obj/item/seeds/cash=2)
+ fluffitems = list(/obj/structure/flora/kirbyplants=1,/obj/structure/table/reinforced=2,/obj/machinery/hydroponics/constructable=1,
+ /obj/effect/glowshroom/single=2,
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine=3,/obj/item/weapon/reagent_containers/glass/bottle/ammonia=3)
/*if("poly")
diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm
index a4dc776fb651a..f3f5c6b6a29b8 100644
--- a/code/game/gamemodes/nuclear/nuclearbomb.dm
+++ b/code/game/gamemodes/nuclear/nuclearbomb.dm
@@ -235,13 +235,16 @@ This is here to make the tiles around the station mininuke change when it's arme
//==========DAT FUKKEN DISK===============
+/obj/item/weapon/disk
+ icon = 'icons/obj/module.dmi'
+ w_class = 1
+ item_state = "card-id"
+ icon_state = "datadisk0"
+
/obj/item/weapon/disk/nuclear
name = "nuclear authentication disk"
desc = "Better keep this safe."
- icon = 'icons/obj/items.dmi'
icon_state = "nucleardisk"
- item_state = "card-id"
- w_class = 1.0
/obj/item/weapon/disk/nuclear/New()
..()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 5de568d9d6755..26dc555d99b46 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -53,12 +53,25 @@
/obj/item/weapon/disk/data
name = "cloning data disk"
icon = 'icons/obj/cloning.dmi'
- icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk. //I hope they do
- item_state = "card-id"
- w_class = 1.0
+ icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
var/list/fields = list()
var/read_only = 0 //Well,it's still a floppy disk
+//Disk stuff.
+/obj/item/weapon/disk/data/New()
+ ..()
+ icon_state = "datadisk[rand(0,6)]"
+ overlays += "datadisk_gene"
+
+
+/obj/item/weapon/disk/data/attack_self(mob/user)
+ read_only = !read_only
+ user << "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"]."
+
+/obj/item/weapon/disk/data/examine(mob/user)
+ ..()
+ user << "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
+
//Find a dead mob with a brain and client.
/proc/find_dead_player(var/find_key)
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 700736bb799e4..608d4b8004825 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -793,3 +793,14 @@ to destroy them and players will be able to make replacements.
req_components = list(
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/matter_bin = 3)
+
+/obj/item/weapon/circuitboard/plantgenes
+ name = "circuit board (Plant DNA Manipulator)"
+ build_path = /obj/machinery/plantgenes
+ board_type = "machine"
+ origin_tech = "programming=2;biotech=3"
+ req_components = list(
+ /obj/item/weapon/stock_parts/manipulator = 1,
+ /obj/item/weapon/stock_parts/micro_laser = 2,
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/weapon/stock_parts/scanning_module = 1,)
\ No newline at end of file
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 6070f542d2b0d..d4bdeaa76c379 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -841,16 +841,16 @@
product_slogans = "THIS'S WHERE TH' SEEDS LIVE! GIT YOU SOME!;Hands down the best seed selection on the station!;Also certain mushroom varieties available, more for experts! Get certified today!"
product_ads = "We like plants!;Grow some crops!;Grow, baby, growww!;Aw h'yeah son!"
icon_state = "seeds"
- products = list(/obj/item/seeds/ambrosiavulgarisseed = 3,/obj/item/seeds/appleseed = 3,/obj/item/seeds/bananaseed = 3,/obj/item/seeds/berryseed = 3,
- /obj/item/seeds/cabbageseed = 3,/obj/item/seeds/carrotseed = 3,/obj/item/seeds/cherryseed = 3,/obj/item/seeds/chantermycelium = 3,
- /obj/item/seeds/chiliseed = 3,/obj/item/seeds/cocoapodseed = 3,/obj/item/seeds/coffee_arabica_seed = 3,/obj/item/seeds/cornseed = 3,
- /obj/item/seeds/eggplantseed = 3,/obj/item/seeds/grapeseed = 3,/obj/item/seeds/grassseed = 3,/obj/item/seeds/lemonseed = 3,
- /obj/item/seeds/limeseed = 3,/obj/item/seeds/orangeseed = 3,/obj/item/seeds/potatoseed = 3,/obj/item/seeds/poppyseed = 3,
- /obj/item/seeds/pumpkinseed = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/soyaseed = 3,/obj/item/seeds/sunflowerseed = 3,
- /obj/item/seeds/tea_aspera_seed = 3,/obj/item/seeds/tobacco_seed = 3,/obj/item/seeds/tomatoseed = 3,
- /obj/item/seeds/towermycelium = 3,/obj/item/seeds/watermelonseed = 3,/obj/item/seeds/wheatseed = 3,/obj/item/seeds/whitebeetseed = 3)
- contraband = list(/obj/item/seeds/amanitamycelium = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/libertymycelium = 2,/obj/item/seeds/nettleseed = 2,
- /obj/item/seeds/plumpmycelium = 2,/obj/item/seeds/reishimycelium = 2)
+ products = list(/obj/item/seeds/ambrosia = 3,/obj/item/seeds/apple = 3,/obj/item/seeds/banana = 3,/obj/item/seeds/berry = 3,
+ /obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3,
+ /obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3,/obj/item/seeds/corn = 3,
+ /obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3,
+ /obj/item/seeds/lime = 3,/obj/item/seeds/orange = 3,/obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3,
+ /obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3,
+ /obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3,
+ /obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3)
+ contraband = list(/obj/item/seeds/amanita = 2,/obj/item/seeds/glowshroom = 2,/obj/item/seeds/liberty = 2,/obj/item/seeds/nettle = 2,
+ /obj/item/seeds/plump = 2,/obj/item/seeds/reishi = 2)
premium = list(/obj/item/weapon/reagent_containers/spray/waterflower = 1)
diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm
index d6dedcf5d5c2a..de69ce47cfd68 100644
--- a/code/game/objects/effects/decals/Cleanable/misc.dm
+++ b/code/game/objects/effects/decals/Cleanable/misc.dm
@@ -134,6 +134,13 @@
icon = 'icons/effects/tomatodecal.dmi'
random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3")
+/obj/effect/decal/cleanable/plant_smudge
+ name = "plant smudge"
+ density = 0
+ layer = 2
+ icon = 'icons/effects/tomatodecal.dmi'
+ random_icon_states = list("smashed_plant")
+
/obj/effect/decal/cleanable/egg_smudge
name = "smashed egg"
desc = "Seems like this one won't hatch."
diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm
new file mode 100644
index 0000000000000..e8c77ceb317c8
--- /dev/null
+++ b/code/modules/awaymissions/mission_code/Cabin.dm
@@ -0,0 +1,132 @@
+/*Cabin areas*/
+/area/awaymission/snowforest
+ name = "Snow Forest"
+ icon_state = "away"
+ requires_power = 0
+ luminosity = 1
+ lighting_use_dynamic = DYNAMIC_LIGHTING_ENABLED
+
+/area/awaymission/cabin
+ name = "Cabin"
+ icon_state = "away2"
+ requires_power = 1
+ luminosity = 0
+ lighting_use_dynamic = DYNAMIC_LIGHTING_ENABLED
+
+/area/awaymission/snowforest/lumbermill
+ name = "Lumbermill"
+ icon_state = "away3"
+
+
+
+
+
+/*Cabin code*/
+/obj/structure/fireplace
+ name = "fireplace"
+ desc = "warm and toasty"
+ icon = 'icons/obj/stationobjs.dmi'
+ icon_state = "fireplace-active"
+ density = 0
+ var/active = 1
+
+/obj/structure/fireplace/initialize()
+ ..()
+ toggleFireplace()
+
+/obj/structure/fireplace/attack_hand(mob/living/user)
+ if(active)
+ active = 0
+ toggleFireplace()
+ else
+ ..()
+
+
+/obj/structure/fireplace/attackby(obj/item/W,mob/living/user,params)
+ if(!active)
+ if(W.is_hot())
+ active = 1
+ toggleFireplace()
+ else
+ ..()
+ else
+ W.fire_act()
+
+/obj/structure/fireplace/proc/toggleFireplace()
+ if(active)
+ SetLuminosity(8)
+ icon_state = "fireplace-active"
+ else
+ SetLuminosity(0)
+ icon_state = "fireplace"
+
+/obj/structure/fireplace/extinguish()
+ if(active)
+ active = 0
+ toggleFireplace()
+
+/obj/structure/fireplace/fire_act()
+ if(!active)
+ active = 1
+ toggleFireplace()
+
+/obj/machinery/recycler/lumbermill
+ name = "lumbermill saw"
+ desc = "Faster then the cartoons!"
+ emagged = 2 //Always grinds people
+
+/obj/machinery/recycler/lumbermill/recycle(obj/item/weapon/grown/log/L, sound = 1)
+ L.loc = src.loc
+ if(!istype(L))
+ return
+ if(sound)
+ playsound(src.loc, 'sound/weapons/chainsawhit.ogg', 100, 1)
+ new L.plank_type(src.loc, 1 + round(L.seed.potency / 25))
+ qdel(L)
+
+/mob/living/simple_animal/chicken/rabbit/normal
+ icon_state = "b_rabbit"
+ icon_living = "b_rabbit"
+ icon_dead = "b_rabbit_dead"
+ icon_prefix = "b_rabbit"
+ minbodytemp = 0
+ eggsleft = 0
+ egg_type = null
+ speak = list()
+
+/*Cabin's forest*/
+/datum/mapGenerator/snowy
+ modules = list(/datum/mapGeneratorModule/snow/pineTrees, \
+ /datum/mapGeneratorModule/snow/deadTrees, \
+ /datum/mapGeneratorModule/snow/randBushes, \
+ /datum/mapGeneratorModule/snow/randIceRocks, \
+ /datum/mapGeneratorModule/snow/bunnies)
+
+/datum/mapGeneratorModule/snow/checkPlaceAtom(turf/T)
+ if(istype(T,/turf/simulated/floor/plating/asteroid/snow))
+ return ..(T)
+ return 0
+
+/datum/mapGeneratorModule/snow/pineTrees
+ spawnableAtoms = list(/obj/structure/flora/tree/pine = 30)
+
+/datum/mapGeneratorModule/snow/deadTrees
+ spawnableAtoms = list(/obj/structure/flora/tree/dead = 10)
+
+/datum/mapGeneratorModule/snow/randBushes
+ spawnableAtoms = list()
+
+/datum/mapGeneratorModule/snow/randBushes/New()
+ ..()
+ spawnableAtoms = typesof(/obj/structure/flora/ausbushes)
+ for(var/i in spawnableAtoms)
+ spawnableAtoms[i] = 1
+
+/datum/mapGeneratorModule/snow/bunnies
+ spawnableAtoms = list(/mob/living/simple_animal/chicken/rabbit/normal = 1)
+
+/datum/mapGeneratorModule/snow/randIceRocks
+ spawnableAtoms = list(/obj/structure/flora/rock/icy = 5, /obj/structure/flora/rock/pile/icy = 5)
+
+/obj/effect/landmark/mapGenerator/snowy
+ mapGeneratorType = /datum/mapGenerator/snowy
\ No newline at end of file
diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm
index dc1690371d7a4..7d31f60a261c3 100644
--- a/code/modules/events/spacevine.dm
+++ b/code/modules/events/spacevine.dm
@@ -317,7 +317,7 @@
master.vines -= src
master.growth_queue -= src
if(!master.vines.len)
- var/obj/item/seeds/kudzuseed/KZ = new(loc)
+ var/obj/item/seeds/kudzu/KZ = new(loc)
KZ.mutations |= mutations
KZ.potency = min(100, master.mutativness * 10)
KZ.production = (master.spread_cap / initial(master.spread_cap)) * 50
diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm
index 2fba39cacb0e3..0ed14efe0edf7 100644
--- a/code/modules/food&drinks/food/snacks.dm
+++ b/code/modules/food&drinks/food/snacks.dm
@@ -11,7 +11,6 @@
var/eatverb
var/wrapped = 0
var/dried_type = null
- var/potency = null
var/dry = 0
var/cooked_type = null //for microwave cooking. path of the resulting item after microwaving
var/filling_color = "#FFFFFF" //color to use when added to custom food.
@@ -32,8 +31,9 @@
usr.unEquip(src) //so icons update :[
if(trash)
- if(ispath(trash,/obj/item/weapon/grown))
- var/obj/item/TrashItem = new trash(usr,src.potency)
+ if(ispath(trash, /obj/item/weapon/grown) && istype(src, /obj/item/weapon/reagent_containers/food/snacks/grown))
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/G = src
+ var/obj/item/TrashItem = new trash(usr, G.seed)
usr.put_in_hands(TrashItem)
else if(ispath(trash,/obj/item))
var/obj/item/TrashItem = new trash(usr)
diff --git a/code/modules/food&drinks/kitchen machinery/juicer.dm b/code/modules/food&drinks/kitchen machinery/juicer.dm
index 3cf4bc60a2a81..88737ab664a7f 100644
--- a/code/modules/food&drinks/kitchen machinery/juicer.dm
+++ b/code/modules/food&drinks/kitchen machinery/juicer.dm
@@ -144,10 +144,10 @@
/obj/machinery/juicer/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
if (!istype(O))
return 5
- else if (O.potency == -1)
+ else if (O.seed.potency == -1)
return 5
else
- return round(5*sqrt(O.potency))
+ return round(5*sqrt(O.seed.potency))
/obj/machinery/juicer/proc/juice()
power_change() //it is a portable machine
diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm
index ff6588fd17f8d..0195279848073 100644
--- a/code/modules/food&drinks/kitchen machinery/processor.dm
+++ b/code/modules/food&drinks/kitchen machinery/processor.dm
@@ -47,6 +47,10 @@
input = /obj/item/weapon/reagent_containers/food/snacks/meat
output = /obj/item/weapon/reagent_containers/food/snacks/faggot
+/datum/food_processor_process/sweetpotato
+ input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
+ output = /obj/item/weapon/reagent_containers/food/snacks/yakiimo
+
/datum/food_processor_process/potato
input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
output = /obj/item/weapon/reagent_containers/food/snacks/fries
@@ -71,9 +75,6 @@
input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
output = /obj/item/weapon/reagent_containers/food/snacks/roastparsnip
-/datum/food_processor_process/sweetpotato
- input = /obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato
- output = /obj/item/weapon/reagent_containers/food/snacks/yakiimo
/* mobs */
diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm
index 8dd5494537d32..5efee927b1efc 100644
--- a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm
+++ b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm
@@ -64,6 +64,6 @@
/datum/reagent/consumable/soymilk = 5,
/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
/obj/item/weapon/reagent_containers/food/snacks/tofu = 3,
- /obj/item/weapon/reagent_containers/food/snacks/grown/mimana = 1
+ /obj/item/weapon/reagent_containers/food/snacks/grown/banana/mime = 1
)
result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/mimana
diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm
index 9aeb323942c2c..5e560e98e1179 100644
--- a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm
+++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm
@@ -189,7 +189,7 @@
time = 15
name = "Poppy pretzel"
reqs = list(
- /obj/item/seeds/poppyseed = 1,
+ /obj/item/seeds/poppy = 1,
/obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1
)
result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel
diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm
index e33a9ed0ac235..6aaa1f2d4c920 100644
--- a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm
+++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm
@@ -113,7 +113,7 @@
reqs = list(
/datum/reagent/consumable/vanilla = 5,
/datum/reagent/water = 5,
- /obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato = 2
+ /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet = 2
)
result = /obj/item/weapon/reagent_containers/food/snacks/pie/dulcedebatata
diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm
index a634aa2ec14b1..aec60a15ca752 100644
--- a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm
+++ b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm
@@ -183,7 +183,7 @@
/datum/reagent/water = 10,
/datum/reagent/consumable/sugar = 5,
/obj/item/weapon/reagent_containers/glass/bowl = 1,
- /obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato = 2
+ /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet = 2
)
result = /obj/item/weapon/reagent_containers/food/snacks/soup/sweetpotato
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
new file mode 100644
index 0000000000000..9b2115934a0cd
--- /dev/null
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -0,0 +1,398 @@
+/obj/machinery/plantgenes
+ name = "plant DNA manipulator"
+ desc = "An advanced device designed to manipulate plant genetic makeup."
+ icon = 'icons/obj/hydroponics/equipment.dmi'
+ icon_state = "dnamod"
+ density = 1
+ anchored = 1
+
+ var/obj/item/seeds/seed
+ var/obj/item/weapon/disk/plantgene/disk
+
+ var/list/core_genes = list()
+ var/list/reagent_genes = list()
+ var/list/trait_genes = list()
+
+ var/datum/plant_gene/target
+ var/operation = ""
+ var/rating = 0 // TODO: add failures, make it useful
+
+/obj/machinery/plantgenes/New()
+ ..()
+ component_parts = list()
+ component_parts += new /obj/item/weapon/circuitboard/plantgenes(src)
+ component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
+ component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
+ component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
+ component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
+ component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
+ RefreshParts()
+
+/obj/machinery/plantgenes/RefreshParts()
+ rating = 0
+ for(var/obj/item/weapon/stock_parts/S in component_parts)
+ rating += S.rating-1
+
+/obj/machinery/plantgenes/update_icon()
+ ..()
+ overlays.Cut()
+ if((stat & (BROKEN|NOPOWER)))
+ icon_state = "dnamod-off"
+ else
+ icon_state = "dnamod"
+ if(seed)
+ overlays += "dnamod-dna"
+ if(panel_open)
+ overlays += "dnamod-open"
+
+/obj/machinery/plantgenes/attackby(obj/item/I, mob/user, params)
+ if(default_deconstruction_screwdriver(user, "dnamod", "dnamod", I))
+ update_icon()
+ return
+ if(exchange_parts(user, I))
+ return
+ if(default_deconstruction_crowbar(I))
+ return
+ if(isrobot(user))
+ return
+
+ if(istype(I, /obj/item/seeds))
+ if(seed)
+ user << "A sample is already loaded into the machine!"
+ else
+ if(!user.drop_item())
+ return
+ insert_seed(I)
+ user << "You add [I] to the machine."
+ interact(user)
+ return
+ else if(istype(I, /obj/item/weapon/disk/plantgene))
+ if(disk)
+ user << "A data disk is already loaded into the machine!"
+ else
+ if(!user.drop_item())
+ return
+ disk = I
+ disk.loc = src
+ user << "You add [I] to the machine."
+ interact(user)
+ else
+ ..()
+
+
+/obj/machinery/plantgenes/attack_hand(mob/user)
+ if(..())
+ return
+ interact(user)
+
+/obj/machinery/plantgenes/interact(mob/user)
+ user.set_machine(src)
+ if(!user)
+ return
+
+ var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) // Set up the popup browser window
+ if(!( in_range(src, user) || istype(user, /mob/living/silicon) ))
+ popup.close()
+ return
+
+ var/dat = ""
+
+ if(operation)
+ if(!seed || (!target && operation != "insert"))
+ operation = ""
+ target = null
+ interact(user)
+ return
+ if((operation == "replace" || operation == "insert") && (!disk || !disk.gene))
+ operation = ""
+ target = null
+ interact(user)
+ return
+
+ dat += "
Confirm Operation
"
+ dat += "Are you sure you want to [operation] "
+ switch(operation)
+ if("remove")
+ dat += "[target.get_name()] gene from \the [seed]?
"
+// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
+ if("extract")
+ dat += "[target.get_name()] gene from \the [seed]?
"
+ dat += "The sample will be destroyed in process!"
+ if("replace")
+ dat += "[target.get_name()] gene with [disk.gene.get_name()]?
"
+// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
+ if("insert")
+ dat += "[disk.gene.get_name()] gene into \the [seed]?
"
+// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
+ dat += "
"
+ popup.set_content(dat)
+ popup.open()
+ return
+
+ dat+= ""
+
+ dat += "
"
+
+ dat += "
"
+
+ dat += "
"
+
+ if(seed)
+ var/can_insert = disk && disk.gene && disk.gene.can_add(seed)
+ var/can_extract = disk && !disk.read_only
+
+ dat += "Core Genes
"
+ for(var/a in core_genes)
+ var/datum/plant_gene/G = a
+ if(!G)
+ continue
+ dat += "[G.get_name()] | "
+ if(can_extract)
+ dat += "Extract"
+ if(can_insert && istype(disk.gene, G.type))
+ dat += "Replace"
+ dat += " |
"
+ dat += "
"
+
+ if(seed.yield != -1)
+ dat += "Content Genes
"
+ if(reagent_genes.len)
+ dat += "
"
+ for(var/a in reagent_genes)
+ var/datum/plant_gene/G = a
+ dat += "[G.get_name()] | "
+ if(can_extract)
+ dat += "Extract"
+ dat += "Remove"
+ dat += " |
"
+ dat += "
"
+ else
+ dat += "No content-related genes detected in sample.
"
+ dat += "
"
+ if(can_insert && istype(disk.gene, /datum/plant_gene/reagent))
+ dat += "Insert: [disk.gene.get_name()]"
+
+ dat += "Trait Genes
"
+ if(trait_genes.len)
+ dat += "
"
+ for(var/a in trait_genes)
+ var/datum/plant_gene/G = a
+ dat += "[G.get_name()] | "
+ if(can_extract)
+ dat += "Extract"
+ dat += "Remove"
+ dat += " |
"
+ dat += "
"
+ else
+ dat += "No trait-related genes detected in sample.
"
+ if(can_insert && istype(disk.gene, /datum/plant_gene/trait))
+ dat += "
Insert: [disk.gene.get_name()]"
+ dat += "
"
+ else
+ dat += "
No sample found.
Please, insert a plant sample to use this device."
+ popup.set_content(dat)
+ popup.open()
+
+
+/obj/machinery/plantgenes/Topic(var/href, var/list/href_list)
+ if(..())
+ return
+ usr.set_machine(src)
+
+ if(href_list["eject_seed"] && !operation)
+ if (seed)
+ seed.loc = src.loc
+ seed.verb_pickup()
+ seed = null
+ update_genes()
+ update_icon()
+ else
+ var/obj/item/I = usr.get_active_hand()
+ if (istype(I, /obj/item/seeds))
+ if(!usr.drop_item())
+ return
+ insert_seed(I)
+ usr << "You add [I] to the machine."
+ update_icon()
+ else if(href_list["eject_disk"] && !operation)
+ if (disk)
+ disk.loc = src.loc
+ disk.verb_pickup()
+ disk = null
+ update_genes()
+ else
+ var/obj/item/I = usr.get_active_hand()
+ if(istype(I, /obj/item/weapon/disk/plantgene))
+ if(!usr.drop_item())
+ return
+ disk = I
+ disk.loc = src
+ usr << "You add [I] to the machine."
+ else if(href_list["op"] == "insert" && disk && disk.gene && seed)
+ if(!operation) // Wait for confirmation
+ operation = "insert"
+ else
+ if(!istype(disk.gene, /datum/plant_gene/core) && disk.gene.can_add(seed))
+ seed.genes += disk.gene.Copy()
+ if(istype(disk.gene, /datum/plant_gene/reagent))
+ seed.reagents_from_genes()
+ update_genes()
+ repaint_seed()
+ operation = ""
+ target = null
+
+ else if(href_list["gene"] && seed)
+ var/datum/plant_gene/G = seed.get_gene(href_list["gene"])
+ if(!G || !href_list["op"] || !(href_list["op"] in list("remove", "extract", "replace")))
+ interact(usr)
+ return
+
+ if(!operation || target != G) // Wait for confirmation
+ target = G
+ operation = href_list["op"]
+
+ else if(operation == href_list["op"] && target == G)
+ switch(href_list["op"])
+ if("remove")
+ if(!istype(G, /datum/plant_gene/core))
+ seed.genes -= G
+ if(istype(G, /datum/plant_gene/reagent))
+ seed.reagents_from_genes()
+ repaint_seed()
+ if("extract")
+ if(disk && !disk.read_only)
+ disk.gene = G
+ disk.update_name()
+ qdel(seed)
+ seed = null
+ update_icon()
+ if("replace")
+ if(disk && disk.gene && istype(disk.gene, G.type) && istype(G, /datum/plant_gene/core))
+ seed.genes -= G
+ var/datum/plant_gene/core/C = disk.gene.Copy()
+ seed.genes += C
+ C.apply_stat(seed)
+ repaint_seed()
+ if("insert")
+ if(disk && disk.gene && !istype(disk.gene, /datum/plant_gene/core) && disk.gene.can_add(seed))
+ seed.genes += disk.gene.Copy()
+ if(istype(disk.gene, /datum/plant_gene/reagent))
+ seed.reagents_from_genes()
+ repaint_seed()
+
+ update_genes()
+ operation = ""
+ target = null
+ else if(href_list["abort"])
+ operation = ""
+ target = null
+
+ interact(usr)
+
+/obj/machinery/plantgenes/proc/insert_seed(obj/item/seeds/S)
+ if(!istype(S) || seed)
+ return
+ S.loc = src
+ seed = S
+ update_genes()
+ update_icon()
+
+/obj/machinery/plantgenes/proc/update_genes()
+ core_genes = list()
+ reagent_genes = list()
+ trait_genes = list()
+
+ if(seed)
+ var/gene_paths = list(
+ /datum/plant_gene/core/potency,
+ /datum/plant_gene/core/yield,
+ /datum/plant_gene/core/production,
+ /datum/plant_gene/core/endurance,
+ /datum/plant_gene/core/lifespan
+ )
+ for(var/a in gene_paths)
+ core_genes += seed.get_gene(a)
+
+ for(var/datum/plant_gene/reagent/G in seed.genes)
+ reagent_genes += G
+ for(var/datum/plant_gene/trait/G in seed.genes)
+ trait_genes += G
+
+/obj/machinery/plantgenes/proc/repaint_seed()
+ if(!seed)
+ return
+ if(copytext(seed.name, 1, 13) == "experimental")
+ return // Already modded name and icon
+ seed.name = "experimental " + seed.name
+ seed.icon_state = "seed-x"
+
+
+/*
+ * Plant DNA disk
+ */
+
+/obj/item/weapon/disk/plantgene
+ name = "plant data disk"
+ desc = "A disk for storing plant genetic data."
+ icon_state = "nucleardisk"
+ materials = list(MAT_METAL=30, MAT_GLASS=10)
+ var/datum/plant_gene/gene
+ var/read_only = 0 //Well, it's still a floppy disk
+
+/obj/item/weapon/disk/plantgene/New()
+ ..()
+ overlays += "datadisk_gene"
+ src.pixel_x = rand(-5, 5)
+ src.pixel_y = rand(-5, 5)
+
+/obj/item/weapon/disk/plantgene/attackby(obj/item/weapon/W, mob/user, params)
+ ..()
+ if(istype(W, /obj/item/weapon/pen))
+ var/t = stripped_input(user, "What would you like the label to be?", name, null)
+ if(user.get_active_hand() != W)
+ return
+ if(!in_range(src, user) && loc != user)
+ return
+ if(t)
+ name = "plant data disk - '[t]'"
+ else
+ name = "plant data disk"
+
+/obj/item/weapon/disk/plantgene/proc/update_name()
+ if(gene)
+ name = "plant data disk - '[gene.get_name()]'"
+ else
+ name = "plant data disk"
+
+/obj/item/weapon/disk/plantgene/attack_self(mob/user)
+ read_only = !read_only
+ user << "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"]."
+
+/obj/item/weapon/disk/plantgene/examine(mob/user)
+ ..()
+ user << "The write-protect tab is set to [src.read_only ? "protected" : "unprotected"]."
+
+
+/*
+ * Plant DNA Disks Box
+ */
+/obj/item/weapon/storage/box/disks_plantgene
+ name = "plant data disks box"
+ icon_state = "disk_kit"
+
+/obj/item/weapon/storage/box/disks_plantgene/New()
+ ..()
+ for(var/i in 1 to 7)
+ new /obj/item/weapon/disk/plantgene(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index b6bca965c84f2..dc4f17f6071f5 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -5,1339 +5,171 @@
// Data from the seeds carry over to these grown foods
// ***********************************************************
-//Grown foods
-//Subclass so we can pass on values
-/obj/item/weapon/reagent_containers/food/snacks/grown/
- var/seed = null
- var/plantname = ""
- var/product //a type path
- var/lifespan = 0
- var/endurance = 0
- var/maturation = 0
- var/production = 0
- var/yield = 0
- var/plant_type = 0
+// Base type. Subtypes are found in /grown dir.
+/obj/item/weapon/reagent_containers/food/snacks/grown
icon = 'icons/obj/hydroponics/harvest.dmi'
- potency = -1
- dried_type = -1 //bit different. saves us from having to define each stupid grown's dried_type as itself. If you don't want a plant to be driable (watermelons) set this to null in the time definition.
+ var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item.
+ var/plantname = ""
+ var/bitesize_mod = 0
+ var/splat_type = /obj/effect/decal/cleanable/plant_smudge
+ // If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod)
+ dried_type = -1
+ // Saves us from having to define each stupid grown's dried_type as itself.
+ // If you don't want a plant to be driable (watermelons) set this to null in the time definition.
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, var/obj/item/seeds/new_seed = null)
+ ..()
+ if(new_seed)
+ seed = new_seed.Copy()
+ else if(ispath(seed))
+ // This is for adminspawn or map-placed growns. They get the default stats of their seed type.
+ seed = new seed()
+ seed.adjust_potency(50-seed.potency)
+ else // Something is terribly wrong
+ qdel(src)
+ return
-/obj/item/weapon/reagent_containers/food/snacks/grown/New(newloc, new_potency = 50)
- ..()
- potency = new_potency
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
if(dried_type == -1)
dried_type = src.type
- if(seed && lifespan == 0) //This is for adminspawn or map-placed growns. They get the default stats of their seed type. This feels like a hack but people insist on putting these things on the map...
- var/obj/item/seeds/S = new seed(src)
- lifespan = S.lifespan
- endurance = S.endurance
- maturation = S.maturation
- production = S.production
- yield = S.yield
- qdel(S) //Foods drop their contents when eaten, so delete the default seed.
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ T.on_new(src, newloc)
+ seed.prepare_result(src)
add_juice()
- transform *= TransformUsingVariable(potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency!
+ transform *= TransformUsingVariable(seed.potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency!
+
/obj/item/weapon/reagent_containers/food/snacks/grown/proc/add_juice()
if(reagents)
+ if(bitesize_mod)
+ bitesize = 1 + round(reagents.total_volume / bitesize_mod)
return 1
return 0
-/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/item/weapon/reagent_containers/food/snacks/grown/examine(user)
..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- var/msg
- msg = "*---------*\n This is \a [src]\n"
- switch(plant_type)
- if(0)
- msg += "- Plant type: Normal plant\n"
- if(1)
- msg += "- Plant type: Weed. Can grow in nutrient-poor soil.\n"
- if(2)
- msg += "- Plant type: Mushroom. Can grow in dry soil.\n"
- msg += "- Potency: [potency]\n"
- msg += "- Yield: [yield]\n"
- msg += "- Maturation speed: [maturation]\n"
- msg += "- Production speed: [production]\n"
- msg += "- Endurance: [endurance]\n"
- msg += "- Nutritional value: [reagents.get_reagent_amount("nutriment")]\n"
- msg += "- Other substances: [reagents.total_volume-reagents.get_reagent_amount("nutriment")]\n"
- msg += "*---------*"
- usr << msg
- return
- return
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ if(T.examine_line)
+ user << T.examine_line
-/obj/item/weapon/grown/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params)
..()
if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- var/msg
- msg = "*---------*\n This is \a [src]\n"
- switch(plant_type)
- if(0)
- msg += "- Plant type: Normal plant\n"
- if(1)
- msg += "- Plant type: Weed. Can grow in nutrient-poor soil.\n"
- if(2)
- msg += "- Plant type: Mushroom. Can grow in dry soil.\n"
- msg += "- Potency: [potency]\n"
- msg += "- Yield: [yield]\n"
- msg += "- Maturation speed: [maturation]\n"
- msg += "- Production speed: [production]\n"
- msg += "- Endurance: [endurance]\n"
+ var/msg = "*---------*\n This is \a [src].\n"
+ msg += seed.get_analyzer_text()
+ msg += "\n- Nutritional value: [reagents.get_reagent_amount("nutriment")]\n"
+ msg += "- Other substances: [reagents.total_volume-reagents.get_reagent_amount("nutriment")]\n"
msg += "*---------*"
- usr << msg
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/corn
- seed = /obj/item/seeds/cornseed
- name = "ear of corn"
- desc = "Needs some butter!"
- icon_state = "corn"
- cooked_type = /obj/item/weapon/reagent_containers/food/snacks/popcorn
- filling_color = "#FFFF00"
- trash = /obj/item/weapon/grown/corncob
- juice_reagents = list("corn_starch" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/corn/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- reagents.add_reagent("cornoil", 1 + round((potency / 10), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
- seed = /obj/item/seeds/cherryseed
- name = "cherries"
- desc = "Great for toppings!"
- icon_state = "cherry"
- gender = PLURAL
- filling_color = "#FF0000"
- grind_reagents = list("cherryjelly" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cherries/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 15), 1))
- reagents.add_reagent("sugar", 1 + round((potency / 15), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
- seed = /obj/item/seeds/bluecherryseed
- name = "blue cherries"
- desc = "They're cherries that are blue."
- icon_state = "bluecherry"
- filling_color = "#6495ED"
- grind_reagents = list("bluecherryjelly" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 15), 1))
- reagents.add_reagent("sugar", 1 + round((potency / 50), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
- seed = /obj/item/seeds/poppyseed
- name = "poppy"
- desc = "Long-used as a symbol of rest, peace, and death."
- icon_state = "poppy"
- slot_flags = SLOT_HEAD
- filling_color = "#FF6347"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- reagents.add_reagent("hotline", 3 + round((potency / 10), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily
- seed = /obj/item/seeds/lilyseed
- name = "lily"
- desc = "A beautiful orange flower"
- icon_state = "lily"
- filling_color = "#FFA500"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium
- seed = /obj/item/seeds/geraniumseed
- name = "geranium"
- desc = "A beautiful blue flower"
- icon_state = "geranium"
- filling_color = "#008B8B"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
- seed = /obj/item/seeds/harebell
- name = "harebell"
- desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten'd not thy breath.\""
- icon_state = "harebell"
- slot_flags = SLOT_HEAD
- filling_color = "#E6E6FA"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/harebell/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 3, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/potato
- seed = /obj/item/seeds/potatoseed
- name = "potato"
- desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
- icon_state = "potato"
- filling_color = "#E9967A"
- juice_reagents = list("potato" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/potato/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = reagents.total_volume
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- ..()
- if(istype(W, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = W
- if (C.use(5))
- user << "You add some cable to the potato and slide it inside the battery encasing."
- var/obj/item/weapon/stock_parts/cell/potato/pocell = new /obj/item/weapon/stock_parts/cell/potato(user.loc)
- pocell.maxcharge = src.potency * 10
- pocell.charge = pocell.maxcharge
- qdel(src)
- return
- else
- user << "You need five lengths of cable to make a potato battery."
- return
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grapes
- seed = /obj/item/seeds/grapeseed
- name = "bunch of grapes"
- desc = "Nutritious!"
- icon_state = "grapes"
- dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin
- filling_color = "#FF1493"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("sugar", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
- seed = /obj/item/seeds/greengrapeseed
- name = "bunch of green grapes"
- desc = "Nutritious!"
- icon_state = "greengrapes"
- dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin
- filling_color = "#7FFF00"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green/add_juice()
- ..()
- reagents.add_reagent("salglu_solution", 3 + round((potency / 5), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
- seed = /obj/item/seeds/cabbageseed
- name = "cabbage"
- desc = "Ewwwwwwwwww. Cabbage."
- icon_state = "cabbage"
- filling_color = "#90EE90"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries
- seed = /obj/item/seeds/berryseed
- name = "bunch of berries"
- desc = "Nutritious!"
- icon_state = "berrypile"
- gender = PLURAL
- juice_reagents = list("berryjuice" = 0)
- filling_color = "#FF00FF"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
- seed = /obj/item/seeds/poisonberryseed
- name = "bunch of poison-berries"
- desc = "Taste so good, you could die!"
- icon_state = "poisonberrypile"
- filling_color = "#C71585"
- juice_reagents = list("poisonberryjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison/add_juice()
- ..()
- reagents.add_reagent("toxin", 3 + round(potency / 5, 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/death
- seed = /obj/item/seeds/deathberryseed
- name = "bunch of death-berries"
- desc = "Taste so good, you could die!"
- icon_state = "deathberrypile"
- filling_color = "#708090"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/death/add_juice()
- ..()
- reagents.add_reagent("toxin", 3 + round(potency / 3, 1))
- reagents.add_reagent("lexorin", 1 + round(potency / 5, 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow
- seed = /obj/item/seeds/glowberryseed
- name = "bunch of glow-berries"
- desc = "Nutritious!"
- var/on = 1
- var/brightness_on = 3 //luminosity when on
- icon_state = "glowberrypile"
- filling_color = "#7CFC00"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow/New()
- set_light(round(potency / 5,1))
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow/add_juice()
- ..()
- reagents.add_reagent("uranium", 3 + round(potency / 5, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
- seed = /obj/item/seeds/cocoapodseed
- name = "cocoa pod"
- desc = "Fattening... Mmmmm... chucklate."
- icon_state = "cocoapod"
- filling_color = "#FFD700"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("cocoa", 4 + round((potency / 5), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
- seed = /obj/item/seeds/vanillapodseed
- name = "vanilla pod"
- desc = "Fattening... Mmmmm... vanilla."
- icon_state = "vanillapod"
- filling_color = "#FFD700"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vanilla", 4 + round((potency / 5), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
- seed = /obj/item/seeds/sugarcaneseed
- name = "sugarcane"
- desc = "Sickly sweet."
- icon_state = "sugarcane"
- filling_color = "#FFD700"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane/add_juice()
- if(..())
- reagents.add_reagent("sugar", 4 + round((potency / 5), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia //abstract type
- name = "ambrosia branch"
- desc = "This is a plant."
- icon_state = "ambrosiavulgaris"
- slot_flags = SLOT_HEAD
- filling_color = "#008000"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1)
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris
- seed = /obj/item/seeds/ambrosiavulgarisseed
- name = "ambrosia vulgaris branch"
- desc = "This is a plant containing various healing chemicals."
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris/add_juice()
- ..()
- reagents.add_reagent("space_drugs", 1 + round(potency / 8, 1))
- reagents.add_reagent("salglu_solution", 1 + round(potency / 8, 1))
- reagents.add_reagent("salglu_solution", 1 + round(potency / 10, 1))
- reagents.add_reagent("toxin", 1 + round(potency / 10, 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
- seed = /obj/item/seeds/ambrosiadeusseed
- name = "ambrosia deus branch"
- desc = "Eating this makes you feel immortal!"
- icon_state = "ambrosiadeus"
- filling_color = "#008B8B"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus/add_juice()
- ..()
- reagents.add_reagent("omnizine", 1 + round(potency / 8, 1))
- reagents.add_reagent("synaptizine", 1 + round(potency / 8, 1))
- reagents.add_reagent("space_drugs", 1 + round(potency / 10, 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple
- seed = /obj/item/seeds/appleseed
- name = "apple"
- desc = "It's a little piece of Eden."
- icon_state = "apple"
- filling_color = "#FF4500"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/add_juice()
- if(..())
- reagents.maximum_volume = 20
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = reagents.maximum_volume // Always eat the apple in one
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
- seed = /obj/item/seeds/poisonedappleseed
- name = "apple"
- desc = "It's a little piece of Eden."
- icon_state = "apple"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned/add_juice()
- ..()
- reagents.add_reagent("cyanide", 1 + round((potency / 5), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold
- seed = /obj/item/seeds/goldappleseed
- name = "golden apple"
- desc = "Emblazoned upon the apple is the word 'Kallisti'."
- icon_state = "goldapple"
- filling_color = "#FFD700"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold/add_juice()
- ..()
- reagents.add_reagent("gold", 1 + round((potency / 5), 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Mineral Content: [reagents.get_reagent_amount("gold")]%"
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
- seed = /obj/item/seeds/watermelonseed
- name = "watermelon"
- desc = "It's full of watery goodness."
- icon_state = "watermelon"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice
- slices_num = 5
- dried_type = null
- w_class = 3
- filling_color = "#008000"
- juice_reagents = list("watermelonjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 6), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon
- seed = /obj/item/seeds/holymelonseed
- name = "holymelon"
- desc = "The water within this melon has been blessed by some deity that's particularly fond of watermelon."
- icon_state = "holymelon"
- filling_color = "#FFD700"
- dried_type = null
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon/add_juice()
- if(..())
- reagents.add_reagent("holywater", 1 + round((potency / 6), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
- seed = /obj/item/seeds/pumpkinseed
- name = "pumpkin"
- desc = "It's large and scary."
- icon_state = "pumpkin"
- filling_color = "#FFA500"
- juice_reagents = list("pumpkinjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 6), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- ..()
- if(is_sharp(W))
- user.show_message("You carve a face into [src]!", 1)
- new /obj/item/clothing/head/hardhat/pumpkinhead (user.loc)
- qdel(src)
+ var/list/scannable_reagents = list("charcoal" = "Anti-Toxin", "morphine" = "Morphine", "amatoxin" = "Amatoxins",
+ "toxin" = "Toxins", "mushroomhallucinogen" = "Mushroom Hallucinogen", "condensedcapsaicin" = "Condensed Capsaicin",
+ "capsaicin" = "Capsaicin", "frostoil" = "Frost Oil", "gold" = "Mineral Content", "glycerol" = "Glycerol",
+ "radium" = "Highly Radioactive Material", "uranium" = "Radioactive Material")
+ var/reag_txt = ""
+ for(var/reagent_id in scannable_reagents)
+ if(reagent_id in seed.reagents_add)
+ var/amt = reagents.get_reagent_amount(reagent_id)
+ reag_txt += "\n- [scannable_reagents[reagent_id]]: [amt*100/reagents.maximum_volume]%"
+
+ if(reag_txt)
+ msg += reag_txt
+ msg += "
*---------*"
+ user << msg
return
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
- seed = /obj/item/seeds/blumpkinseed
- name = "blumpkin"
- desc = "When you're making a mess this blumpkin's there to clean you up."
- icon_state = "blumpkin"
- filling_color = "#87CEFA"
- juice_reagents = list("blumpkinjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 6), 1))
- reagents.add_reagent("ammonia", 1 + round((potency / 6), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/ //abstract type
- seed = /obj/item/seeds/limeseed
- name = "citrus"
- desc = "It's so sour, your face will twist."
- icon_state = "lime"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
- seed = /obj/item/seeds/limeseed
- name = "lime"
- desc = "It's so sour, your face will twist."
- icon_state = "lime"
- filling_color = "#00FF00"
- juice_reagents = list("limejuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon
- seed = /obj/item/seeds/lemonseed
- name = "lemon"
- desc = "When life gives you lemons, be grateful they aren't limes."
- icon_state = "lemon"
- filling_color = "#FFD700"
- juice_reagents = list("lemonjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange
- seed = /obj/item/seeds/orangeseed
- name = "orange"
- desc = "It's an tangy fruit."
- icon_state = "orange"
- filling_color = "#FFA500"
- juice_reagents = list("orangejuice" = 0)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet
- seed = /obj/item/seeds/whitebeetseed
- name = "white-beet"
- desc = "You can't beat white-beet."
- icon_state = "whitebeet"
- filling_color = "#F4A460"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet/add_juice()
- if(..())
- reagents.add_reagent("nutriment", round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- reagents.add_reagent("sugar", 1 + round((potency / 5), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato
- seed = /obj/item/seeds/sweetpotatoseed
- name = "sweet potato"
- desc = "It's sweet."
- icon_state = "sweetpotato"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 10), 1))
- reagents.add_reagent("sugar", 1 + round((potency / 10), 1))
- bitesize = reagents.total_volume
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
- seed = /obj/item/seeds/parsnipseed
- name = "parsnip"
- desc = "Closely related to carrots."
- icon_state = "parsnip"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/parsnip/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/redbeet
- seed = /obj/item/seeds/redbeetseed
- name = "red beet"
- desc = "You can't beat red beet."
- icon_state = "redbeet"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/redbeet/add_juice()
- if(..())
- reagents.add_reagent("nutriment", round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/banana
- seed = /obj/item/seeds/bananaseed
- name = "banana"
- desc = "It's an excellent prop for a clown."
- icon = 'icons/obj/items.dmi'
- icon_state = "banana"
- item_state = "banana"
- trash = /obj/item/weapon/grown/bananapeel
- filling_color = "#FFFF00"
- juice_reagents = list("banana" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/banana/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("banana", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
- user.visible_message("[user] is aiming the [src.name] at themself! It looks like \he's trying to commit suicide.")
- playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1)
- sleep(25)
- user.say("BANG!")
- sleep(25)
- user.visible_message("[user] laughs so hard they begin to suffocate!")
- return (OXYLOSS)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mimana
- seed = /obj/item/seeds/mimanaseed
- name = "mimana"
- desc = "It's an excellent prop for a mime."
- icon_state = "mimana"
- filling_color = "#FFFFEE"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mimana/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("nothing", 2 + round((potency / 10), 1))
- reagents.add_reagent("mutetoxin", 2 + round((potency / 10), 1))
- bitesize = 5
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/chili
- seed = /obj/item/seeds/chiliseed
- name = "chili"
- desc = "It's spicy! Wait... IT'S BURNING ME!!"
- icon_state = "chilipepper"
- filling_color = "#FF0000"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/chili/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- reagents.add_reagent("capsaicin", 3+round(potency / 5, 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/chili/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Capsaicin: [reagents.get_reagent_amount("capsaicin")]%"
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
- seed = /obj/item/seeds/icepepperseed
- name = "ice-pepper"
- desc = "It's a mutant strain of chili"
- icon_state = "icepepper"
- filling_color = "#0000CD"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 50), 1))
- reagents.add_reagent("frostoil", 3+round(potency / 5, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Frostoil: [reagents.get_reagent_amount("frostoil")]%"
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili
- seed = /obj/item/seeds/chilighost
- name = "ghost chili"
- desc = "It seems to be vibrating gently."
- icon_state = "ghostchilipepper"
- var/mob/held_mob
- filling_color = "#F8F8FF"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- reagents.add_reagent("capsaicin", 8+round(potency / 2, 1))
- reagents.add_reagent("condensedcapsaicin", 4+round(potency / 4, 1))
- bitesize = 1 + round(reagents.total_volume / 4, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Capsaicin: [reagents.get_reagent_amount("capsaicin")]%"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/attack_hand(mob/user as mob)
- ..()
- if( istype(src.loc, /mob) )
- held_mob = src.loc
- SSobj.processing |= src
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/process()
- if(held_mob && src.loc == held_mob)
- if( (held_mob.l_hand == src) || (held_mob.r_hand == src))
- if(hasvar(held_mob,"gloves") && held_mob:gloves)
- return
- held_mob.bodytemperature += 20 * TEMPERATURE_DAMAGE_COEFFICIENT
- if(prob(10))
- held_mob << "Your hand holding [src] burns!"
- else
- held_mob = null
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
- seed = /obj/item/seeds/eggplantseed
- name = "eggplant"
- desc = "Maybe there's a chicken inside?"
- icon_state = "eggplant"
- filling_color = "#800080"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/
- var/inside_type = null
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/attack_self(mob/user as mob)
- if(inside_type)
- new inside_type(user.loc)
- user.unEquip(src)
- qdel(src)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy
- seed = /obj/item/seeds/eggyseed
- name = "Egg-plant"
- desc = "There MUST be a chicken inside."
- icon_state = "eggyplant"
- inside_type = /obj/item/weapon/reagent_containers/food/snacks/egg
- filling_color = "#F8F8FF"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
- seed = /obj/item/seeds/soyaseed
- name = "soybeans"
- desc = "It's pretty bland, but oh the possibilities..."
- gender = PLURAL
- icon_state = "soybeans"
- filling_color = "#F0E68C"
- grind_reagents = list("soymilk" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
- seed = /obj/item/seeds/koiseed
- name = "koibean"
- desc = "Something about these seems fishy."
- icon_state = "koibeans"
- filling_color = "#F0E68C"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 30), 1))
- reagents.add_reagent("carpotoxin", 1 + round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
- seed = /obj/item/seeds/moonflowerseed
- name = "moonflower"
- desc = "Store in a location at least 50 yards away from werewolves."
- icon_state = "moonflower"
- slot_flags = SLOT_HEAD
- filling_color = "#E6E6FA"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("moonshine", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 50), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-//tomaters
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato
- seed = /obj/item/seeds/tomatoseed
- name = "tomato"
- desc = "I say to-mah-to, you say tom-mae-to."
- icon_state = "tomato"
- var/splat = /obj/effect/decal/cleanable/tomato_smudge
- filling_color = "#FF6347"
- grind_reagents = list("ketchup" = 0)
- juice_reagents = list("tomatojuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/proc/squish(atom/target)
- new splat(src.loc)
- src.visible_message("The [src.name] has been squashed.","You hear a smack.")
- for(var/atom/A in get_turf(target))
- src.reagents.reaction(A)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/throw_impact(atom/hit_atom)
- ..()
- squish(hit_atom)
- del(src) // Not qdel, because it'll hit other mobs then the floor for runtimes.
return
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer
- seed = /obj/item/seeds/killertomatoseed
- name = "killer-tomato"
- desc = "I say to-mah-to, you say tom-mae-to... OH GOD IT'S EATING MY LEGS!!"
- icon_state = "killertomato"
- var/awakening = 0
- filling_color = "#FF0000"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone)
- if(awakening)
- user << "The tomato is twitching and shaking, preventing you from eating it."
- return
+// Various gene procs
+/obj/item/weapon/reagent_containers/food/snacks/grown/attack_self(mob/user)
+ if(seed.get_gene(/datum/plant_gene/trait/squash))
+ squash(user)
..()
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack_self(mob/user as mob)
- if(awakening || istype(user.loc,/turf/space))
- return
- user << "You begin to awaken the Killer Tomato."
- awakening = 1
-
- spawn(30)
- if(!gc_destroyed)
- var/mob/living/simple_animal/hostile/killertomato/K = new /mob/living/simple_animal/hostile/killertomato(get_turf(src.loc))
- K.maxHealth += round(endurance / 3)
- K.melee_damage_lower += round(potency / 10)
- K.melee_damage_upper += round(potency / 10)
- K.move_to_delay -= round(production / 50)
- K.health = K.maxHealth
- K.visible_message("The Killer Tomato growls as it suddenly awakens.")
- if(user)
- user.unEquip(src)
- qdel(src)
-
-
+/obj/item/weapon/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom)
+ if(!..() && seed.get_gene(/datum/plant_gene/trait/squash)) //was it caught by a mob?
+ squash(hit_atom)
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood
- seed = /obj/item/seeds/bloodtomatoseed
- name = "blood-tomato"
- desc = "So bloody...so...very...bloody....AHHHH!!!!"
- icon_state = "bloodtomato"
- splat = /obj/effect/gibspawner/generic
- filling_color = "#FF0000"
+/obj/item/weapon/reagent_containers/food/snacks/grown/proc/squash(atom/target)
+ var/turf/T = get_turf(target)
+ if(ispath(splat_type, /obj/effect/decal/cleanable/plant_smudge))
+ if(filling_color)
+ var/obj/O = new splat_type(T)
+ O.color = filling_color
+ O.name = "[name] smudge"
+ else if(splat_type)
+ new splat_type(T)
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood/add_juice(var/loc, var/potency = 10)
- ..()
- reagents.add_reagent("blood", 1 + round((potency / 5), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue
- seed = /obj/item/seeds/bluetomatoseed
- name = "blue-tomato"
- desc = "I say blue-mah-to, you say blue-mae-to."
- icon_state = "bluetomato"
- splat = /obj/effect/decal/cleanable/oil
- filling_color = "#0000FF"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/add_juice()
- ..()
- reagents.add_reagent("lube", 1 + round((potency / 5), 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/Crossed(AM as mob|obj)
- if (istype(AM, /mob/living/carbon))
- var/mob/living/carbon/M = AM
- var/stun = Clamp(potency / 10, 1, 10)
- var/weaken = Clamp(potency / 20, 0.5, 5)
- M.slip(stun, weaken, src)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace
- seed = /obj/item/seeds/bluespacetomatoseed
- name = "blue-space tomato"
- desc = "So lubricated, you might slip through space-time."
- icon_state = "bluespacetomato"
- origin_tech = "bluespace=3"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/add_juice()
- ..()
- reagents.add_reagent("singulo", 1 + round((potency / 5), 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/attack_self(var/mob/user)
- squish(user)
- user.drop_item()
- src.visible_message("[user] squashes the [src.name].","You hear a smack.")
- qdel(src)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/squish(atom/squishee)
- ..()
- var/teleport_radius = potency / 10
- if(isliving(squishee))
- new /obj/effect/decal/cleanable/molten_item(squishee.loc) //Leave a pile of goo behind for dramatic effect...
- do_teleport(squishee, get_turf(squishee), teleport_radius)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/wheat
- seed = /obj/item/seeds/wheatseed
- name = "wheat"
- desc = "Sigh... wheat... a-grain?"
- gender = PLURAL
- icon_state = "wheat"
- filling_color = "#F0E68C"
- grind_reagents = list("flour" = -5)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/wheat/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/oat
- seed = /obj/item/seeds/oatseed
- name = "oat"
- desc = "Eat oats, do squats."
- gender = PLURAL
- icon_state = "oat"
- filling_color = "#556B2F"
- grind_reagents = list("flour" = -5)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/oat/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/rice
- seed = /obj/item/seeds/riceseed
- name = "rice"
- desc = "Rice to meet you."
- gender = PLURAL
- icon_state = "rice"
- filling_color = "#FAFAD2"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/rice/add_juice()
- if(..())
- reagents.add_reagent("rice", 1 + round((potency / 6), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grass
- seed = /obj/item/seeds/grassseed
- name = "grass"
- desc = "Green and lush."
- icon_state = "grassclump"
- filling_color = "#32CD32"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grass/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user as mob)
- user << "You prepare the astroturf."
- var/grassAmt = 1 + round(potency / 50) // The grass we're holding
- for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/G in user.loc) // The grass on the floor
- grassAmt += 1 + round(G.potency / 50)
- qdel(G)
- while(grassAmt > 0)
- var/obj/item/stack/tile/GT = new /obj/item/stack/tile/grass(user.loc)
- if(grassAmt >= GT.max_amount)
- GT.amount = GT.max_amount
+ if(trash)
+ if(ispath(trash, /obj/item/weapon/grown) || ispath(trash, /obj/item/weapon/reagent_containers/food/snacks/grown))
+ new trash(T, seed)
else
- GT.amount = grassAmt
- for(var/obj/item/stack/tile/grass/GR in user.loc)
- if(GR != GT && GR.amount < GR.max_amount)
- GR.attackby(GT, user) //we try to transfer all old unfinished stacks to the new stack we created.
- grassAmt -= GT.max_amount
- qdel(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/carpet
- seed = /obj/item/seeds/carpetseed
- name = "carpet"
- desc = "The textile industry's dark secret."
- icon_state = "carpetclump"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/attack_self(mob/user as mob)
- user << "You roll out the red carpet."
- var/carpetAmt = 1 + round(potency / 50) // The carpet we're holding
- for(var/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/C in user.loc) // The carpet on the floor
- carpetAmt += 1 + round(C.potency / 50)
- qdel(C)
- while(carpetAmt > 0)
- var/obj/item/stack/tile/CT = new /obj/item/stack/tile/carpet(user.loc)
- if(carpetAmt >= CT.max_amount)
- CT.amount = CT.max_amount
- else
- CT.amount = carpetAmt
- for(var/obj/item/stack/tile/carpet/CA in user.loc)
- if(CA != CT && CA.amount < CA.max_amount)
- CA.attackby(CT, user) //we try to transfer all old unfinished stacks to the new stack we created.
- carpetAmt -= CT.max_amount
- qdel(src)
- return
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
- seed = /obj/item/seeds/kudzuseed
- name = "kudzu pod"
- desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact."
- icon_state = "kudzupod"
- var/list/mutations = list()
- filling_color = "#6B8E23"
+ new trash(T)
-/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("anti_toxin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
+ visible_message("[src] has been squashed.","You hear a smack.")
+ for(var/datum/plant_gene/trait/trait in seed.genes)
+ trait.on_squash(src, target)
+ for(var/A in T)
+ reagents.reaction(A)
-/obj/item/weapon/reagent_containers/food/snacks/grown/carrot
- seed = /obj/item/seeds/carrotseed
- name = "carrot"
- desc = "It's good for the eyes!"
- icon_state = "carrot"
- filling_color = "#FFA500"
- juice_reagents = list("carrotjuice" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/carrot/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- reagents.add_reagent("imidazoline", 3+round(potency / 5, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom
- name="mushroom"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
- seed = /obj/item/seeds/reishimycelium
- name = "reishi"
- desc = "Ganoderma lucidum: A special fungus known for its medicinal and stress relieving properties."
- icon_state = "reishi"
- filling_color = "#FF4500"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("anti_toxin", 3+round(potency / 3, 1))
- reagents.add_reagent("morphine", 3+round(potency / 3, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Anti-Toxin: [reagents.get_reagent_amount("anti_toxin")]%"
- user << "- Morphine: [reagents.get_reagent_amount("morphine")]%"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
- seed = /obj/item/seeds/amanitamycelium
- name = "fly amanita"
- desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know."
- icon_state = "amanita"
- filling_color = "#FF0000"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("amatoxin", 3+round(potency / 3, 1))
- reagents.add_reagent("mushroomhallucinogen", 1 + round(potency / 25, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%"
- user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
- seed = /obj/item/seeds/angelmycelium
- name = "destroying angel"
- desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
- icon_state = "angel"
- filling_color = "#C0C0C0"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("amatoxin", 13+round(potency / 3, 1))
- reagents.add_reagent("mushroomhallucinogen", 1 + round(potency / 25, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Amatoxins: [reagents.get_reagent_amount("amatoxin")]%"
- user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
- seed = /obj/item/seeds/libertymycelium
- name = "liberty-cap"
- desc = "Psilocybe Semilanceata: Liberate yourself!"
- icon_state = "libertycap"
- filling_color = "#DAA520"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/add_juice(var/loc, var/potency = 15)
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 50), 1))
- reagents.add_reagent("mushroomhallucinogen", 3+round(potency / 5, 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- . = ..()
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "- Mushroom Hallucinogen: [reagents.get_reagent_amount("mushroomhallucinogen")]%"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
- seed = /obj/item/seeds/plumpmycelium
- name = "plump-helmet"
- desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
- icon_state = "plumphelmet"
- filling_color = "#9370DB"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet/add_juice()
- ..()
- reagents.add_reagent("nutriment", 2+round((potency / 10), 1))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
- seed = /obj/item/seeds/walkingmushroommycelium
- name = "walking mushroom"
- desc = "Plumus Locomotus: The beginning of the great walk."
- icon_state = "walkingmushroom"
- filling_color = "#9370DB"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/add_juice()
- ..()
- reagents.add_reagent("nutriment", 2+round((potency / 10), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user as mob)
- if(istype(user.loc,/turf/space))
- return
- var/mob/living/simple_animal/hostile/mushroom/M = new /mob/living/simple_animal/hostile/mushroom(user.loc)
- M.maxHealth += round(endurance / 4)
- M.melee_damage_lower += round(potency / 20)
- M.melee_damage_upper += round(potency / 20)
- M.move_to_delay -= round(production / 50)
- M.health = M.maxHealth
qdel(src)
- user << "You plant the walking mushroom."
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
- seed = /obj/item/seeds/chantermycelium
- name = "chanterelle cluster"
- desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!"
- icon_state = "chanterelle"
- filling_color = "#FFA500"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
- seed = /obj/item/seeds/glowshroom
- name = "glowshroom cluster"
- desc = "Mycena Bregprox: This species of mushroom glows in the dark."
- icon_state = "glowshroom"
- filling_color = "#00FA9A"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/New(var/loc, var/new_potency = 10)
+/obj/item/weapon/reagent_containers/food/snacks/grown/On_Consume()
+ if(iscarbon(usr))
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ T.on_consume(src, usr)
..()
- if(lifespan == 0) //basically, if you're spawning these via admin or on the map, then set up some default stats.
- lifespan = 120
- endurance = 30
- maturation = 15
- production = 1
- yield = 3
- potency = 30
- plant_type = 2
- src.set_light(round(potency / 10,1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/add_juice()
- ..()
- reagents.add_reagent("nutriment", 1 + round((potency / 25), 1))
- reagents.add_reagent("radium", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user as mob)
- if(istype(user.loc,/turf/space))
- return
- var/obj/effect/glowshroom/planted = new /obj/effect/glowshroom(user.loc)
- planted.delay = planted.delay - production * 100 //So the delay goes DOWN with better stats instead of up. :I
- planted.endurance = endurance
- planted.yield = yield
- planted.potency = potency
- qdel(src)
- user << "You plant the glowshroom."
-
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit
- seed = /obj/item/seeds/cashseed
- name = "Money Fruit"
- desc = "Looks like a lemon with someone buldging from the inside."
- icon_state = "moneyfruit"
- inside_type = null
-/obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit/add_juice()
+/obj/item/weapon/reagent_containers/food/snacks/grown/Crossed(atom/movable/AM)
+ var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip)
+ if(S && !ispath(trash, /obj/item/weapon/grown) && iscarbon(AM))
+ var/mob/living/carbon/M = AM
+ var/stun = max(seed.potency * S.rate * 2, 1)
+ var/weaken = max(seed.potency * S.rate, 0.5)
+ if(M.slip(stun, weaken, src))
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ T.on_slip(src, M)
+ return 1
..()
- reagents.add_reagent("nutriment", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
- switch(potency)
- if(0 to 10)
- inside_type = /obj/item/weapon/spacecash/
- if(11 to 20)
- inside_type = /obj/item/weapon/spacecash/c10
- if(21 to 30)
- inside_type = /obj/item/weapon/spacecash/c20
- if(31 to 40)
- inside_type = /obj/item/weapon/spacecash/c50
- if(41 to 50)
- inside_type = /obj/item/weapon/spacecash/c100
- if(51 to 60)
- inside_type = /obj/item/weapon/spacecash/c200
- if(61 to 80)
- inside_type = /obj/item/weapon/spacecash/c500
- else
- inside_type = /obj/item/weapon/spacecash/c1000
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit
- seed = /obj/item/seeds/gatfruit
- name = "gatfruit"
- desc = "It smells like burning."
- icon_state = "gatfruit"
- origin_tech = "combat=3"
- trash = /obj/item/weapon/gun/projectile/revolver
-/obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit/add_juice()
- if(..())
- reagents.add_reagent("sulfur", 1 + round((potency / 10), 1))
- reagents.add_reagent("carbon", 1 + round((potency / 10), 1))
- reagents.add_reagent("nitrogen", 1 + round((potency / 15), 1))
- reagents.add_reagent("potassium", 1 + round((potency / 20), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
+// Glow gene procs
+/obj/item/weapon/reagent_containers/food/snacks/grown/Destroy()
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G && ismob(loc))
+ loc.set_light(-G.get_lum(seed))
+ return ..()
-/obj/item/weapon/reagent_containers/food/snacks/grown/coffee //abstract type
- seed = /obj/item/seeds/coffee_arabica_seed
- name = "coffee beans"
- desc = "Dry them out to make coffee."
- icon_state = "coffee_arabica"
- filling_color = "#DC143C"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/add_juice()
- if(..())
- reagents.add_reagent("coffeepowder", 1 + round((potency / 10), 2))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
- bitesize = 1 + round(reagents.total_volume / 2, 1)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/arabica
- seed = /obj/item/seeds/coffee_arabica_seed
- name = "coffee arabica beans"
- desc = "Dry them out to make coffee."
- icon_state = "coffee_arabica"
- grind_reagents = list("coffeepowder" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta
- seed = /obj/item/seeds/coffee_robusta_seed
- name = "coffee robusta beans"
- desc = "Dry them out to make coffee."
- icon_state = "coffee_robusta"
- grind_reagents = list("coffeepowder" = 0, "morphine" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta/add_juice(var/loc, var/potency = 20)
+/obj/item/weapon/reagent_containers/food/snacks/grown/pickup(mob/user)
..()
- reagents.add_reagent("morphine", 1 + round((potency / 20), 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco
- seed = /obj/item/seeds/tobacco_seed
- name = "tobacco leaves"
- desc = "Dry them out to make some smokes."
- icon_state = "tobacco_leaves"
- filling_color = "#008000"
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1 + round((potency / 40), 1))
- reagents.add_reagent("nicotine", 1 + round((potency / 40), 1))
-
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space
- seed = /obj/item/seeds/tobacco_space_seed
- name = "space tobacco leaves"
- desc = "Dry them out to make some space-smokes."
- icon_state = "stobacco_leaves"
- filling_color = "#008000"
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G)
+ set_light(0)
+ user.set_light(G.get_lum(seed))
-/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space/add_juice()
+/obj/item/weapon/reagent_containers/food/snacks/grown/dropped(mob/user)
..()
- reagents.add_reagent("dexalin", 1 + round((potency / 20), 1))
- reagents.add_reagent("nicotine", 1 + round((potency / 20), 1))
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G)
+ user.set_light(-G.get_lum(seed))
+ set_light(G.get_lum(seed))
-/obj/item/weapon/reagent_containers/food/snacks/grown/tea //abstract type
- seed = /obj/item/seeds/tea_aspera_seed
- name = "Tea tips"
- desc = "These aromatic tips of the tea plant can be dried to make tea."
- icon_state = "tea_aspera_leaves"
-/obj/item/weapon/reagent_containers/food/snacks/grown/tea/add_juice()
- if(..())
- reagents.add_reagent("teapowder", 1 + round((potency / 10), 2))
- reagents.add_reagent("vitamin", 1 + round((potency / 25), 1))
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera
- seed = /obj/item/seeds/tea_aspera_seed
- name = "Tea Aspera tips"
- filling_color = "#008000"
- grind_reagents = list("teapowder" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra
- seed = /obj/item/seeds/tea_astra_seed
- name = "Tea Astra tips"
- desc = "These aromatic tips of the tea plant can be dried to make tea."
- icon_state = "tea_astra_leaves"
- filling_color = "#4582B4"
- grind_reagents = list("teapowder" = 0, "tricordrazine" = 0)
-
-/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra/add_juice()
- ..()
- reagents.add_reagent("tricordrazine", 1 + round((potency / 20), 1))
+// For item-containing growns such as eggy or gatfruit
+/obj/item/weapon/reagent_containers/food/snacks/grown/shell/attack_self(mob/user as mob)
+ user.unEquip(src)
+ if(trash)
+ var/obj/item/weapon/T
+ if(ispath(trash, /obj/item/weapon/grown) || ispath(trash, /obj/item/weapon/reagent_containers/food/snacks/grown))
+ T = new trash(user.loc, seed)
+ else
+ T = new trash(user.loc)
+ user.put_in_hands(T)
+ user << "You open [src]\'s shell, revealing \a [T]."
+ qdel(src)
diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm
new file mode 100644
index 0000000000000..65a6a33772d5b
--- /dev/null
+++ b/code/modules/hydroponics/grown/ambrosia.dm
@@ -0,0 +1,49 @@
+// Ambrosia - base type
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia
+ seed = /obj/item/seeds/ambrosia
+ name = "ambrosia branch"
+ desc = "This is a plant."
+ icon_state = "ambrosiavulgaris"
+ slot_flags = SLOT_HEAD
+ filling_color = "#008000"
+ bitesize_mod = 2
+
+// Ambrosia Vulgaris
+/obj/item/seeds/ambrosia
+ name = "pack of ambrosia vulgaris seeds"
+ desc = "These seeds grow into common ambrosia, a plant grown by and from medicine."
+ icon_state = "seed-ambrosiavulgaris"
+ species = "ambrosiavulgaris"
+ plantname = "Ambrosia Vulgaris"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris
+ lifespan = 60
+ endurance = 25
+ yield = 6
+ potency = 5
+ icon_dead = "ambrosia-dead"
+ mutatelist = list(/obj/item/seeds/ambrosia/deus)
+ reagents_add = list("space_drugs" = 0.15, "salglu_solution" = 0.25, "vitamin" = 0.04, "nutriment" = 0, "toxin" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris
+ seed = /obj/item/seeds/ambrosia
+ name = "ambrosia vulgaris branch"
+ desc = "This is a plant containing various healing chemicals."
+
+// Ambrosia Deus
+/obj/item/seeds/ambrosia/deus
+ name = "pack of ambrosia deus seeds"
+ desc = "These seeds grow into ambrosia deus. Could it be the food of the gods..?"
+ icon_state = "seed-ambrosiadeus"
+ species = "ambrosiadeus"
+ plantname = "Ambrosia Deus"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
+ mutatelist = list()
+ reagents_add = list("omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0)
+ rarity = 40
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
+ seed = /obj/item/seeds/ambrosia/deus
+ name = "ambrosia deus branch"
+ desc = "Eating this makes you feel immortal!"
+ icon_state = "ambrosiadeus"
+ filling_color = "#008B8B"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm
new file mode 100644
index 0000000000000..5deafac82fbb6
--- /dev/null
+++ b/code/modules/hydroponics/grown/apple.dm
@@ -0,0 +1,54 @@
+// Apple
+/obj/item/seeds/apple
+ name = "pack of apple seeds"
+ desc = "These seeds grow into apple trees."
+ icon_state = "seed-apple"
+ species = "apple"
+ plantname = "Apple Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple
+ lifespan = 55
+ endurance = 35
+ yield = 5
+ icon_grow = "apple-grow"
+ icon_dead = "apple-dead"
+ mutatelist = list(/obj/item/seeds/apple/gold)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/apple
+ seed = /obj/item/seeds/apple
+ name = "apple"
+ desc = "It's a little piece of Eden."
+ icon_state = "apple"
+ filling_color = "#FF4500"
+ bitesize = 100 // Always eat the apple in one bite
+
+// Posioned Apple
+/obj/item/seeds/apple/poisoned
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
+ mutatelist = list()
+ reagents_add = list("cyanide" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 50 // Source of cyanide, and hard (almost impossible) to obtain normally.
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
+ seed = /obj/item/seeds/apple/poisoned
+
+// Gold Apple
+/obj/item/seeds/apple/gold
+ name = "pack of golden apple seeds"
+ desc = "These seeds grow into golden apple trees. Good thing there are no firebirds in space."
+ icon_state = "seed-goldapple"
+ species = "goldapple"
+ plantname = "Golden Apple Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold
+ maturation = 10
+ production = 10
+ mutatelist = list()
+ reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 40 // Alchemy!
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold
+ seed = /obj/item/seeds/apple/gold
+ name = "golden apple"
+ desc = "Emblazoned upon the apple is the word 'Kallisti'."
+ icon_state = "goldapple"
+ filling_color = "#FFD700"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
new file mode 100644
index 0000000000000..a439da93253b0
--- /dev/null
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -0,0 +1,118 @@
+// Banana
+/obj/item/seeds/banana
+ name = "pack of banana seeds"
+ desc = "They're seeds that grow into banana trees. When grown, keep away from clown."
+ icon_state = "seed-banana"
+ species = "banana"
+ plantname = "Banana Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana
+ lifespan = 50
+ endurance = 30
+ icon_dead = "banana-dead"
+ genes = list(/datum/plant_gene/trait/slip)
+ mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace)
+ reagents_add = list("banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/banana
+ seed = /obj/item/seeds/banana
+ name = "banana"
+ desc = "It's an excellent prop for a clown."
+ icon_state = "banana"
+ item_state = "banana"
+ trash = /obj/item/weapon/grown/bananapeel
+ filling_color = "#FFFF00"
+ bitesize = 5
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user)
+ user.visible_message("[user] is aiming the [src.name] at themself! It looks like \he's trying to commit suicide.")
+ playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1)
+ sleep(25)
+ if(!user)
+ return (OXYLOSS)
+ user.say("BANG!")
+ sleep(25)
+ if(!user)
+ return (OXYLOSS)
+ user.visible_message("[user] laughs so hard they begin to suffocate!")
+ return (OXYLOSS)
+
+/obj/item/weapon/grown/bananapeel
+ seed = /obj/item/seeds/banana
+ name = "banana peel"
+ desc = "A peel from a banana."
+ icon_state = "banana_peel"
+ item_state = "banana_peel"
+ w_class = 1
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+
+/obj/item/weapon/grown/bananapeel/suicide_act(mob/user)
+ user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.")
+ playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
+ return (BRUTELOSS)
+
+
+// Mimana - invisible sprites are totally a feature!
+/obj/item/seeds/banana/mime
+ name = "pack of mimana seeds"
+ desc = "They're seeds that grow into mimana trees. When grown, keep away from mime."
+ icon_state = "seed-mimana"
+ species = "mimana"
+ plantname = "Mimana Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana/mime
+ growthstages = 4
+ mutatelist = list()
+ reagents_add = list("nothing" = 0.1, "mutetoxin" = 0.1, "nutriment" = 0.02)
+ rarity = 15
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/banana/mime
+ seed = /obj/item/seeds/banana/mime
+ name = "mimana"
+ desc = "It's an excellent prop for a mime."
+ icon_state = "mimana"
+ trash = /obj/item/weapon/grown/bananapeel/mimanapeel
+ filling_color = "#FFFFEE"
+
+/obj/item/weapon/grown/bananapeel/mimanapeel
+ seed = /obj/item/seeds/banana/mime
+ name = "mimana peel"
+ desc = "A mimana peel."
+ icon_state = "mimana_peel"
+
+// Bluespace Banana
+/obj/item/seeds/banana/bluespace
+ name = "pack of bluespace banana seeds"
+ desc = "They're seeds that grow into bluespace banana trees. When grown, keep away from bluespace clown."
+ icon_state = "seed-banana-blue"
+ species = "bluespacebanana"
+ icon_grow = "banana-grow"
+ plantname = "Bluespace Banana Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
+ mutatelist = list()
+ genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport)
+ reagents_add = list("singulo" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02)
+ rarity = 30
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/banana/bluespace
+ seed = /obj/item/seeds/banana/bluespace
+ name = "bluespace banana"
+ icon_state = "banana_blue"
+ trash = /obj/item/weapon/grown/bananapeel/bluespace
+ filling_color = "#0000FF"
+
+/obj/item/weapon/grown/bananapeel/bluespace
+ seed = /obj/item/seeds/banana/bluespace
+ name = "bluespace banana peel"
+ desc = "A peel from a bluespace banana."
+ icon_state = "banana_peel_blue"
+
+
+// Other
+/obj/item/weapon/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes
+ name = "synthesized banana peel"
+ desc = "A synthetic banana peel."
+
+/obj/item/weapon/grown/bananapeel/specialpeel/Crossed(AM)
+ if(..())
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm
new file mode 100644
index 0000000000000..ac7def35c741b
--- /dev/null
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -0,0 +1,46 @@
+// Soybeans
+/obj/item/seeds/soya
+ name = "pack of soybean seeds"
+ desc = "These seeds grow into soybean plants."
+ icon_state = "seed-soybean"
+ species = "soybean"
+ plantname = "Soybean Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
+ maturation = 4
+ production = 4
+ potency = 15
+ growthstages = 4
+ icon_grow = "soybean-grow"
+ icon_dead = "soybean-dead"
+ mutatelist = list(/obj/item/seeds/soya/koi)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
+ seed = /obj/item/seeds/soya
+ name = "soybeans"
+ desc = "It's pretty bland, but oh the possibilities..."
+ gender = PLURAL
+ icon_state = "soybeans"
+ filling_color = "#F0E68C"
+ bitesize_mod = 2
+
+// Koibean
+/obj/item/seeds/soya/koi
+ name = "pack of koibean seeds"
+ desc = "These seeds grow into koibean plants."
+ icon_state = "seed-koibean"
+ species = "koibean"
+ plantname = "Koibean Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
+ potency = 10
+ mutatelist = list()
+ reagents_add = list("carpotoxin" = 0.05, "vitamin" = 0.04, "nutriment" = 0.05)
+ rarity = 20
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
+ seed = /obj/item/seeds/soya/koi
+ name = "koibean"
+ desc = "Something about these seems fishy."
+ icon_state = "koibeans"
+ filling_color = "#F0E68C"
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
new file mode 100644
index 0000000000000..529f6914820ab
--- /dev/null
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -0,0 +1,180 @@
+// Berries
+/obj/item/seeds/berry
+ name = "pack of berry seeds"
+ desc = "These seeds grow into berry bushes."
+ icon_state = "seed-berry"
+ species = "berry"
+ plantname = "Berry Bush"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries
+ lifespan = 20
+ maturation = 5
+ production = 5
+ yield = 2
+ icon_grow = "berry-grow" // Uses one growth icons set for all the subtypes
+ icon_dead = "berry-dead" // Same for the dead icon
+ mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/berries
+ seed = /obj/item/seeds/berry
+ name = "bunch of berries"
+ desc = "Nutritious!"
+ icon_state = "berrypile"
+ gender = PLURAL
+ filling_color = "#FF00FF"
+ bitesize_mod = 2
+
+// Poison Berries
+/obj/item/seeds/berry/poison
+ name = "pack of poison-berry seeds"
+ desc = "These seeds grow into poison-berry bushes."
+ icon_state = "seed-poisonberry"
+ species = "poisonberry"
+ plantname = "Poison-Berry Bush"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
+ mutatelist = list(/obj/item/seeds/berry/death)
+ reagents_add = list("toxin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 10 // Mildly poisonous berries are common in reality
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
+ seed = /obj/item/seeds/berry/poison
+ name = "bunch of poison-berries"
+ desc = "Taste so good, you could die!"
+ icon_state = "poisonberrypile"
+ filling_color = "#C71585"
+
+// Death Berries
+/obj/item/seeds/berry/death
+ name = "pack of death-berry seeds"
+ desc = "These seeds grow into death berries."
+ icon_state = "seed-deathberry"
+ species = "deathberry"
+ plantname = "Death Berry Bush"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/death
+ lifespan = 30
+ potency = 50
+ mutatelist = list()
+ reagents_add = list("lexorin" = 0.25, "toxin" = 0.35, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 30
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/berries/death
+ seed = /obj/item/seeds/berry/death
+ name = "bunch of death-berries"
+ desc = "Taste so good, you could die!"
+ icon_state = "deathberrypile"
+ filling_color = "#708090"
+
+// Glow Berries
+/obj/item/seeds/berry/glow
+ name = "pack of glow-berry seeds"
+ desc = "These seeds grow into glow-berry bushes."
+ icon_state = "seed-glowberry"
+ species = "glowberry"
+ plantname = "Glow-Berry Bush"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow
+ lifespan = 30
+ endurance = 25
+ mutatelist = list()
+ genes = list(/datum/plant_gene/trait/glow/berry)
+ reagents_add = list("uranium" = 0.25, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 20
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow
+ seed = /obj/item/seeds/berry/glow
+ name = "bunch of glow-berries"
+ desc = "Nutritious!"
+ icon_state = "glowberrypile"
+ filling_color = "#7CFC00"
+
+// Cherries
+/obj/item/seeds/cherry
+ name = "pack of cherry pits"
+ desc = "Careful not to crack a tooth on one... That'd be the pits."
+ icon_state = "seed-cherry"
+ species = "cherry"
+ plantname = "Cherry Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/cherries
+ lifespan = 35
+ endurance = 35
+ maturation = 5
+ production = 5
+ growthstages = 5
+ icon_grow = "cherry-grow"
+ icon_dead = "cherry-dead"
+ mutatelist = list(/obj/item/seeds/cherry/blue)
+ reagents_add = list("nutriment" = 0.07, "sugar" = 0.07)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/cherries
+ seed = /obj/item/seeds/cherry
+ name = "cherries"
+ desc = "Great for toppings!"
+ icon_state = "cherry"
+ gender = PLURAL
+ filling_color = "#FF0000"
+ bitesize_mod = 2
+
+// Blue Cherries
+/obj/item/seeds/cherry/blue
+ name = "pack of blue cherry pits"
+ desc = "The blue kind of cherries"
+ icon_state = "seed-bluecherry"
+ species = "bluecherry"
+ plantname = "Blue Cherry Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
+ mutatelist = list()
+ rarity = 10
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
+ seed = /obj/item/seeds/cherry/blue
+ name = "blue cherries"
+ desc = "They're cherries that are blue."
+ icon_state = "bluecherry"
+ filling_color = "#6495ED"
+ bitesize_mod = 2
+
+
+// Grapes
+/obj/item/seeds/grape
+ name = "pack of grape seeds"
+ desc = "These seeds grow into grape vines."
+ icon_state = "seed-grapes"
+ species = "grape"
+ plantname = "Grape Vine"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/grapes
+ lifespan = 50
+ endurance = 25
+ maturation = 3
+ production = 5
+ yield = 4
+ growthstages = 2
+ icon_grow = "grape-grow"
+ icon_dead = "grape-dead"
+ mutatelist = list(/obj/item/seeds/grape/green)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/grapes
+ seed = /obj/item/seeds/grape
+ name = "bunch of grapes"
+ desc = "Nutritious!"
+ icon_state = "grapes"
+ dried_type = /obj/item/weapon/reagent_containers/food/snacks/no_raisin
+ filling_color = "#FF1493"
+ bitesize_mod = 2
+
+// Green Grapes
+/obj/item/seeds/grape/green
+ name = "pack of green grape seeds"
+ desc = "These seeds grow into green-grape vines."
+ icon_state = "seed-greengrapes"
+ species = "greengrape"
+ plantname = "Green-Grape Vine"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
+ reagents_add = list("salglu_solution" = 0.25, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1)
+ // No rarity: technically it's a beneficial mutant, but it's not exactly "new"...
+ mutatelist = list()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
+ seed = /obj/item/seeds/grape/green
+ name = "bunch of green grapes"
+ icon_state = "greengrapes"
+ filling_color = "#7FFF00"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
new file mode 100644
index 0000000000000..8b6274c4e0973
--- /dev/null
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -0,0 +1,63 @@
+// Wheat
+/obj/item/seeds/wheat
+ name = "pack of wheat seeds"
+ desc = "These may, or may not, grow into wheat."
+ icon_state = "seed-wheat"
+ species = "wheat"
+ plantname = "Wheat Stalks"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
+ production = 1
+ yield = 4
+ potency = 15
+ oneharvest = 1
+ icon_dead = "wheat-dead"
+ mutatelist = list(/obj/item/seeds/wheat/oat)
+ reagents_add = list("nutriment" = 0.04)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/wheat
+ seed = /obj/item/seeds/wheat
+ name = "wheat"
+ desc = "Sigh... wheat... a-grain?"
+ gender = PLURAL
+ icon_state = "wheat"
+ filling_color = "#F0E68C"
+ bitesize_mod = 2
+
+// Oat
+/obj/item/seeds/wheat/oat
+ name = "pack of oat seeds"
+ desc = "These may, or may not, grow into oat."
+ icon_state = "seed-oat"
+ species = "oat"
+ plantname = "Oat Stalks"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/oat
+ mutatelist = list()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/oat
+ seed = /obj/item/seeds/wheat/oat
+ name = "oat"
+ desc = "Eat oats, do squats."
+ gender = PLURAL
+ icon_state = "oat"
+ filling_color = "#556B2F"
+ bitesize_mod = 2
+
+// Rice
+/obj/item/seeds/wheat/rice
+ name = "pack of rice seeds"
+ desc = "These may, or may not, grow into rice."
+ icon_state = "seed-rice"
+ species = "rice"
+ plantname = "Rice Stalks"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/rice
+ mutatelist = list()
+ growthstages = 3
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/rice
+ seed = /obj/item/seeds/wheat/rice
+ name = "rice"
+ desc = "Rice to meet you."
+ gender = PLURAL
+ icon_state = "rice"
+ filling_color = "#FAFAD2"
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm
new file mode 100644
index 0000000000000..707b92e4ee87e
--- /dev/null
+++ b/code/modules/hydroponics/grown/chili.dm
@@ -0,0 +1,91 @@
+// Chili
+/obj/item/seeds/chili
+ name = "pack of chili seeds"
+ desc = "These seeds grow into chili plants. HOT! HOT! HOT!"
+ icon_state = "seed-chili"
+ species = "chili"
+ plantname = "Chili Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/chili
+ lifespan = 20
+ maturation = 5
+ production = 5
+ yield = 4
+ potency = 20
+ icon_grow = "chili-grow" // Uses one growth icons set for all the subtypes
+ icon_dead = "chili-dead" // Same for the dead icon
+ mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost)
+ reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/chili
+ seed = /obj/item/seeds/chili
+ name = "chili"
+ desc = "It's spicy! Wait... IT'S BURNING ME!!"
+ icon_state = "chilipepper"
+ filling_color = "#FF0000"
+ bitesize_mod = 2
+
+// Ice Chili
+/obj/item/seeds/chili/ice
+ name = "pack of ice pepper seeds"
+ desc = "These seeds grow into ice pepper plants."
+ icon_state = "seed-icepepper"
+ species = "chiliice"
+ plantname = "Ice Pepper Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
+ lifespan = 25
+ maturation = 4
+ production = 4
+ rarity = 20
+ mutatelist = list()
+ reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
+ seed = /obj/item/seeds/chili/ice
+ name = "ice pepper"
+ desc = "It's a mutant strain of chili"
+ icon_state = "icepepper"
+ filling_color = "#0000CD"
+ bitesize_mod = 2
+
+// Ghost Chili
+/obj/item/seeds/chili/ghost
+ name = "pack of ghost chili seeds"
+ desc = "These seeds grow into a chili said to be the hottest in the galaxy."
+ icon_state = "seed-chilighost"
+ species = "chilighost"
+ plantname = "chilighost"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili
+ endurance = 10
+ maturation = 10
+ production = 10
+ yield = 3
+ rarity = 20
+ mutatelist = list()
+ reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili
+ seed = /obj/item/seeds/chili/ghost
+ name = "ghost chili"
+ desc = "It seems to be vibrating gently."
+ icon_state = "ghostchilipepper"
+ var/mob/held_mob
+ filling_color = "#F8F8FF"
+ bitesize_mod = 4
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/attack_hand(mob/user)
+ ..()
+ if( istype(src.loc, /mob) )
+ held_mob = src.loc
+ SSobj.processing |= src
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili/process()
+ if(held_mob && src.loc == held_mob)
+ if( (held_mob.l_hand == src) || (held_mob.r_hand == src))
+ if(hasvar(held_mob,"gloves") && held_mob:gloves)
+ return
+ held_mob.bodytemperature += 15 * TEMPERATURE_DAMAGE_COEFFICIENT
+ if(prob(10))
+ held_mob << "Your hand holding [src] burns!"
+ else
+ held_mob = null
+ ..()
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
new file mode 100644
index 0000000000000..cec228a8f4ada
--- /dev/null
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -0,0 +1,119 @@
+// Citrus - base type
+/obj/item/weapon/reagent_containers/food/snacks/grown/citrus
+ seed = /obj/item/seeds/lime
+ name = "citrus"
+ desc = "It's so sour, your face will twist."
+ icon_state = "lime"
+ bitesize_mod = 2
+
+// Lime
+/obj/item/seeds/lime
+ name = "pack of lime seeds"
+ desc = "These are very sour seeds."
+ icon_state = "seed-lime"
+ species = "lime"
+ plantname = "Lime Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
+ lifespan = 55
+ endurance = 50
+ yield = 4
+ potency = 15
+ mutatelist = list(/obj/item/seeds/orange)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
+ seed = /obj/item/seeds/lime
+ name = "lime"
+ desc = "It's so sour, your face will twist."
+ icon_state = "lime"
+ filling_color = "#00FF00"
+
+// Orange
+/obj/item/seeds/orange
+ name = "pack of orange seeds"
+ desc = "Sour seeds."
+ icon_state = "seed-orange"
+ species = "orange"
+ plantname = "Orange Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange
+ lifespan = 60
+ endurance = 50
+ yield = 5
+ potency = 20
+ icon_grow = "lime-grow"
+ icon_dead = "lime-dead"
+ mutatelist = list(/obj/item/seeds/lime)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange
+ seed = /obj/item/seeds/orange
+ name = "orange"
+ desc = "It's an tangy fruit."
+ icon_state = "orange"
+ filling_color = "#FFA500"
+
+// Lemon
+/obj/item/seeds/lemon
+ name = "pack of lemon seeds"
+ desc = "These are sour seeds."
+ icon_state = "seed-lemon"
+ species = "lemon"
+ plantname = "Lemon Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon
+ lifespan = 55
+ endurance = 45
+ yield = 4
+ icon_grow = "lime-grow"
+ icon_dead = "lime-dead"
+ mutatelist = list(/obj/item/seeds/cash)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon
+ seed = /obj/item/seeds/lemon
+ name = "lemon"
+ desc = "When life gives you lemons, be grateful they aren't limes."
+ icon_state = "lemon"
+ filling_color = "#FFD700"
+
+// Money Lemon
+/obj/item/seeds/cash
+ name = "pack of money seeds"
+ desc = "When life gives you lemons, mutate them into cash."
+ icon_state = "seed-cash"
+ species = "cashtree"
+ plantname = "Money Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit
+ icon_grow = "lime-grow"
+ icon_dead = "lime-dead"
+ lifespan = 55
+ endurance = 45
+ yield = 4
+ reagents_add = list("nutriment" = 0.05)
+ rarity = 50 // Nanotrasen approves...
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit
+ seed = /obj/item/seeds/cash
+ name = "Money Fruit"
+ desc = "Looks like a lemon with someone buldging from the inside."
+ icon_state = "moneyfruit"
+ bitesize_mod = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit/add_juice()
+ ..()
+ switch(seed.potency)
+ if(0 to 10)
+ trash = /obj/item/weapon/spacecash
+ if(11 to 20)
+ trash = /obj/item/weapon/spacecash/c10
+ if(21 to 30)
+ trash = /obj/item/weapon/spacecash/c20
+ if(31 to 40)
+ trash = /obj/item/weapon/spacecash/c50
+ if(41 to 50)
+ trash = /obj/item/weapon/spacecash/c100
+ if(51 to 60)
+ trash = /obj/item/weapon/spacecash/c200
+ if(61 to 80)
+ trash = /obj/item/weapon/spacecash/c500
+ else
+ trash = /obj/item/weapon/spacecash/c1000
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm
new file mode 100644
index 0000000000000..54ee9db28bc1f
--- /dev/null
+++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm
@@ -0,0 +1,43 @@
+// Cocoa Pod
+/obj/item/seeds/cocoapod
+ name = "pack of cocoa pod seeds"
+ desc = "These seeds grow into cacao trees. They look fattening." //SIC: cocoa is the seeds. The trees are spelled cacao.
+ icon_state = "seed-cocoapod"
+ species = "cocoapod"
+ plantname = "Cocao Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
+ lifespan = 20
+ maturation = 5
+ production = 5
+ yield = 2
+ growthstages = 5
+ icon_grow = "cocoapod-grow"
+ icon_dead = "cocoapod-dead"
+ mutatelist = list(/obj/item/seeds/cocoapod/vanillapod)
+ reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
+ seed = /obj/item/seeds/cocoapod
+ name = "cocoa pod"
+ desc = "Fattening... Mmmmm... chucklate."
+ icon_state = "cocoapod"
+ filling_color = "#FFD700"
+ bitesize_mod = 2
+
+// Vanilla Pod
+/obj/item/seeds/cocoapod/vanillapod
+ name = "pack of vanilla pod seeds"
+ desc = "These seeds grow into vanilla trees. They look fattening."
+ icon_state = "seed-vanillapod"
+ species = "vanillapod"
+ plantname = "Vanilla Tree"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
+ mutatelist = list()
+ reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
+ seed = /obj/item/seeds/cocoapod/vanillapod
+ name = "vanilla pod"
+ desc = "Fattening... Mmmmm... vanilla."
+ icon_state = "vanillapod"
+ filling_color = "#FFD700"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
new file mode 100644
index 0000000000000..8121b2efe0bb5
--- /dev/null
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -0,0 +1,83 @@
+// Corn
+/obj/item/seeds/corn
+ name = "pack of corn seeds"
+ desc = "I don't mean to sound corny..."
+ icon_state = "seed-corn"
+ species = "corn"
+ plantname = "Corn Stalks"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/corn
+ maturation = 8
+ oneharvest = 1
+ potency = 20
+ growthstages = 3
+ icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes
+ icon_dead = "corn-dead" // Same for the dead icon
+ mutatelist = list(/obj/item/seeds/corn/snapcorn)
+ reagents_add = list("cornoil" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/corn
+ seed = /obj/item/seeds/corn
+ name = "ear of corn"
+ desc = "Needs some butter!"
+ icon_state = "corn"
+ cooked_type = /obj/item/weapon/reagent_containers/food/snacks/popcorn
+ filling_color = "#FFFF00"
+ trash = /obj/item/weapon/grown/corncob
+ bitesize_mod = 2
+
+/obj/item/weapon/grown/corncob
+ name = "corn cob"
+ desc = "A reminder of meals gone by."
+ icon_state = "corncob"
+ item_state = "corncob"
+ w_class = 1
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+
+/obj/item/weapon/grown/corncob/attackby(obj/item/weapon/grown/W, mob/user, params)
+ ..()
+ if(is_sharp(W))
+ user << "You use [W] to fashion a pipe out of the corn cob!"
+ new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
+ user.unEquip(src)
+ qdel(src)
+ return
+
+// Snapcorn
+/obj/item/seeds/corn/snapcorn
+ name = "pack of snapcorn seeds"
+ desc = "Oh snap!"
+ icon_state = "seed-snapcorn"
+ species = "snapcorn"
+ plantname = "Snapcorn Stalks"
+ product = /obj/item/weapon/grown/snapcorn
+ mutatelist = list()
+ rarity = 10
+
+/obj/item/weapon/grown/snapcorn
+ seed = /obj/item/seeds/corn/snapcorn
+ name = "snap corn"
+ desc = "A cob with snap pops"
+ icon_state = "snapcorn"
+ item_state = "corncob"
+ w_class = 1
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
+ var/snap_pops = 1
+
+/obj/item/weapon/grown/snapcorn/add_juice()
+ ..()
+ snap_pops = max(round(seed.potency/8), 1)
+
+/obj/item/weapon/grown/snapcorn/attack_self(mob/user)
+ ..()
+ user << "You pick up a snap pops from the cob."
+ var/obj/item/toy/snappop/S = new /obj/item/toy/snappop(user.loc)
+ if(ishuman(user))
+ user.put_in_hands(S)
+ snap_pops -= 1
+ if(!snap_pops)
+ new /obj/item/weapon/grown/corncob(user.loc)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm
new file mode 100644
index 0000000000000..f99d07ff4d72d
--- /dev/null
+++ b/code/modules/hydroponics/grown/eggplant.dm
@@ -0,0 +1,42 @@
+// Eggplant
+/obj/item/seeds/eggplant
+ name = "pack of eggplant seeds"
+ desc = "These seeds grow to produce berries that look nothing like eggs."
+ icon_state = "seed-eggplant"
+ species = "eggplant"
+ plantname = "Eggplants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
+ yield = 2
+ potency = 20
+ icon_grow = "eggplant-grow"
+ icon_dead = "eggplant-dead"
+ mutatelist = list(/obj/item/seeds/eggplant/eggy)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
+ seed = /obj/item/seeds/eggplant
+ name = "eggplant"
+ desc = "Maybe there's a chicken inside?"
+ icon_state = "eggplant"
+ filling_color = "#800080"
+ bitesize_mod = 2
+
+// Egg-Plant
+/obj/item/seeds/eggplant/eggy
+ desc = "These seeds grow to produce berries that look a lot like eggs."
+ icon_state = "seed-eggy"
+ species = "eggy"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy
+ lifespan = 75
+ production = 12
+ mutatelist = list()
+ reagents_add = list("nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy
+ seed = /obj/item/seeds/eggplant/eggy
+ name = "Egg-plant"
+ desc = "There MUST be a chicken inside."
+ icon_state = "eggyplant"
+ trash = /obj/item/weapon/reagent_containers/food/snacks/egg
+ filling_color = "#F8F8FF"
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
new file mode 100644
index 0000000000000..8687fe9218907
--- /dev/null
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -0,0 +1,199 @@
+// Poppy
+/obj/item/seeds/poppy
+ name = "pack of poppy seeds"
+ desc = "These seeds grow into poppies."
+ icon_state = "seed-poppy"
+ species = "poppy"
+ plantname = "Poppy Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy
+ endurance = 10
+ maturation = 8
+ yield = 6
+ potency = 20
+ oneharvest = 1
+ growthstages = 3
+ icon_grow = "poppy-grow"
+ icon_dead = "poppy-dead"
+ mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily)
+ reagents_add = list("hotline" = 0.05, "nutriment" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/poppy
+ seed = /obj/item/seeds/poppy
+ name = "poppy"
+ desc = "Long-used as a symbol of rest, peace, and death."
+ icon_state = "poppy"
+ slot_flags = SLOT_HEAD
+ filling_color = "#FF6347"
+ bitesize_mod = 3
+
+// Lily
+/obj/item/seeds/poppy/lily
+ name = "pack of lily seeds"
+ desc = "These seeds grow into lilies."
+ icon_state = "seed-lily"
+ species = "lily"
+ plantname = "Lily Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily
+ mutatelist = list()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily
+ seed = /obj/item/seeds/poppy/lily
+ name = "lily"
+ desc = "A beautiful orange flower"
+ icon_state = "lily"
+ filling_color = "#FFA500"
+
+// Geranium
+/obj/item/seeds/poppy/geranium
+ name = "pack of geranium seeds"
+ desc = "These seeds grow into geranium."
+ icon_state = "seed-geranium"
+ species = "geranium"
+ plantname = "Geranium Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium
+ mutatelist = list()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium
+ seed = /obj/item/seeds/poppy/geranium
+ name = "geranium"
+ desc = "A beautiful blue flower"
+ icon_state = "geranium"
+ filling_color = "#008B8B"
+
+
+// Harebell
+/obj/item/seeds/harebell
+ name = "pack of harebell seeds"
+ desc = "These seeds grow into pretty little flowers."
+ icon_state = "seed-harebell"
+ species = "harebell"
+ plantname = "Harebells"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/harebell
+ lifespan = 100
+ endurance = 20
+ maturation = 7
+ production = 1
+ yield = 2
+ potency = 30
+ oneharvest = 1
+ growthstages = 4
+ plant_type = PLANT_WEED
+ reagents_add = list("nutriment" = 0.04)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
+ seed = /obj/item/seeds/harebell
+ name = "harebell"
+ desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten'd not thy breath.\""
+ icon_state = "harebell"
+ slot_flags = SLOT_HEAD
+ filling_color = "#E6E6FA"
+ bitesize_mod = 3
+
+
+// Sunflower
+/obj/item/seeds/sunflower
+ name = "pack of sunflower seeds"
+ desc = "These seeds grow into sunflowers."
+ icon_state = "seed-sunflower"
+ species = "sunflower"
+ plantname = "Sunflowers"
+ product = /obj/item/weapon/grown/sunflower
+ endurance = 20
+ production = 2
+ yield = 2
+ oneharvest = 1
+ growthstages = 3
+ icon_grow = "sunflower-grow"
+ icon_dead = "sunflower-dead"
+ mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower)
+ reagents_add = list("cornoil" = 0.08, "nutriment" = 0.04)
+
+/obj/item/weapon/grown/sunflower // FLOWER POWER!
+ seed = /obj/item/seeds/sunflower
+ name = "sunflower"
+ desc = "It's beautiful! A certain person might beat you to death if you trample these."
+ icon_state = "sunflower"
+ damtype = "fire"
+ force = 0
+ slot_flags = SLOT_HEAD
+ throwforce = 0
+ w_class = 1
+ throw_speed = 1
+ throw_range = 3
+
+/obj/item/weapon/grown/sunflower/attack(mob/M, mob/user)
+ M << " [user] smacks you with a sunflower!FLOWER POWER"
+ user << "Your sunflower's FLOWER POWERstrikes [M]"
+
+// Moonflower
+/obj/item/seeds/sunflower/moonflower
+ name = "pack of moonflower seeds"
+ desc = "These seeds grow into moonflowers."
+ icon_state = "seed-moonflower"
+ species = "moonflower"
+ plantname = "Moonflowers"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
+ mutatelist = list()
+ reagents_add = list("moonshine" = 0.1, "vitamin" = 0.02, "nutriment" = 0.02)
+ rarity = 15
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
+ seed = /obj/item/seeds/sunflower/moonflower
+ name = "moonflower"
+ desc = "Store in a location at least 50 yards away from werewolves."
+ icon_state = "moonflower"
+ slot_flags = SLOT_HEAD
+ filling_color = "#E6E6FA"
+ bitesize_mod = 2
+
+// Novaflower
+/obj/item/seeds/sunflower/novaflower
+ name = "pack of novaflower seeds"
+ desc = "These seeds grow into novaflowers."
+ icon_state = "seed-novaflower"
+ species = "novaflower"
+ plantname = "Novaflowers"
+ product = /obj/item/weapon/grown/novaflower
+ mutatelist = list()
+ reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0)
+ rarity = 20
+
+/obj/item/weapon/grown/novaflower
+ seed = /obj/item/seeds/sunflower/novaflower
+ name = "novaflower"
+ desc = "These beautiful flowers have a crisp smokey scent, like a summer bonfire."
+ icon_state = "novaflower"
+ damtype = "fire"
+ force = 0
+ slot_flags = SLOT_HEAD
+ throwforce = 0
+ w_class = 1
+ throw_speed = 1
+ throw_range = 3
+ attack_verb = list("roasted", "scorched", "burned")
+
+/obj/item/weapon/grown/novaflower/add_juice()
+ ..()
+ force = round((5 + seed.potency / 5), 1)
+
+/obj/item/weapon/grown/novaflower/attack(mob/living/carbon/M, mob/user)
+ if(!..()) return
+ if(istype(M, /mob/living))
+ M << "You are lit on fire from the intense heat of the [name]!"
+ M.adjust_fire_stacks(seed.potency / 20)
+ M.IgniteMob()
+
+/obj/item/weapon/grown/novaflower/afterattack(atom/A as mob|obj, mob/user,proximity)
+ if(!proximity) return
+ if(force > 0)
+ force -= rand(1, (force / 3) + 1)
+ else
+ usr << "All the petals have fallen off the [name] from violent whacking!"
+ usr.unEquip(src)
+ qdel(src)
+
+/obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user)
+ ..()
+ if(!user.gloves)
+ user << "The [name] burns your bare hand!"
+ user.adjustFireLoss(rand(1, 5))
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm
new file mode 100644
index 0000000000000..a4f3e55b60467
--- /dev/null
+++ b/code/modules/hydroponics/grown/grass_carpet.dm
@@ -0,0 +1,81 @@
+// Grass
+/obj/item/seeds/grass
+ name = "pack of grass seeds"
+ desc = "These seeds grow into grass. Yummy!"
+ icon_state = "seed-grass"
+ species = "grass"
+ plantname = "Grass"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/grass
+ lifespan = 40
+ endurance = 40
+ maturation = 2
+ production = 5
+ yield = 5
+ growthstages = 2
+ icon_grow = "grass-grow"
+ icon_dead = "grass-dead"
+ mutatelist = list(/obj/item/seeds/grass/carpet)
+ reagents_add = list("nutriment" = 0.02)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/grass
+ seed = /obj/item/seeds/grass
+ name = "grass"
+ desc = "Green and lush."
+ icon_state = "grassclump"
+ filling_color = "#32CD32"
+ bitesize_mod = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/grass/attack_self(mob/user)
+ user << "You prepare the astroturf."
+ var/grassAmt = 1 + round(seed.potency / 50) // The grass we're holding
+ for(var/obj/item/weapon/reagent_containers/food/snacks/grown/grass/G in user.loc) // The grass on the floor
+ grassAmt += 1 + round(G.seed.potency)
+ qdel(G)
+ while(grassAmt > 0)
+ var/obj/item/stack/tile/GT = new /obj/item/stack/tile/grass(user.loc)
+ if(grassAmt >= GT.max_amount)
+ GT.amount = GT.max_amount
+ else
+ GT.amount = grassAmt
+ for(var/obj/item/stack/tile/grass/GR in user.loc)
+ if(GR != GT && GR.amount < GR.max_amount)
+ GR.attackby(GT, user) //we try to transfer all old unfinished stacks to the new stack we created.
+ grassAmt -= GT.max_amount
+ qdel(src)
+ return
+
+// Carpet
+/obj/item/seeds/grass/carpet
+ name = "pack of carpet seeds"
+ desc = "These seeds grow into stylish carpet samples."
+ icon_state = "seed-carpet"
+ species = "carpet"
+ plantname = "Carpet"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/carpet
+ mutatelist = list(/obj/item/seeds/grass/carpet)
+ rarity = 10
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/carpet
+ seed = /obj/item/seeds/grass/carpet
+ name = "carpet"
+ desc = "The textile industry's dark secret."
+ icon_state = "carpetclump"
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/attack_self(mob/user)
+ user << "You roll out the red carpet."
+ var/carpetAmt = 1 + round(seed.potency / 50) // The carpet we're holding
+ for(var/obj/item/weapon/reagent_containers/food/snacks/grown/carpet/C in user.loc) // The carpet on the floor
+ carpetAmt += 1 + round(C.seed.potency / 50)
+ qdel(C)
+ while(carpetAmt > 0)
+ var/obj/item/stack/tile/CT = new /obj/item/stack/tile/carpet(user.loc)
+ if(carpetAmt >= CT.max_amount)
+ CT.amount = CT.max_amount
+ else
+ CT.amount = carpetAmt
+ for(var/obj/item/stack/tile/carpet/CA in user.loc)
+ if(CA != CT && CA.amount < CA.max_amount)
+ CA.attackby(CT, user) //we try to transfer all old unfinished stacks to the new stack we created.
+ carpetAmt -= CT.max_amount
+ qdel(src)
+ return
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm
new file mode 100644
index 0000000000000..013b93c94b544
--- /dev/null
+++ b/code/modules/hydroponics/grown/kudzu.dm
@@ -0,0 +1,89 @@
+// A very special plant, deserving it's own file.
+
+/obj/item/seeds/kudzu
+ name = "pack of kudzu seeds"
+ desc = "These seeds grow into a weed that grows incredibly fast."
+ icon_state = "seed-kudzu"
+ species = "kudzu"
+ plantname = "Kudzu"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
+ lifespan = 20
+ endurance = 10
+ yield = 4
+ growthstages = 4
+ plant_type = PLANT_WEED
+ rarity = 30
+ var/list/mutations = list()
+ reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02)
+
+/obj/item/seeds/kudzu/Copy()
+ var/obj/item/seeds/kudzu/S = ..()
+ S.mutations = mutations.Copy()
+ return S
+
+/obj/item/seeds/kudzu/suicide_act(mob/user)
+ user.visible_message("[user] swallows the pack of kudzu seeds! It looks like \he's trying to commit suicide..")
+ plant(user)
+ return (BRUTELOSS)
+
+/obj/item/seeds/kudzu/proc/plant(mob/user)
+ if(istype(user.loc,/turf/space))
+ return
+ var/turf/T = get_turf(src)
+ message_admins("Kudzu planted by [key_name_admin(user)](?) (FLW) at ([T.x],[T.y],[T.z] - (JMP))",0,1)
+ investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu")
+ new /obj/effect/spacevine_controller(user.loc, mutations, potency, production)
+ qdel(src)
+
+/obj/item/seeds/kudzu/attack_self(mob/user)
+ plant(user)
+ user << "You plant the kudzu. You monster."
+
+/obj/item/seeds/kudzu/get_analyzer_text()
+ var/text = ..()
+ var/text_string = ""
+ for(var/datum/spacevine_mutation/SM in mutations)
+ text_string += "[(text_string == "") ? "" : ", "][SM.name]"
+ text += "\n- Plant Mutations: [(text_string == "") ? "None" : text_string]"
+ return text
+
+/obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S)
+ var/list/temp_mut_list = list()
+
+ if(S.has_reagent("sterilizine", 5))
+ for(var/datum/spacevine_mutation/SM in mutations)
+ if(SM.quality == NEGATIVE)
+ temp_mut_list += SM
+ if(prob(20))
+ mutations.Remove(pick(temp_mut_list))
+ temp_mut_list.Cut()
+ if(S.has_reagent("welding_fuel", 5))
+ for(var/datum/spacevine_mutation/SM in mutations)
+ if(SM.quality == POSITIVE)
+ temp_mut_list += SM
+ if(prob(20))
+ mutations.Remove(pick(temp_mut_list))
+ temp_mut_list.Cut()
+ if(S.has_reagent("phenol", 5))
+ for(var/datum/spacevine_mutation/SM in mutations)
+ if(SM.quality == MINOR_NEGATIVE)
+ temp_mut_list += SM
+ if(prob(20))
+ mutations.Remove(pick(temp_mut_list))
+ if(S.has_reagent("blood", 15))
+ production += rand(15, -5)
+ if(S.has_reagent("amatoxin", 5))
+ production += rand(5, -15)
+ if(S.has_reagent("plasma", 5))
+ potency += rand(5, -15)
+ if(S.has_reagent("holywater", 10))
+ potency += rand(15, -5)
+
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
+ seed = /obj/item/seeds/kudzu
+ name = "kudzu pod"
+ desc = "Pueraria Virallis: An invasive species with vines that rapidly creep and wrap around whatever they contact."
+ icon_state = "kudzupod"
+ filling_color = "#6B8E23"
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
new file mode 100644
index 0000000000000..3460cde8926d9
--- /dev/null
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -0,0 +1,45 @@
+// Watermelon
+/obj/item/seeds/watermelon
+ name = "pack of watermelon seeds"
+ desc = "These seeds grow into watermelon plants."
+ icon_state = "seed-watermelon"
+ species = "watermelon"
+ plantname = "Watermelon Vines"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
+ lifespan = 50
+ endurance = 40
+ icon_dead = "watermelon-dead"
+ mutatelist = list(/obj/item/seeds/watermelon/holy)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
+ seed = /obj/item/seeds/watermelon
+ name = "watermelon"
+ desc = "It's full of watery goodness."
+ icon_state = "watermelon"
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/watermelonslice
+ slices_num = 5
+ dried_type = null
+ w_class = 3
+ filling_color = "#008000"
+ bitesize_mod = 3
+
+// Holymelon
+/obj/item/seeds/watermelon/holy
+ name = "pack of holymelon seeds"
+ desc = "These seeds grow into holymelon plants."
+ icon_state = "seed-holymelon"
+ species = "holymelon"
+ plantname = "Holy Melon Vines"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/holymelon
+ mutatelist = list()
+ reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1)
+ rarity = 20
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon
+ seed = /obj/item/seeds/watermelon/holy
+ name = "holymelon"
+ desc = "The water within this melon has been blessed by some deity that's particularly fond of watermelon."
+ icon_state = "holymelon"
+ filling_color = "#FFD700"
+ dried_type = null
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm
new file mode 100644
index 0000000000000..de334bb609882
--- /dev/null
+++ b/code/modules/hydroponics/grown/misc.dm
@@ -0,0 +1,94 @@
+// Weeds
+/obj/item/seeds/weeds
+ name = "pack of weed seeds"
+ desc = "Yo mang, want some weeds?"
+ icon_state = "seed"
+ species = "weeds"
+ plantname = "Starthistle"
+ lifespan = 100
+ endurance = 50 // damm pesky weeds
+ maturation = 5
+ production = 1
+ yield = -1
+ potency = -1
+ oneharvest = 1
+ growthstages = 4
+ plant_type = PLANT_WEED
+
+
+// Cabbage
+/obj/item/seeds/cabbage
+ name = "pack of cabbage seeds"
+ desc = "These seeds grow into cabbages."
+ icon_state = "seed-cabbage"
+ species = "cabbage"
+ plantname = "Cabbages"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
+ lifespan = 50
+ endurance = 25
+ maturation = 3
+ production = 5
+ yield = 4
+ growthstages = 1
+ mutatelist = list(/obj/item/seeds/replicapod)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
+ seed = /obj/item/seeds/cabbage
+ name = "cabbage"
+ desc = "Ewwwwwwwwww. Cabbage."
+ icon_state = "cabbage"
+ filling_color = "#90EE90"
+ bitesize_mod = 2
+
+
+// Sugarcane
+/obj/item/seeds/sugarcane
+ name = "pack of sugarcane seeds"
+ desc = "These seeds grow into sugarcane."
+ icon_state = "seed-sugarcane"
+ species = "sugarcane"
+ plantname = "Sugarcane"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
+ lifespan = 60
+ endurance = 50
+ maturation = 3
+ yield = 4
+ growthstages = 3
+ reagents_add = list("sugar" = 0.25)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
+ seed = /obj/item/seeds/sugarcane
+ name = "sugarcane"
+ desc = "Sickly sweet."
+ icon_state = "sugarcane"
+ filling_color = "#FFD700"
+ bitesize_mod = 2
+
+
+// Gatfruit
+/obj/item/seeds/gatfruit
+ name = "pack of gatfruit seeds"
+ desc = "These seeds grow into .357 revolvers."
+ icon_state = "seed-gatfruit"
+ species = "gatfruit"
+ plantname = "gatfruit"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/shell/gatfruit
+ lifespan = 20
+ endurance = 20
+ maturation = 40
+ production = 10
+ yield = 2
+ potency = 60
+ growthstages = 2
+ rarity = 60 // Obtainable only with xenobio+superluck.
+ reagents_add = list("sulfur" = 0.1, "carbon" = 0.1, "nitrogen" = 0.07, "potassium" = 0.05)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/shell/gatfruit
+ seed = /obj/item/seeds/gatfruit
+ name = "gatfruit"
+ desc = "It smells like burning."
+ icon_state = "gatfruit"
+ origin_tech = "combat=3"
+ trash = /obj/item/weapon/gun/projectile/revolver
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm
new file mode 100644
index 0000000000000..560d05bad4ad4
--- /dev/null
+++ b/code/modules/hydroponics/grown/mushrooms.dm
@@ -0,0 +1,266 @@
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom
+ name = "mushroom"
+ bitesize_mod = 2
+
+
+// Reishi
+/obj/item/seeds/reishi
+ name = "pack of reishi mycelium"
+ desc = "This mycelium grows into something medicinal and relaxing."
+ icon_state = "mycelium-reishi"
+ species = "reishi"
+ plantname = "Reishi"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
+ lifespan = 35
+ endurance = 35
+ maturation = 10
+ production = 5
+ yield = 4
+ potency = 15
+ oneharvest = 1
+ growthstages = 4
+ plant_type = PLANT_MUSHROOM
+ reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
+ seed = /obj/item/seeds/reishi
+ name = "reishi"
+ desc = "Ganoderma lucidum: A special fungus known for its medicinal and stress relieving properties."
+ icon_state = "reishi"
+ filling_color = "#FF4500"
+
+
+// Fly Amanita
+/obj/item/seeds/amanita
+ name = "pack of fly amanita mycelium"
+ desc = "This mycelium grows into something horrible."
+ icon_state = "mycelium-amanita"
+ species = "amanita"
+ plantname = "Fly Amanitas"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
+ lifespan = 50
+ endurance = 35
+ maturation = 10
+ production = 5
+ yield = 4
+ oneharvest = 1
+ growthstages = 3
+ plant_type = PLANT_MUSHROOM
+ mutatelist = list(/obj/item/seeds/angel)
+ reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, "nutriment" = 0)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
+ seed = /obj/item/seeds/amanita
+ name = "fly amanita"
+ desc = "Amanita Muscaria: Learn poisonous mushrooms by heart. Only pick mushrooms you know."
+ icon_state = "amanita"
+ filling_color = "#FF0000"
+
+
+// Destroying Angel
+/obj/item/seeds/angel
+ name = "pack of destroying angel mycelium"
+ desc = "This mycelium grows into something devastating."
+ icon_state = "mycelium-angel"
+ species = "angel"
+ plantname = "Destroying Angels"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
+ lifespan = 50
+ endurance = 35
+ maturation = 12
+ production = 5
+ yield = 2
+ potency = 35
+ oneharvest = 1
+ growthstages = 3
+ plant_type = PLANT_MUSHROOM
+ reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.8, "nutriment" = 0)
+ rarity = 30
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
+ seed = /obj/item/seeds/angel
+ name = "destroying angel"
+ desc = "Amanita Virosa: Deadly poisonous basidiomycete fungus filled with alpha amatoxins."
+ icon_state = "angel"
+ filling_color = "#C0C0C0"
+
+
+// Liberty Cap
+/obj/item/seeds/liberty
+ name = "pack of liberty-cap mycelium"
+ desc = "This mycelium grows into liberty-cap mushrooms."
+ icon_state = "mycelium-liberty"
+ species = "liberty"
+ plantname = "Liberty-Caps"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
+ maturation = 7
+ production = 1
+ yield = 5
+ potency = 15
+ oneharvest = 1
+ growthstages = 3
+ plant_type = PLANT_MUSHROOM
+ reagents_add = list("mushroomhallucinogen" = 0.25, "nutriment" = 0.02)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
+ seed = /obj/item/seeds/liberty
+ name = "liberty-cap"
+ desc = "Psilocybe Semilanceata: Liberate yourself!"
+ icon_state = "libertycap"
+ filling_color = "#DAA520"
+
+
+// Plump Helmet
+/obj/item/seeds/plump
+ name = "pack of plump-helmet mycelium"
+ desc = "This mycelium grows into helmets... maybe."
+ icon_state = "mycelium-plump"
+ species = "plump"
+ plantname = "Plump-Helmet Mushrooms"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
+ maturation = 8
+ production = 1
+ yield = 4
+ potency = 15
+ oneharvest = 1
+ growthstages = 3
+ plant_type = PLANT_MUSHROOM
+ mutatelist = list(/obj/item/seeds/plump/walkingmushroom)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
+ seed = /obj/item/seeds/plump
+ name = "plump-helmet"
+ desc = "Plumus Hellmus: Plump, soft and s-so inviting~"
+ icon_state = "plumphelmet"
+ filling_color = "#9370DB"
+
+
+// Walking Mushroom
+/obj/item/seeds/plump/walkingmushroom
+ name = "pack of walking mushroom mycelium"
+ desc = "This mycelium will grow into huge stuff!"
+ icon_state = "mycelium-walkingmushroom"
+ species = "walkingmushroom"
+ plantname = "Walking Mushrooms"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
+ lifespan = 30
+ endurance = 30
+ maturation = 5
+ yield = 1
+ mutatelist = list()
+ reagents_add = list("vitamin" = 0.05, "nutriment" = 0.12)
+ rarity = 30
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
+ seed = /obj/item/seeds/plump/walkingmushroom
+ name = "walking mushroom"
+ desc = "Plumus Locomotus: The beginning of the great walk."
+ icon_state = "walkingmushroom"
+ filling_color = "#9370DB"
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
+ if(istype(user.loc,/turf/space))
+ return
+ var/mob/living/simple_animal/hostile/mushroom/M = new /mob/living/simple_animal/hostile/mushroom(user.loc)
+ M.maxHealth += round(seed.endurance / 4)
+ M.melee_damage_lower += round(seed.potency / 20)
+ M.melee_damage_upper += round(seed.potency / 20)
+ M.move_to_delay -= round(seed.production / 50)
+ M.health = M.maxHealth
+ qdel(src)
+ user << "You plant the walking mushroom."
+
+
+// Chanterelle
+/obj/item/seeds/chanter
+ name = "pack of chanterelle mycelium"
+ desc = "This mycelium grows into chanterelle mushrooms."
+ icon_state = "mycelium-chanter"
+ species = "chanter"
+ plantname = "Chanterelle Mushrooms"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
+ lifespan = 35
+ endurance = 20
+ maturation = 7
+ production = 1
+ yield = 5
+ potency = 15
+ oneharvest = 1
+ growthstages = 3
+ plant_type = PLANT_MUSHROOM
+ reagents_add = list("nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
+ seed = /obj/item/seeds/chanter
+ name = "chanterelle cluster"
+ desc = "Cantharellus Cibarius: These jolly yellow little shrooms sure look tasty!"
+ icon_state = "chanterelle"
+ filling_color = "#FFA500"
+
+
+// Glowshroom
+/obj/item/seeds/glowshroom
+ name = "pack of glowshroom mycelium"
+ desc = "This mycelium -glows- into mushrooms!"
+ icon_state = "mycelium-glowshroom"
+ species = "glowshroom"
+ plantname = "Glowshrooms"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
+ lifespan = 120 //ten times that is the delay
+ endurance = 30
+ maturation = 15
+ production = 1
+ yield = 3 //-> spread
+ potency = 30 //-> brightness
+ oneharvest = 1
+ growthstages = 4
+ plant_type = PLANT_MUSHROOM
+ rarity = 20
+ genes = list(/datum/plant_gene/trait/glow)
+ mutatelist = list(/obj/item/seeds/glowshroom/glowcap)
+ reagents_add = list("radium" = 0.05, "nutriment" = 0.04)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
+ seed = /obj/item/seeds/glowshroom
+ name = "glowshroom cluster"
+ desc = "Mycena Bregprox: This species of mushroom glows in the dark."
+ icon_state = "glowshroom"
+ filling_color = "#00FA9A"
+ var/effect_path = /obj/effect/glowshroom
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
+ if(istype(user.loc,/turf/space))
+ return
+ var/obj/effect/glowshroom/planted = new effect_path(user.loc)
+ planted.delay = planted.delay - seed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
+ planted.endurance = seed.endurance
+ planted.yield = seed.yield
+ planted.potency = seed.potency
+ user << "You plant [src]."
+ qdel(src)
+
+
+// Glowcap
+/obj/item/seeds/glowshroom/glowcap
+ name = "pack of glowcap mycelium"
+ desc = "This mycelium -powers- into mushrooms!"
+ icon_state = "mycelium-glowcap"
+ species = "glowcap"
+ icon_grow = "glowshroom-grow"
+ icon_dead = "glowshroom-dead"
+ plantname = "Glowcaps"
+ plant_type = PLANT_MUSHROOM
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
+ genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/cell_charge)
+ mutatelist = list()
+ reagents_add = list("nutriment" = 0.04)
+ rarity = 30
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap
+ seed = /obj/item/seeds/glowshroom/glowcap
+ name = "glowcap cluster"
+ desc = "Mycena Ruthenia: This species of mushroom glows in the dark, but aren't bioluminescent. They're warm to the touch..."
+ icon_state = "glowcap"
+ filling_color = "#00FA9A"
+ //effect_path = /obj/effect/glowshroom/glowcap
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm
new file mode 100644
index 0000000000000..431f69ce9ad61
--- /dev/null
+++ b/code/modules/hydroponics/grown/nettle.dm
@@ -0,0 +1,116 @@
+/obj/item/seeds/nettle
+ name = "pack of nettle seeds"
+ desc = "These seeds grow into nettles."
+ icon_state = "seed-nettle"
+ species = "nettle"
+ plantname = "Nettles"
+ product = /obj/item/weapon/grown/nettle/basic
+ lifespan = 30
+ endurance = 40 // tuff like a toiger
+ yield = 4
+ growthstages = 5
+ plant_type = PLANT_WEED
+ mutatelist = list(/obj/item/seeds/nettle/death)
+ reagents_add = list("sacid" = 0.5)
+
+/obj/item/seeds/nettle/death
+ name = "pack of death-nettle seeds"
+ desc = "These seeds grow into death-nettles."
+ icon_state = "seed-deathnettle"
+ species = "deathnettle"
+ plantname = "Death Nettles"
+ product = /obj/item/weapon/grown/nettle/death
+ endurance = 25
+ maturation = 8
+ yield = 2
+ mutatelist = list()
+ reagents_add = list("facid" = 0.5, "sacid" = 0.5)
+ rarity = 20
+
+
+/obj/item/weapon/grown/nettle //abstract type
+ name = "nettle"
+ desc = "It's probably not wise to touch it with bare hands..."
+ icon = 'icons/obj/weapons.dmi'
+ icon_state = "nettle"
+ damtype = "fire"
+ force = 15
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ throwforce = 5
+ w_class = 1
+ throw_speed = 1
+ throw_range = 3
+ origin_tech = "combat=1"
+ attack_verb = list("stung")
+
+/obj/item/weapon/grown/nettle/suicide_act(mob/user)
+ user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.")
+ return (BRUTELOSS|TOXLOSS)
+
+/obj/item/weapon/grown/nettle/pickup(mob/living/user)
+ ..()
+ if(!iscarbon(user))
+ return 0
+ var/mob/living/carbon/C = user
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = C
+ if(H.gloves)
+ return 0
+ var/organ = ((H.hand ? "l_":"r_") + "arm")
+ var/obj/item/organ/limb/affecting = H.get_organdatum(organ)
+ if(affecting.take_damage(0, force))
+ H.update_damage_overlays(0)
+ else
+ C.take_organ_damage(0,force)
+ C << "The nettle burns your bare hand!"
+ return 1
+
+/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user,proximity)
+ if(!proximity) return
+ if(force > 0)
+ force -= rand(1, (force / 3) + 1) // When you whack someone with it, leaves fall off
+ else
+ usr << "All the leaves have fallen off the nettle from violent whacking."
+ usr.unEquip(src)
+ qdel(src)
+
+
+/obj/item/weapon/grown/nettle/basic
+ seed = /obj/item/seeds/nettle
+
+/obj/item/weapon/grown/nettle/basic/add_juice()
+ ..()
+ force = round((5 + seed.potency / 5), 1)
+
+
+/obj/item/weapon/grown/nettle/death
+ seed = /obj/item/seeds/nettle/death
+ name = "deathnettle"
+ desc = "The glowing nettle incites rage in you just from looking at it!"
+ icon_state = "deathnettle"
+ force = 30
+ throwforce = 15
+ origin_tech = "combat=3"
+
+/obj/item/weapon/grown/nettle/death/add_juice()
+ ..()
+ force = round((5 + seed.potency / 2.5), 1)
+
+/obj/item/weapon/grown/nettle/death/pickup(mob/living/carbon/user)
+ ..()
+ if(..())
+ if(prob(50))
+ user.Paralyse(5)
+ user << "You are stunned by the Deathnettle when you try picking it up!"
+
+/obj/item/weapon/grown/nettle/death/attack(mob/living/carbon/M, mob/user)
+ if(!..()) return
+ if(istype(M, /mob/living))
+ M << "You are stunned by the powerful acid of the Deathnettle!"
+ add_logs(user, M, "attacked", src)
+
+ //M.adjust_blurriness(force/7)
+ if(prob(20))
+ M.Paralyse(force / 6)
+ M.Weaken(force / 15)
+ M.drop_item()
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
new file mode 100644
index 0000000000000..7ada77c855785
--- /dev/null
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -0,0 +1,68 @@
+// Potato
+/obj/item/seeds/potato
+ name = "pack of potato seeds"
+ desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
+ icon_state = "seed-potato"
+ species = "potato"
+ plantname = "Potato Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
+ lifespan = 30
+ maturation = 10
+ production = 1
+ yield = 4
+ oneharvest = 1
+ growthstages = 4
+ icon_grow = "potato-grow"
+ icon_dead = "potato-dead"
+ mutatelist = list(/obj/item/seeds/potato/sweet)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/potato
+ seed = /obj/item/seeds/potato
+ name = "potato"
+ desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
+ icon_state = "potato"
+ filling_color = "#E9967A"
+ bitesize = 100
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W, mob/user, params)
+ ..()
+ if(istype(W, /obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = W
+ if (C.use(5))
+ user << "You add some cable to the potato and slide it inside the battery encasing."
+ var/obj/item/weapon/stock_parts/cell/potato/pocell = new /obj/item/weapon/stock_parts/cell/potato(user.loc)
+ pocell.maxcharge = seed.potency * 20
+
+ // The secret of potato supercells!
+ var/datum/plant_gene/trait/cell_charge/G = seed.get_gene(/datum/plant_gene/trait/cell_charge)
+ if(G) // 10x charge for deafult cell charge gene - 20 000 with 100 potency.
+ pocell.maxcharge *= G.rate*1000
+ pocell.charge = pocell.maxcharge
+ pocell.desc = "A rechargable starch based power cell. This one has a power rating of [pocell.maxcharge], and you should not swallow it."
+
+ if(reagents.has_reagent("plasma", 2))
+ pocell.rigged = 1
+
+ qdel(src)
+ return
+ else
+ user << "You need five lengths of cable to make a potato battery!"
+ return
+
+// Sweet Potato
+/obj/item/seeds/potato/sweet
+ name = "pack of sweet potato seeds"
+ desc = "These seeds grow into sweet potato plants."
+ icon_state = "seed-sweetpotato"
+ species = "sweetpotato"
+ plantname = "Sweet Potato Plants"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
+ mutatelist = list()
+ reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
+ seed = /obj/item/seeds/potato/sweet
+ name = "sweet potato"
+ desc = "It's sweet."
+ icon_state = "sweetpotato"
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
new file mode 100644
index 0000000000000..85090ccb79ef4
--- /dev/null
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -0,0 +1,51 @@
+// Pumpkin
+/obj/item/seeds/pumpkin
+ name = "pack of pumpkin seeds"
+ desc = "These seeds grow into pumpkin vines."
+ icon_state = "seed-pumpkin"
+ species = "pumpkin"
+ plantname = "Pumpkin Vines"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
+ lifespan = 50
+ endurance = 40
+ growthstages = 3
+ icon_grow = "pumpkin-grow"
+ icon_dead = "pumpkin-dead"
+ mutatelist = list(/obj/item/seeds/pumpkin/blumpkin)
+ reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2)
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
+ seed = /obj/item/seeds/pumpkin
+ name = "pumpkin"
+ desc = "It's large and scary."
+ icon_state = "pumpkin"
+ filling_color = "#FFA500"
+ bitesize_mod = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
+ ..()
+ if(is_sharp(W))
+ user.show_message("You carve a face into [src]!", 1)
+ new /obj/item/clothing/head/hardhat/pumpkinhead(user.loc)
+ qdel(src)
+ return
+
+// Blumpkin
+/obj/item/seeds/pumpkin/blumpkin
+ name = "pack of blumpkin seeds"
+ desc = "These seeds grow into blumpkin vines."
+ icon_state = "seed-blumpkin"
+ species = "blumpkin"
+ plantname = "Blumpkin Vines"
+ product = /obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
+ mutatelist = list()
+ reagents_add = list("ammonia" = 0.2, "nutriment" = 0.2)
+ rarity = 20
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
+ seed = /obj/item/seeds/pumpkin/blumpkin
+ name = "blumpkin"
+ desc = "The pumpkin's toxic sibling."
+ icon_state = "blumpkin"
+ filling_color = "#87CEFA"
+ bitesize_mod = 2
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
new file mode 100644
index 0000000000000..ffe8657f35fe6
--- /dev/null
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -0,0 +1,107 @@
+// A very special plant, deserving it's own file.
+
+/obj/item/seeds/replicapod
+ name = "pack of replica pod seeds"
+ desc = "These seeds grow into replica pods. They say these are used to harvest humans."
+ icon_state = "seed-replicapod"
+ species = "replicapod"
+ plantname = "Replica Pod"
+ product = /mob/living/carbon/human //verrry special -- Urist
+ lifespan = 50
+ endurance = 8
+ maturation = 10
+ production = 1
+ yield = 1 //seeds if there isn't a dna inside
+ oneharvest = 1
+ potency = 30
+ var/ckey = null
+ var/realName = null
+ var/datum/mind/mind = null
+ var/blood_gender = null
+ var/blood_type = null
+ var/list/features = null
+ var/factions = null
+ var/contains_sample = 0
+
+/obj/item/seeds/replicapod/attackby(obj/item/weapon/W, mob/user, params)
+ if(istype(W,/obj/item/weapon/reagent_containers/syringe))
+ if(!contains_sample)
+ for(var/datum/reagent/blood/bloodSample in W.reagents.reagent_list)
+ if(bloodSample.data["mind"] && bloodSample.data["cloneable"] == 1)
+ mind = bloodSample.data["mind"]
+ ckey = bloodSample.data["ckey"]
+ realName = bloodSample.data["real_name"]
+ blood_gender = bloodSample.data["gender"]
+ blood_type = bloodSample.data["blood_type"]
+ features = bloodSample.data["features"]
+ factions = bloodSample.data["factions"]
+ W.reagents.clear_reagents()
+ user << "You inject the contents of the syringe into the seeds."
+ contains_sample = 1
+ else
+ user << "The seeds reject the sample!"
+ else
+ user << "The seeds already contain a genetic sample!"
+ ..()
+
+/obj/item/seeds/replicapod/get_analyzer_text()
+ var/text = ..()
+ if(contains_sample)
+ text += "\n It contains a blood sample!"
+ return text
+
+
+/obj/item/seeds/replicapod/harvest(mob/user = usr) //now that one is fun -- Urist
+ var/obj/machinery/hydroponics/parent = loc
+ var/make_podman = 0
+ var/ckey_holder = null
+ if(config.revival_pod_plants)
+ if(ckey)
+ for(var/mob/M in player_list)
+ if(istype(M, /mob/dead/observer))
+ var/mob/dead/observer/O = M
+ if(O.ckey == ckey && O.can_reenter_corpse)
+ make_podman = 1
+ break
+ else
+ if(M.ckey == ckey && M.stat == DEAD && !M.suiciding)
+ make_podman = 1
+ break
+ else //If the player has ghosted from his corpse before blood was drawn, his ckey is no longer attached to the mob, so we need to match up the cloned player through the mind key
+ for(var/mob/M in player_list)
+ if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == 2 && !M.suiciding)
+ if(istype(M, /mob/dead/observer))
+ var/mob/dead/observer/O = M
+ if(!O.can_reenter_corpse)
+ break
+ make_podman = 1
+ ckey_holder = M.ckey
+ break
+
+ if(make_podman) //all conditions met!
+ var/mob/living/carbon/human/podman = new /mob/living/carbon/human(parent.loc)
+ if(realName)
+ podman.real_name = realName
+ else
+ podman.real_name = "Pod Person [rand(0,999)]"
+ mind.transfer_to(podman)
+ if(ckey)
+ podman.ckey = ckey
+ else
+ podman.ckey = ckey_holder
+ podman.gender = blood_gender
+ podman.faction |= factions
+ if(!features["mcolor"])
+ features["mcolor"] = "#59CE00"
+ hardset_dna(podman,null,null,podman.real_name,blood_type,/datum/species/plant/pod,features)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
+ podman.set_cloned_appearance()
+
+ else //else, one packet of seeds. maybe two
+ var/seed_count = 1
+ if(prob(getYield() * 20))
+ seed_count++
+ for(var/i=0,iThe tomato is twitching and shaking, preventing you from eating it."
+ return
+ ..()
+
+/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack_self(mob/user)
+ if(awakening || istype(user.loc,/turf/space))
+ return
+ user << "You begin to awaken the Killer Tomato..."
+ awakening = 1
+
+ spawn(30)
+ if(!qdeleted(src))
+ var/mob/living/simple_animal/hostile/killertomato/K = new /mob/living/simple_animal/hostile/killertomato(get_turf(src.loc))
+ K.maxHealth += round(seed.endurance / 3)
+ K.melee_damage_lower += round(seed.potency / 10)
+ K.melee_damage_upper += round(seed.potency / 10)
+ K.move_to_delay -= round(seed.production / 50)
+ K.health = K.maxHealth
+ K.visible_message("The Killer Tomato growls as it suddenly awakens.")
+ if(user)
+ user.unEquip(src)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm
new file mode 100644
index 0000000000000..9b1a685ac5915
--- /dev/null
+++ b/code/modules/hydroponics/grown/towercap.dm
@@ -0,0 +1,92 @@
+/obj/item/seeds/tower
+ name = "pack of tower-cap mycelium"
+ desc = "This mycelium grows into tower-cap mushrooms."
+ icon_state = "mycelium-tower"
+ species = "towercap"
+ plantname = "Tower Caps"
+ product = /obj/item/weapon/grown/log
+ lifespan = 80
+ endurance = 50
+ maturation = 15
+ production = 1
+ yield = 5
+ potency = 50
+ oneharvest = 1
+ growthstages = 3
+ icon_dead = "towercap-dead"
+ plant_type = PLANT_MUSHROOM
+ mutatelist = list(/obj/item/seeds/tower/steel)
+
+/obj/item/seeds/tower/steel
+ name = "pack of steel-cap mycelium"
+ desc = "This mycelium grows into steel logs."
+ icon_state = "mycelium-steelcap"
+ species = "steelcap"
+ plantname = "Steel Caps"
+ product = /obj/item/weapon/grown/log/steel
+ mutatelist = list()
+ rarity = 20
+
+
+
+
+/obj/item/weapon/grown/log
+ seed = /obj/item/seeds/tower
+ name = "tower-cap log"
+ desc = "It's better than bad, it's good!"
+ icon_state = "logs"
+ force = 5
+ throwforce = 5
+ w_class = 3
+ throw_speed = 2
+ throw_range = 3
+ origin_tech = "materials=1"
+ attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
+ var/plank_type = /obj/item/stack/sheet/mineral/wood
+ var/plank_name = "wooden planks"
+ var/list/accepted = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/tea,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
+ /obj/item/weapon/reagent_containers/food/snacks/grown/wheat)
+
+
+/obj/item/weapon/grown/log/attackby(obj/item/weapon/W, mob/user, params)
+ ..()
+ if(is_sharp(W))
+ user.show_message("You make [plank_name] out of \the [src]!", 1)
+ var/obj/item/stack/plank = new plank_type(user.loc, 1 + round(seed.potency / 25))
+ var/old_plank_amount = plank.amount
+ for(var/obj/item/stack/ST in user.loc)
+ if(ST != plank && istype(ST, plank_type) && ST.amount < ST.max_amount)
+ ST.attackby(plank, user) //we try to transfer all old unfinished stacks to the new stack we created.
+ if(plank.amount > old_plank_amount)
+ user << "You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name]."
+ qdel(src)
+
+ if(is_type_in_list(W,accepted))
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W
+ if(leaf.dry)
+ user.show_message("You wrap \the [W] around the log, turning it into a torch!")
+ var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc)
+ usr.unEquip(W)
+ usr.put_in_active_hand(T)
+ qdel(leaf)
+ qdel(src)
+ return
+ else
+ usr << "You must dry this first!"
+
+/obj/item/weapon/grown/log/tree
+ seed = null
+ name = "wood log"
+ desc = "TIMMMMM-BERRRRRRRRRRR!"
+
+/obj/item/weapon/grown/log/steel
+ seed = /obj/item/seeds/tower/steel
+ name = "steel-cap log"
+ desc = "It's made of metal."
+ icon_state = "steellogs"
+ accepted = list()
+ plank_type = /obj/item/stack/rods
+ plank_name = "rods"
\ No newline at end of file
diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm
index f4c35d60c2427..b2104f19d3365 100644
--- a/code/modules/hydroponics/growninedible.dm
+++ b/code/modules/hydroponics/growninedible.dm
@@ -5,336 +5,80 @@
/obj/item/weapon/grown // Grown weapons
name = "grown_weapon"
icon = 'icons/obj/hydroponics/harvest.dmi'
- var/seed = null
- var/plantname = ""
- var/product //a type path
- var/lifespan = 0
- var/endurance = 15
- var/maturation = 7
- var/production = 7
- var/yield = 2
- var/potency = 20
var/plant_type = 0
+ var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item.
-/obj/item/weapon/grown/New(newloc, new_potency = 50)
+/obj/item/weapon/grown/New(newloc, var/obj/item/seeds/new_seed = null)
..()
- potency = new_potency
- pixel_x = rand(-5, 5)
- pixel_y = rand(-5, 5)
-
- transform *= TransformUsingVariable(potency, 100, 0.5)
-
- if(seed && lifespan == 0) //This is for adminspawn or map-placed growns. They get the default stats of their seed type. This feels like a hack but people insist on putting these things on the map...
- var/obj/item/seeds/S = new seed(src)
- lifespan = S.lifespan
- endurance = S.endurance
- maturation = S.maturation
- production = S.production
- yield = S.yield
- qdel(S) //Foods drop their contents when eaten, so delete the default seed.
-
create_reagents(50)
- add_juice()
-
-/obj/item/weapon/grown/proc/add_juice()
- if(reagents)
- return 1
- return 0
-
-/obj/item/weapon/grown/log
- seed = /obj/item/seeds/towermycelium
- name = "tower-cap log"
- desc = "It's better than bad, it's good!"
- icon_state = "logs"
- force = 5
- throwforce = 5
- w_class = 3.0
- throw_speed = 2
- throw_range = 3
- plant_type = 2
- origin_tech = "materials=1"
- attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
- var/plank_type = /obj/item/stack/sheet/mineral/wood
- var/plank_name = "wooden planks"
- var/list/accepted = list(/obj/item/weapon/reagent_containers/food/snacks/grown/tobacco,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera,
- /obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
- /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
- /obj/item/weapon/reagent_containers/food/snacks/grown/wheat)
-
-
-/obj/item/weapon/grown/log/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- ..()
- if(istype(W, /obj/item/weapon/circular_saw) || istype(W, /obj/item/weapon/hatchet) || (istype(W, /obj/item/weapon/twohanded/fireaxe) && W:wielded) || istype(W, /obj/item/weapon/melee/energy) || istype(W, /obj/item/weapon/twohanded/chainsaw) && W:wielded)
- user.show_message("You make [plank_name] out of \the [src]!", 1)
- var/obj/item/stack/plank = new plank_type(user.loc, 1 + round(potency / 25))
- var/old_plank_amount = plank.amount
- for(var/obj/item/stack/ST in user.loc)
- if(ST != plank && istype(ST, plank_type) && ST.amount < ST.max_amount)
- ST.attackby(plank, user) //we try to transfer all old unfinished stacks to the new stack we created.
- if(plank.amount > old_plank_amount)
- user << "You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name]."
- qdel(src)
-
- if(is_type_in_list(W,accepted))
- var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W
- if(leaf.dry)
- user.show_message("You wrap \the [W] around the log, turning it into a torch!")
- var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc)
- usr.unEquip(W)
- usr.put_in_active_hand(T)
- qdel(leaf)
- qdel(src)
- return
- else
- usr << " You must dry this first."
-
-/obj/item/weapon/grown/log/steel
- seed = /obj/item/seeds/steelmycelium
- name = "steel-cap log"
- desc = "It's made of metal."
- icon_state = "steellogs"
- accepted = list()
- plank_type = /obj/item/stack/rods
- plank_name = "rods"
-
-/obj/item/weapon/grown/sunflower // FLOWER POWER!
- seed = /obj/item/seeds/sunflowerseed
- name = "sunflower"
- desc = "It's beautiful! A certain person might beat you to death if you trample these."
- icon_state = "sunflower"
- damtype = "fire"
- force = 0
- slot_flags = SLOT_HEAD
- throwforce = 0
- w_class = 1.0
- throw_speed = 1
- throw_range = 3
-
-/obj/item/weapon/grown/sunflower/attack(mob/M as mob, mob/user as mob)
- M << " [user] smacks you with a sunflower!FLOWER POWER"
- user << " Your sunflower's FLOWER POWER strikes [M]"
-
-
-/obj/item/weapon/grown/novaflower
- seed = /obj/item/seeds/novaflowerseed
- name = "novaflower"
- desc = "These beautiful flowers have a crisp smokey scent, like a summer bonfire."
- icon_state = "novaflower"
- damtype = "fire"
- force = 0
- slot_flags = SLOT_HEAD
- throwforce = 0
- w_class = 1.0
- throw_speed = 1
- throw_range = 3
- plant_type = 0
- attack_verb = list("roasted", "scorched", "burned")
- grind_reagents = list("capsaicin" = 0, "condensedcapsaicin" = 0)
-
-/obj/item/weapon/grown/novaflower/add_juice()
- if(..())
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("capsaicin", round((potency / 3.5), 1))
- reagents.add_reagent("condensedcapsaicin", round((potency / 4), 1))
- force = round((5 + potency / 5), 1)
-
-/obj/item/weapon/grown/novaflower/attack(mob/living/carbon/M as mob, mob/user as mob)
- if(!..()) return
- if(istype(M, /mob/living))
- M << "You are lit on fire from the intense heat of the [name]!"
- M.adjust_fire_stacks(potency / 20)
- M.IgniteMob()
-
-/obj/item/weapon/grown/novaflower/afterattack(atom/A as mob|obj, mob/user as mob,proximity)
- if(!proximity) return
- if(endurance > 0)
- endurance -= rand(1, (endurance / 3) + 1)
- else
- usr << "All the petals have fallen off the [name] from violent whacking."
- usr.unEquip(src)
- qdel(src)
-
-/obj/item/weapon/grown/novaflower/pickup(mob/living/carbon/human/user as mob)
- if(!user.gloves)
- user << "The [name] burns your bare hand!"
- user.adjustFireLoss(rand(1, 5))
-
-
-/obj/item/weapon/grown/nettle //abstract type
- name = "nettle"
- desc = "It's probably not wise to touch it with bare hands..."
- icon = 'icons/obj/weapons.dmi'
- icon_state = "nettle"
- damtype = "fire"
- force = 15
- hitsound = 'sound/weapons/bladeslice.ogg'
- throwforce = 5
- w_class = 1.0
- throw_speed = 1
- throw_range = 3
- plant_type = 1
- origin_tech = "combat=1"
- attack_verb = list("stung")
- grind_reagents = list("sacid" = 0)
-/obj/item/weapon/grown/nettle/suicide_act(mob/user)
- user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.")
- return (BRUTELOSS|TOXLOSS)
-
-/obj/item/weapon/grown/nettle/pickup(mob/living/user as mob)
- if(!iscarbon(user))
- return 0
- var/mob/living/carbon/C = user
- if(ishuman(user))
- var/mob/living/carbon/human/H = C
- if(H.gloves)
- return 0
- var/organ = ((H.hand ? "l_":"r_") + "arm")
- var/datum/organ/limb/L = H.get_organdatum(organ)
- if(L && L.exists())
- var/obj/item/organ/limb/affecting = L.organitem
- if(affecting && affecting.take_damage(0, force))
- H.update_damage_overlays(0)
- else
- C.take_organ_damage(0,force)
- C << "The nettle burns your bare hand!"
- return 1
-
-/obj/item/weapon/grown/nettle/afterattack(atom/A as mob|obj, mob/user as mob,proximity)
- if(!proximity) return
- if(force > 0)
- force -= rand(1, (force / 3) + 1) // When you whack someone with it, leaves fall off
- else
- usr << "All the leaves have fallen off the nettle from violent whacking."
- usr.unEquip(src)
+ if(new_seed)
+ seed = new_seed.Copy()
+ else if(ispath(seed))
+ // This is for adminspawn or map-placed growns. They get the default stats of their seed type.
+ seed = new seed()
+ seed.adjust_potency(50-seed.potency)
+ else // Something is terribly wrong
qdel(src)
+ return
+ pixel_x = rand(-5, 5)
+ pixel_y = rand(-5, 5)
-/obj/item/weapon/grown/nettle/basic
- seed = /obj/item/seeds/nettleseed
-
-/obj/item/weapon/grown/nettle/basic/add_juice()
- ..()
- reagents.add_reagent("sacid", round((potency / 2), 1))
- force = round((5 + potency / 5), 1)
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ T.on_new(src, newloc)
+ if(istype(src, seed.product)) // no adding reagents if it is just a trash item
+ seed.prepare_result(src)
+ add_juice()
+ transform *= TransformUsingVariable(seed.potency, 100, 0.5)
-/obj/item/weapon/grown/nettle/death
- seed = /obj/item/seeds/deathnettleseed
- name = "deathnettle"
- desc = "The glowing \black nettle incites rage\black in you just from looking at it!"
- icon_state = "deathnettle"
- force = 30
- throwforce = 15
- origin_tech = "combat=3"
- grind_reagents = list("pacid" = 0)
-/obj/item/weapon/grown/nettle/death/add_juice()
+/obj/item/weapon/grown/attackby(obj/item/O, mob/user, params)
..()
- reagents.add_reagent("pacid", round((potency / 2), 1))
- force = round((5 + potency / 2.5), 1)
-
-/obj/item/weapon/grown/nettle/death/pickup(mob/living/carbon/user as mob)
- if(..())
- if(prob(50))
- user.Paralyse(5)
- user << "You are stunned by the Deathnettle when you try picking it up!"
-
-/obj/item/weapon/grown/nettle/death/attack(mob/living/carbon/M as mob, mob/user as mob)
- if(!..()) return
- if(istype(M, /mob/living))
- M << "You are stunned by the powerful acid of the Deathnettle!"
- add_logs(user, M, "attacked", object= "[src.name]")
-
- M.eye_blurry += force/7
- if(prob(20))
- M.Paralyse(force / 6)
- M.Weaken(force / 15)
- M.drop_item()
-
-
-/obj/item/weapon/grown/bananapeel
- name = "banana peel"
- desc = "A peel from a banana."
- icon = 'icons/obj/items.dmi'
- icon_state = "banana_peel"
- item_state = "banana_peel"
- w_class = 1.0
- throwforce = 0
- throw_speed = 3
- throw_range = 7
-
-/obj/item/weapon/grown/bananapeel/suicide_act(mob/user)
- user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.")
- playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1)
- return (BRUTELOSS)
+ if (istype(O, /obj/item/device/analyzer/plant_analyzer))
+ var/msg = "*---------*\n This is \a [src]\n"
+ msg += seed.get_analyzer_text()
+ msg += ""
+ usr << msg
+ return
-/obj/item/weapon/grown/bananapeel/Crossed(AM as mob|obj)
- if (istype(AM, /mob/living/carbon))
- var/mob/living/carbon/M = AM
- var/stun = Clamp(potency / 20, 1, 5)
- var/weaken = Clamp(potency / 25, 0.5, 4)
- M.slip(stun, weaken, src)
+/obj/item/weapon/grown/proc/add_juice()
+ if(reagents)
return 1
+ return 0
-/obj/item/weapon/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes
- name = "synthesized banana peel"
- desc = "A synthetic banana peel."
-
-/obj/item/weapon/grown/bananapeel/specialpeel/Crossed(AM)
- if(..()) qdel(src)
-
-/obj/item/weapon/grown/bananapeel/mimanapeel
- name = "mimana peel"
- desc = "A mimana peel."
- icon = 'icons/obj/hydroponics/harvest.dmi'
- icon_state = "mimana_peel"
-
-
-/obj/item/weapon/grown/corncob
- name = "corn cob"
- desc = "A reminder of meals gone by."
- icon_state = "corncob"
- item_state = "corncob"
- w_class = 1.0
- throwforce = 0
- throw_speed = 3
- throw_range = 7
-/obj/item/weapon/grown/corncob/attackby(obj/item/weapon/grown/W as obj, mob/user as mob, params)
+/obj/item/weapon/grown/Crossed(atom/movable/AM)
+ var/datum/plant_gene/trait/slip/S = seed.get_gene(/datum/plant_gene/trait/slip)
+ if(S && iscarbon(AM))
+ var/mob/living/carbon/M = AM
+ var/stun = max(seed.potency * S.rate * 2, 1)
+ var/weaken = max(seed.potency * S.rate, 0.5)
+ if(M.slip(stun, weaken, src))
+ for(var/datum/plant_gene/trait/T in seed.genes)
+ T.on_slip(src, M)
+ return 1
..()
- if(is_sharp(W))
- user << "You use [W] to fashion a pipe out of the corn cob!"
- new /obj/item/clothing/mask/cigarette/pipe/cobpipe (user.loc)
- user.unEquip(src)
- qdel(src)
- return
-/obj/item/weapon/grown/snapcorn
- name = "snap corn"
- desc = "A cob with snap pops"
- icon_state = "snapcorn"
- item_state = "corncob"
- w_class = 1.0
- throwforce = 0
- throw_speed = 3
- throw_range = 7
- var/snap_pops = 1
-/obj/item/weapon/grown/snapcorn/add_juice()
+// Glow gene procs
+/obj/item/weapon/grown/Destroy()
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G && ismob(loc))
+ loc.set_light(-G.get_lum(seed))
+ return ..()
+
+/obj/item/weapon/grown/pickup(mob/user)
..()
- snap_pops = max(round(potency/8), 1)
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G)
+ set_light(0)
+ user.set_light(G.get_lum(seed))
-/obj/item/weapon/grown/snapcorn/attack_self(mob/user as mob)
+/obj/item/weapon/grown/dropped(mob/user)
..()
- user << "You pick up a snap pops from the cob."
- var/obj/item/toy/snappop/S = new /obj/item/toy/snappop(user.loc)
- if(ishuman(user))
- user.put_in_hands(S)
- snap_pops -= 1
- if(!snap_pops)
- new /obj/item/weapon/grown/corncob(user.loc)
- qdel(src)
+ var/datum/plant_gene/trait/glow/G = seed.get_gene(/datum/plant_gene/trait/glow)
+ if(G)
+ user.set_light(-G.get_lum(seed))
+ set_light(G.get_lum(seed))
\ No newline at end of file
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 5ed7c6d1a0e73..c6cef589f23fa 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -19,7 +19,6 @@
var/lastproduce = 0 //Last time it was harvested
var/lastcycle = 0 //Used for timing of cycles.
var/cycledelay = 200 //About 10 seconds / cycle
- var/planted = 0 //Is it occupied?
var/harvest = 0 //Ready to harvest?
var/obj/item/seeds/myseed = null //The currently planted seed
var/rating = 1
@@ -96,22 +95,15 @@
return connected
-/obj/machinery/hydroponics/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
- if(!planted)
- ..()
- return
+/obj/machinery/hydroponics/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
+ if(!myseed)
+ return ..()
if(istype(Proj ,/obj/item/projectile/energy/floramut))
mutate()
else if(istype(Proj ,/obj/item/projectile/energy/florayield))
- if(myseed.yield == 0)//Oh god don't divide by zero you'll doom us all.
- adjustSYield(1 * rating)
- //world << "Yield increased by 1, from 0, to a total of [myseed.yield]"
- else if(prob(1/(myseed.yield * myseed.yield) * 100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2...
- adjustSYield(1 * rating)
- //world << "Yield increased by 1, to a total of [myseed.yield]"
+ return myseed.bullet_act(Proj)
else
- ..()
- return
+ return ..()
/obj/machinery/hydroponics/process()
@@ -122,9 +114,12 @@
if(world.time > (lastcycle + cycledelay))
lastcycle = world.time
- if(planted && !dead)
+ if(myseed && !dead)
// Advance age
age++
+ if(age < myseed.maturation)
+ lastproduce = age
+
needs_update = 1
//Nutrients//////////////////////////////////////////////////////////////
@@ -133,7 +128,7 @@
adjustNutri(-1 / rating)
// Lack of nutrients hurts non-weeds
- if(nutrilevel <= 0 && myseed.plant_type != 1)
+ if(nutrilevel <= 0 && myseed.plant_type != PLANT_WEED)
adjustHealth(-rand(1,3))
//Photosynthesis/////////////////////////////////////////////////////////
@@ -141,7 +136,7 @@
if(isturf(loc))
var/turf/currentTurf = loc
var/lightAmt = (currentTurf.get_lumcount() * 10)
- if(myseed.plant_type == 2) // Mushroom
+ if(myseed.plant_type == PLANT_MUSHROOM)
if(lightAmt < 2)
adjustHealth(-1 / rating)
else // Non-mushroom
@@ -196,7 +191,7 @@
adjustWater(-rand(1,6) / rating)
// If the plant is dry, it loses health pretty fast, unless mushroom
- if(waterlevel <= 10 && myseed.plant_type != 2) //Add CO2 check here?
+ if(waterlevel <= 10 && myseed.plant_type != PLANT_MUSHROOM)
adjustHealth(-rand(0,1) / rating)
if(waterlevel <= 0)
adjustHealth(-rand(0,2) / rating)
@@ -223,7 +218,7 @@
adjustHealth(-1 / rating)
// If it's a weed, it doesn't stunt the growth
- if(weedlevel >= 5 && myseed.plant_type != 1 )
+ if(weedlevel >= 5 && myseed.plant_type != PLANT_WEED)
adjustHealth(-1 / rating)
//Health & Age///////////////////////////////////////////////////////////
@@ -253,8 +248,8 @@
// Weeeeeeeeeeeeeeedddssss
if(weedlevel >= 10 && prob(50)) // At this point the plant is kind of fucked. Weeds can overtake the plant spot.
- if(planted)
- if(myseed.plant_type == 0) // If a normal plant
+ if(myseed)
+ if(myseed.plant_type == PLANT_NORMAL) // If a normal plant
weedinvasion()
else
weedinvasion() // Weed invasion into empty tray
@@ -275,9 +270,9 @@
if (mutmod == 2)
if(prob(50)) //50%
mutate()
- else if(prob(75)) //37.5%
+ else if(prob(50)) //25%
hardmutate()
- else if(prob(10)) //1/80
+ else if(prob(50)) //12.5%
mutatespecie()
return
return
@@ -287,6 +282,21 @@
//Refreshes the icon and sets the luminosity
overlays.Cut()
+ update_icon_hoses()
+
+ if(myseed)
+ update_icon_plant()
+ update_icon_lights()
+
+ if(myseed && myseed.get_gene(/datum/plant_gene/trait/glow))
+ var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
+ set_light(G.get_lum(myseed))
+ else
+ set_light(0)
+
+ return
+
+/obj/machinery/hydroponics/proc/update_icon_hoses()
var/n = 0
for(var/Dir in cardinal)
@@ -297,52 +307,56 @@
icon_state = "hoses-[n]"
- UpdateDescription()
-
- if(planted)
- var/image/I
- if(dead)
- I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-dead")
- else if(harvest)
- if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic
- I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]")
- else
- I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-harvest")
- else if(age < myseed.maturation)
- var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages ) // Make sure it won't crap out due to HERPDERP 6 stages only
- I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[round(t_growthstate)]")
- lastproduce = age //Cheating by putting this here, it means that it isn't instantly ready to harvest
+/obj/machinery/hydroponics/proc/update_icon_plant()
+ var/image/I
+ if(dead)
+ I = image('icons/obj/hydroponics/growing.dmi', icon_state = myseed.icon_dead)
+ else if(harvest)
+ if(!myseed.icon_harvest)
+ I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.icon_grow][myseed.growthstages]")
else
- I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.species]-grow[myseed.growthstages]") // Same
- I.layer = MOB_LAYER + 0.1
- overlays += I
-
- if(waterlevel <= 10)
- overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowwater3")
- if(nutrilevel <= 2)
- overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lownutri3")
- if(health <= (myseed.endurance / 2))
- overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowhealth3")
- if(weedlevel >= 5 || pestlevel >= 5 || toxic >= 40)
- overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_alert3")
- if(harvest)
- overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_harvest3")
-
- if(istype(myseed,/obj/item/seeds/glowshroom))
- set_light(round(myseed.potency / 10))
+ I = image('icons/obj/hydroponics/growing.dmi', icon_state = myseed.icon_harvest)
else
- set_light(0)
+ var/t_growthstate = min(round((age / myseed.maturation) * myseed.growthstages), myseed.growthstages)
+ I = image('icons/obj/hydroponics/growing.dmi', icon_state = "[myseed.icon_grow][t_growthstate]")
+ I.layer = MOB_LAYER + 0.1
+ overlays += I
+
+/obj/machinery/hydroponics/proc/update_icon_lights()
+ if(waterlevel <= 10)
+ overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowwater3")
+ if(nutrilevel <= 2)
+ overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lownutri3")
+ if(health <= (myseed.endurance / 2))
+ overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_lowhealth3")
+ if(weedlevel >= 5 || pestlevel >= 5 || toxic >= 40)
+ overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_alert3")
+ if(harvest)
+ overlays += image('icons/obj/hydroponics/equipment.dmi', icon_state = "over_harvest3")
- return
-/obj/machinery/hydroponics/proc/UpdateDescription()
- desc = null
- if (planted)
- desc = "[src] has [myseed.plantname] planted."
+/obj/machinery/hydroponics/examine(user)
+ ..()
+ if(myseed)
+ user << "It has [myseed.plantname] planted."
if (dead)
- desc += " It's dead."
+ user << "It's dead."
else if (harvest)
- desc += " It's ready to harvest."
+ user << "It's ready to harvest."
+ else if (health <= (myseed.endurance / 2))
+ user << "It looks unhealthy."
+ else
+ user << "[src] is empty."
+
+ user << "Water: [waterlevel]/[maxwater]"
+ user << "Nutrient: [nutrilevel]/[maxnutri]"
+
+ if(weedlevel >= 5)
+ user << "[src] is filled with weeds!"
+ if(pestlevel >= 5)
+ user << "[src] is filled with tiny worms!"
+ user << "" // Empty line for readability.
+
/obj/machinery/hydroponics/proc/weedinvasion() // If a weed growth is sufficient, this happens.
dead = 0
@@ -350,26 +364,26 @@
if(myseed) // In case there's nothing in the tray beforehand
oldPlantName = myseed.plantname
qdel(myseed)
+ myseed = null
else
oldPlantName = "Empty tray"
switch(rand(1,18)) // randomly pick predominative weed
if(16 to 18)
- myseed = new /obj/item/seeds/reishimycelium
+ myseed = new /obj/item/seeds/reishi(src)
if(14 to 15)
- myseed = new /obj/item/seeds/nettleseed
+ myseed = new /obj/item/seeds/nettle(src)
if(12 to 13)
- myseed = new /obj/item/seeds/harebell
+ myseed = new /obj/item/seeds/harebell(src)
if(10 to 11)
- myseed = new /obj/item/seeds/amanitamycelium
+ myseed = new /obj/item/seeds/amanita(src)
if(8 to 9)
- myseed = new /obj/item/seeds/chantermycelium
+ myseed = new /obj/item/seeds/chanter(src)
if(6 to 7)
- myseed = new /obj/item/seeds/towermycelium
+ myseed = new /obj/item/seeds/tower(src)
if(4 to 5)
- myseed = new /obj/item/seeds/plumpmycelium
+ myseed = new /obj/item/seeds/plump(src)
else
- myseed = new /obj/item/seeds/weeds
- planted = 1
+ myseed = new /obj/item/seeds/weeds(src)
age = 0
health = myseed.endurance
lastcycle = world.time
@@ -380,43 +394,36 @@
visible_message("[oldPlantName] overtaken by [myseed.plantname].")
-/obj/machinery/hydroponics/proc/mutate(var/lifemut = 2, var/endmut = 5, var/productmut = 1, var/yieldmut = 2, var/potmut = 25) // Mutates the current seed
- if(!planted)
+/obj/machinery/hydroponics/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25) // Mutates the current seed
+ if(!myseed)
return
- adjustSLife(rand(-lifemut,lifemut))
- adjustSEnd(rand(-endmut,endmut))
- adjustSProduct(rand(-productmut,productmut))
- adjustSYield(rand(-yieldmut,yieldmut))
- adjustSPot(rand(-potmut,potmut))
-
+ myseed.mutate(lifemut, endmut, productmut, yieldmut, potmut)
/obj/machinery/hydroponics/proc/hardmutate()
mutate(4, 10, 2, 4, 50)
/obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant!
- if(!planted || dead)
+ if(!myseed || dead)
return
var/oldPlantName = myseed.plantname
if(myseed.mutatelist.len > 0)
var/mutantseed = pick(myseed.mutatelist)
qdel(myseed)
+ myseed = null
myseed = new mutantseed
-
else
return
- dead = 0
hardmutate()
- planted = 1
age = 0
health = myseed.endurance
lastcycle = world.time
harvest = 0
weedlevel = 0 // Reset
- spawn(5) // Wait a while
+ sleep(5) // Wait a while
update_icon()
visible_message("[oldPlantName] suddenly mutated into [myseed.plantname]!")
@@ -425,18 +432,18 @@
if( weedlevel > 5 )
if(myseed)
qdel(myseed)
- var/newWeed = pick(/obj/item/seeds/libertymycelium, /obj/item/seeds/angelmycelium, /obj/item/seeds/deathnettleseed, /obj/item/seeds/kudzuseed)
+ myseed = null
+ var/newWeed = pick(/obj/item/seeds/liberty, /obj/item/seeds/angel, /obj/item/seeds/nettle/death, /obj/item/seeds/kudzu)
myseed = new newWeed
dead = 0
hardmutate()
- planted = 1
age = 0
health = myseed.endurance
lastcycle = world.time
harvest = 0
weedlevel = 0 // Reset
- spawn(5) // Wait a while
+ sleep(5) // Wait a while
update_icon()
visible_message("The mutated weeds in [src] spawned a [myseed.plantname]!")
else
@@ -461,23 +468,29 @@
else
usr << "The pests seem to behave oddly, but quickly settle down..."
-/obj/machinery/hydroponics/proc/applyChemicals(var/datum/reagents/S)
-
- if(!myseed)
- return
- myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
+/obj/machinery/hydroponics/proc/applyChemicals(datum/reagents/S)
+ if(myseed)
+ myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10))
switch(rand(100))
- if(91 to 100) plantdies()
- if(81 to 90) mutatespecie()
- if(66 to 80) hardmutate()
- if(41 to 65) mutate()
- if(21 to 41) usr << "The plants don't seem to react..."
- if(11 to 20) mutateweed()
- if(1 to 10) mutatepest()
- else usr << "Nothing happens..."
+ if(91 to 100)
+ plantdies()
+ if(81 to 90)
+ mutatespecie()
+ if(66 to 80)
+ hardmutate()
+ if(41 to 65)
+ mutate()
+ if(21 to 41)
+ usr << "The plants don't seem to react..."
+ if(11 to 20)
+ mutateweed()
+ if(1 to 10)
+ mutatepest()
+ else
+ usr << "Nothing happens..."
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5))
@@ -542,7 +555,8 @@
adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5))
adjustWeeds(-rand(1,3))
- // White Phosphorous + water -> phosphoric acid. That's not a good thing really. Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
+ // White Phosphorous + water -> phosphoric acid. That's not a good thing really.
+ // Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
if(S.has_reagent("phosphorus", 1))
adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75))
adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1))
@@ -564,7 +578,8 @@
adjustWater(round(S.get_reagent_amount("holywater") * 1))
adjustHealth(round(S.get_reagent_amount("holywater") * 0.1))
- // A variety of nutrients are dissolved in club soda, without sugar. These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
+ // A variety of nutrients are dissolved in club soda, without sugar.
+ // These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
if(S.has_reagent("sodawater", 1))
adjustWater(round(S.get_reagent_amount("sodawater") * 1))
adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1))
@@ -588,6 +603,12 @@
adjustToxic(-round(S.get_reagent_amount("plantbgone") * 6))
adjustWeeds(-rand(4,8))
+ // why, just why
+ if(S.has_reagent("napalm", 1))
+ adjustHealth(-round(S.get_reagent_amount("napalm") * 6))
+ adjustToxic(-round(S.get_reagent_amount("napalm") * 7))
+ adjustWeeds(-rand(5,9))
+
//Weed Spray
if(S.has_reagent("weedkiller", 1))
adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5))
@@ -608,13 +629,15 @@
if(S.has_reagent("ammonia", 1))
adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5))
adjustNutri(round(S.get_reagent_amount("ammonia") * 1))
- adjustSYield(round(S.get_reagent_amount("ammonia") * 0.01))
+ if(myseed)
+ myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01))
// This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
if(S.has_reagent("diethylamine", 1))
adjustHealth(round(S.get_reagent_amount("diethylamine") * 1))
adjustNutri(round(S.get_reagent_amount("diethylamine") * 2))
- adjustSYield(round(S.get_reagent_amount("diethylamine") * 0.02))
+ if(myseed)
+ myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02))
adjustPests(-rand(1,2))
// Compost, effectively
@@ -706,47 +729,35 @@
reagent_source.update_icon()
return 1
- else if(istype(O, /obj/item/seeds/))
- if(!planted)
+ else if(istype(O, /obj/item/seeds))
+ if(!myseed)
user.unEquip(O)
user << "You plant [O]."
dead = 0
myseed = O
- planted = 1
age = 1
health = myseed.endurance
lastcycle = world.time
O.loc = src
- if((user.client && user.s_active != src))
- user.client.screen -= O
- O.dropped(user)
update_icon()
else
user << "[src] already has seeds in it!"
else if(istype(O, /obj/item/device/analyzer/plant_analyzer))
- if(planted && myseed)
+ if(myseed)
user << "*** [myseed.plantname] ***" //Carn: now reports the plants growing, not the seeds.
- user << "-Plant Age: [age]"
- user << "-Plant Endurance: [myseed.endurance]"
- user << "-Plant Lifespan: [myseed.lifespan]"
- if(myseed.yield != -1)
- user << "-Plant Yield: [myseed.yield]"
- user << "-Plant Production: [myseed.production]"
- if(myseed.potency != -1)
- user << "-Plant Potency: [myseed.potency]"
- var/list/text_strings = myseed.get_analyzer_text()
- if(text_strings)
- for(var/string in text_strings)
- user << string
+ user << "- Plant Age: [age]"
+ var/list/text_string = myseed.get_analyzer_text()
+ if(text_string)
+ user << text_string
else
user << "No plant found."
- user << "-Weed level: [weedlevel] / 10"
- user << "-Pest level: [pestlevel] / 10"
- user << "-Toxicity level: [toxic] / 100"
- user << "-Water level: [waterlevel] / [maxwater]"
- user << "-Nutrition level: [nutrilevel] / [maxnutri]"
+ user << "- Weed level: [weedlevel] / 10"
+ user << "- Pest level: [pestlevel] / 10"
+ user << "- Toxicity level: [toxic] / 100"
+ user << "- Water level: [waterlevel] / [maxwater]"
+ user << "- Nutrition level: [nutrilevel] / [maxnutri]"
user << ""
else if(istype(O, /obj/item/weapon/cultivator))
@@ -816,122 +827,13 @@
if(harvest)
myseed.harvest()
else if(dead)
- planted = 0
dead = 0
user << "You remove the dead plant from [src]."
qdel(myseed)
+ myseed = null
update_icon()
else
- if(planted && !dead)
- user << "[src] has [myseed.plantname] planted."
- if(health <= (myseed.endurance / 2))
- user << "The plant looks unhealthy."
- else
- user << "[src] is empty."
- user << "Water: [waterlevel]/[maxwater]"
- user << "Nutrient: [nutrilevel]/[maxnutri]"
- if(weedlevel >= 5) // Visual aid for those blind
- user << "[src] is filled with weeds!"
- if(pestlevel >= 5) // Visual aid for those blind
- user << "[src] is filled with tiny worms!"
- user << "" // Empty line for readability.
-
-/obj/item/seeds/proc/getYield()
- var/obj/machinery/hydroponics/parent = loc
- if (parent.yieldmod == 0)
- return min(yield, 1)//1 if above zero, 0 otherwise
- return (round(yield * parent.yieldmod * parent.co2mod))
-
-/obj/item/seeds/proc/harvest(mob/user = usr)
- var/obj/machinery/hydroponics/parent = loc //for ease of access
- var/t_amount = 0
- var/list/result = list()
- var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK
-
- var/critfail = 0 //If potency is 0
-
- while(t_amount < getYield())
- var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(output_loc, potency)
- result.Add(t_prod) // User gets a consumable
- if(!t_prod) return
- t_prod.lifespan = lifespan
- t_prod.endurance = endurance
- t_prod.maturation = maturation
- t_prod.production = production
- t_prod.yield = yield
- t_prod.potency = potency
- t_prod.plant_type = plant_type
- if(potency == 0) // :^(
- critfail = 1 //Won't play for replica pods, but these don't need the trombone
- t_amount++
-
- if(critfail)
- playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 0)
-
- parent.update_tray()
-
- return result
-
-
-/obj/item/seeds/replicapod/harvest(mob/user = usr) //now that one is fun -- Urist
- var/obj/machinery/hydroponics/parent = loc
- var/make_podman = 0
- var/ckey_holder = null
- if(config.revival_pod_plants)
- if(ckey)
- for(var/mob/M in player_list)
- if(istype(M, /mob/dead/observer))
- var/mob/dead/observer/O = M
- if(O.ckey == ckey && O.can_reenter_corpse)
- make_podman = 1
- break
- else
- if(M.ckey == ckey && M.stat == 2 && !M.suiciding)
- make_podman = 1
- break
- else //If the player has ghosted from his corpse before blood was drawn, his ckey is no longer attached to the mob, so we need to match up the cloned player through the mind key
- for(var/mob/M in player_list)
- if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == 2 && !M.suiciding)
- if(istype(M, /mob/dead/observer))
- var/mob/dead/observer/O = M
- if(!O.can_reenter_corpse)
- break
- make_podman = 1
- ckey_holder = M.ckey
- break
-
- if(make_podman) //all conditions met!
- var/mob/living/carbon/human/podman = new /mob/living/carbon/human(parent.loc)
- if(realName)
- podman.real_name = realName
- else
- podman.real_name = "Pod Person [rand(0,999)]"
- mind.transfer_to(podman)
- if(ckey)
- podman.ckey = ckey
- else
- podman.ckey = ckey_holder
- podman.gender = blood_gender
- podman.faction |= factions
- if(!mutant_color)
- mutant_color = "#59CE00"
- hardset_dna(podman,null,null,podman.real_name,blood_type,/datum/species/plant/pod,mutant_color)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
- podman.set_cloned_appearance()
-
- else //else, one packet of seeds. maybe two
- var/seed_count = 1
- if(prob(getYield() * 20))
- seed_count++
- for(var/i=0,i0)
adjustToxic(-round(adjustamt/4))//Toxicity dilutation code. The more water you put in, the lesser the toxin concentration.
-/obj/machinery/hydroponics/proc/adjustHealth(var/adjustamt)
- if(planted && !dead)
- health += adjustamt
- health = max(health, 0)
- health = min(health, myseed.endurance)
-
-/obj/machinery/hydroponics/proc/adjustToxic(var/adjustamt)
- toxic += adjustamt
- toxic = max(toxic, 0)
- toxic = min(toxic, 100)
-
-/obj/machinery/hydroponics/proc/adjustPests(var/adjustamt)
- pestlevel += adjustamt
- pestlevel = max(pestlevel, 0)
- pestlevel = min(pestlevel, 10)
-
-/obj/machinery/hydroponics/proc/adjustWeeds(var/adjustamt)
- weedlevel += adjustamt
- weedlevel = max(weedlevel, 0)
- weedlevel = min(weedlevel, 10)
-
-/// Seed Setters ///
-/obj/machinery/hydroponics/proc/adjustSYield(var/adjustamt)//0,10
- if(myseed && myseed.yield != -1) // Unharvestable shouldn't suddenly turn harvestable
- myseed.yield += adjustamt
- myseed.yield = max(myseed.yield, 0)
- myseed.yield = min(myseed.yield, 10)
- if(myseed.yield <= 0 && myseed.plant_type == 2)
- myseed.yield = 1 // Mushrooms always have a minimum yield of 1.
-
-/obj/machinery/hydroponics/proc/adjustSLife(var/adjustamt)//10,100
- if(myseed)
- myseed.lifespan += adjustamt
- myseed.lifespan = max(myseed.lifespan, 10)
- myseed.lifespan = min(myseed.lifespan, 100)
+/obj/machinery/hydroponics/proc/adjustHealth(adjustamt)
+ if(myseed && !dead)
+ health = Clamp(health + adjustamt, 0, myseed.endurance)
-/obj/machinery/hydroponics/proc/adjustSEnd(var/adjustamt)//10,100
- if(myseed)
- myseed.endurance += adjustamt
- myseed.endurance = max(myseed.endurance, 10)
- myseed.endurance = min(myseed.endurance, 100)
+/obj/machinery/hydroponics/proc/adjustToxic(adjustamt)
+ toxic = Clamp(toxic + adjustamt, 0, 100)
-/obj/machinery/hydroponics/proc/adjustSProduct(var/adjustamt)//2,10
- if(myseed)
- myseed.production += adjustamt
- myseed.production = max(myseed.production, 2)
- myseed.production = min(myseed.production, 10)
+/obj/machinery/hydroponics/proc/adjustPests(adjustamt)
+ pestlevel = Clamp(pestlevel + adjustamt, 0, 10)
-/obj/machinery/hydroponics/proc/adjustSPot(var/adjustamt)//0,100
- if(myseed && myseed.potency != -1) //Not all plants have a potency
- myseed.potency += adjustamt
- myseed.potency = max(myseed.potency, 0)
- myseed.potency = min(myseed.potency, 100)
+/obj/machinery/hydroponics/proc/adjustWeeds(adjustamt)
+ weedlevel = Clamp(weedlevel + adjustamt, 0, 10)
+
+/obj/machinery/hydroponics/proc/spawnplant() // why would you put strange reagent in a hydro tray you monster I bet you also feed them blood
+ var/list/livingplants = list(/mob/living/simple_animal/hostile/tree, /mob/living/simple_animal/hostile/killertomato)
+ var/chosen = pick(livingplants)
+ var/mob/living/simple_animal/hostile/C = new chosen
+ C.faction = list("plants")
///////////////////////////////////////////////////////////////////////////////
/obj/machinery/hydroponics/soil //Not actually hydroponics at all! Honk!
@@ -1025,34 +889,14 @@
use_power = 0
unwrenchable = 0
-/obj/machinery/hydroponics/soil/update_icon() // Same as normal but with the overlays removed - Cheridan.
- overlays.Cut()
+/obj/machinery/hydroponics/soil/update_icon_hoses()
+ return // Has no hoses
- UpdateDescription()
-
- if(planted)
- if(dead)
- overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-dead")
- else if(harvest)
- if(myseed.plant_type == 2) // Shrooms don't have a -harvest graphic
- overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]")
- else
- overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-harvest")
- else if(age < myseed.maturation)
- var/t_growthstate = ((age / myseed.maturation) * myseed.growthstages )
- overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[round(t_growthstate)]")
- lastproduce = age
- else
- overlays += image('icons/obj/hydroponics/growing.dmi', icon_state= "[myseed.species]-grow[myseed.growthstages]")
-
- if(istype(myseed,/obj/item/seeds/glowshroom))
- set_light(round(myseed.potency/10))
- else
- set_light(0)
- return
+/obj/machinery/hydroponics/soil/update_icon_lights()
+ return // Has no lights
-/obj/machinery/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/obj/machinery/hydroponics/soil/attackby(obj/item/O, mob/user, params)
..()
if(istype(O, /obj/item/weapon/shovel))
- user << "You clear up [src]!"
- qdel(src)
+ user << "You clear up [src]!"
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
new file mode 100644
index 0000000000000..3dbb809313939
--- /dev/null
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -0,0 +1,293 @@
+/datum/plant_gene
+ var/name
+
+/datum/plant_gene/proc/get_name() // Used for manipulator display and gene disk name.
+ return name
+
+/datum/plant_gene/proc/can_add(obj/item/seeds/S)
+ return !istype(S, /obj/item/seeds/sample) // Samples can't accept new genes
+
+/datum/plant_gene/proc/Copy()
+ return new type
+
+
+
+
+// Core plant genes store 5 main variables: lifespan, endurance, production, yield, potency
+/datum/plant_gene/core
+ var/value
+
+/datum/plant_gene/core/get_name()
+ return "[name] [value]"
+
+/datum/plant_gene/core/proc/apply_stat(obj/item/seeds/S)
+ return
+
+/datum/plant_gene/core/New(var/i = null)
+ ..()
+ if(!isnull(i))
+ value = i
+
+/datum/plant_gene/core/Copy()
+ var/datum/plant_gene/core/C = ..()
+ C.value = value
+ return C
+
+/datum/plant_gene/core/can_add(obj/item/seeds/S)
+ if(!..())
+ return FALSE
+ return S.get_gene(src.type)
+
+/datum/plant_gene/core/lifespan
+ name = "Lifespan"
+ value = 25
+
+/datum/plant_gene/core/lifespan/apply_stat(obj/item/seeds/S)
+ S.lifespan = value
+
+
+/datum/plant_gene/core/endurance
+ name = "Endurance"
+ value = 15
+
+/datum/plant_gene/core/endurance/apply_stat(obj/item/seeds/S)
+ S.endurance = value
+
+
+/datum/plant_gene/core/production
+ name = "Production Speed"
+ value = 6
+
+/datum/plant_gene/core/production/apply_stat(obj/item/seeds/S)
+ S.production = value
+
+
+/datum/plant_gene/core/yield
+ name = "Yield"
+ value = 3
+
+/datum/plant_gene/core/yield/apply_stat(obj/item/seeds/S)
+ S.yield = value
+
+
+/datum/plant_gene/core/potency
+ name = "Potency"
+ value = 10
+
+/datum/plant_gene/core/potency/apply_stat(obj/item/seeds/S)
+ S.potency = value
+
+
+// Reagent genes store reagent ID and reagent ratio. Amount of reagent in the plant = 1 + (potency * rate)
+/datum/plant_gene/reagent
+ name = "Nutriment"
+ var/reagent_id = "nutriment"
+ var/rate = 0.04
+
+/datum/plant_gene/reagent/get_name()
+ return "[name] production [rate*100]%"
+
+/datum/plant_gene/reagent/proc/set_reagent(reag_id)
+ reagent_id = reag_id
+ name = "UNKNOWN"
+
+ var/datum/reagent/R = chemical_reagents_list[reag_id]
+ if(R && R.id == reagent_id)
+ name = R.name
+
+/datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0)
+ ..()
+ if(reag_id && reag_rate)
+ set_reagent(reag_id)
+ rate = reag_rate
+
+/datum/plant_gene/reagent/Copy()
+ var/datum/plant_gene/reagent/G = ..()
+ G.name = name
+ G.reagent_id = reagent_id
+ G.rate = rate
+ return G
+
+/datum/plant_gene/reagent/can_add(obj/item/seeds/S)
+ if(!..())
+ return FALSE
+ for(var/datum/plant_gene/reagent/R in S.genes)
+ if(R.reagent_id == reagent_id)
+ return FALSE
+ return TRUE
+
+
+// Various traits affecting the product. Each must be somehow useful.
+/datum/plant_gene/trait
+ var/rate = 0.05
+ var/examine_line = ""
+ var/list/origin_tech = null
+ var/trait_id // must be set and equal for any two traits of the same type
+
+/datum/plant_gene/trait/Copy()
+ var/datum/plant_gene/trait/G = ..()
+ G.rate = rate
+ return G
+
+/datum/plant_gene/trait/can_add(obj/item/seeds/S)
+ if(!..())
+ return FALSE
+
+ for(var/datum/plant_gene/trait/R in S.genes)
+ if(trait_id && R.trait_id == trait_id)
+ return FALSE
+ if(type == R.type)
+ return FALSE
+ return TRUE
+
+/datum/plant_gene/trait/proc/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc)
+ if(origin_tech) // This ugly code segment adds RnD tech levels to resulting plants.
+ if(G.origin_tech)
+ var/list/tech = params2list(G.origin_tech)
+ for(var/t in origin_tech)
+ if(t in tech)
+ tech[t] = max(tech[t], origin_tech[t])
+ else
+ tech[t] = origin_tech[t]
+ G.origin_tech = list2params(tech)
+ else
+ G.origin_tech = list2params(origin_tech)
+ return
+
+/datum/plant_gene/trait/proc/on_consume(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target)
+ return
+/datum/plant_gene/trait/proc/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target)
+ return
+/datum/plant_gene/trait/proc/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target)
+ return
+
+
+
+/datum/plant_gene/trait/squash
+ // Allows the plant to be squashed when thrown or slipped on, leaving a colored mess and trash type item behind.
+ // Also splashes everything in target turf with reagents and applies other trait effects (teleporting, etc) to the target by on_squash.
+ // For code, see grown.dm
+ name = "Liquid Contents"
+ examine_line = "It has a lot of liquid contents inside."
+
+/*/datum/plant_gene/trait/squash/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target)
+ G.squash(target)*/
+
+
+/datum/plant_gene/trait/slip
+ // Makes plant slippery, unless it has a grown-type trash. Then the trash gets slippery.
+ // Applies other trait effects (teleporting, etc) to the target by on_slip.
+ // For code, see grown.dm
+ name = "Slippery Skin"
+ rate = 0.1
+ examine_line = "It has a very slippery skin."
+
+
+/datum/plant_gene/trait/cell_charge
+ // Cell recharging trait. Charges all mob's power cells to (potency*rate)% mark when eaten.
+ // Generates sparks on squash.
+ // Small (potency*rate*5) chance to shock squish or slip target for (potency*rate*5) damage.
+ // Multiplies max charge by (rate*1000) when used in potato power cells.
+ name = "Electrical Activity"
+ rate = 0.01
+ origin_tech = list("powerstorage" = 4)
+
+/datum/plant_gene/trait/cell_charge/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
+ var/power = G.seed.potency*rate*5
+ if(prob(power))
+ C.electrocute_act(round(power), G, 1, 1)
+
+/datum/plant_gene/trait/cell_charge/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target)
+ if(iscarbon(target))
+ var/mob/living/carbon/C = target
+ var/power = G.seed.potency*rate*5
+ if(prob(power))
+ C.electrocute_act(round(power), G, 1, 1)
+
+/datum/plant_gene/trait/cell_charge/on_consume(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/target)
+ if(!G.reagents.total_volume)
+ var/batteries_recharged = 0
+ for(var/obj/item/weapon/stock_parts/cell/C in target.GetAllContents())
+ var/newcharge = min(G.seed.potency*0.01*C.maxcharge, C.maxcharge)
+ if(C.charge < newcharge)
+ C.charge = newcharge
+ if(isobj(C.loc))
+ var/obj/O = C.loc
+ O.update_icon() //update power meters and such
+ C.update_icon()
+ batteries_recharged = 1
+ if(batteries_recharged)
+ target << "Your batteries are recharged!"
+
+
+
+/datum/plant_gene/trait/glow
+ // Makes plant glow. Makes plant in tray glow too.
+ // Adds potency*rate luminosity to products.
+ name = "Bioluminescence"
+ rate = 0.1
+ examine_line = "It emits a soft glow."
+ trait_id = "glow"
+
+/datum/plant_gene/trait/glow/proc/get_lum(obj/item/seeds/S)
+ return round(S.potency*rate)
+
+/datum/plant_gene/trait/glow/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc)
+ ..()
+ if(ismob(newloc))
+ G.pickup(newloc)//adjusts the lighting on the mob
+ else
+ G.set_light(get_lum(G.seed))
+
+/datum/plant_gene/trait/glow/berry
+ name = "Strong Bioluminescence"
+ rate = 0.2
+
+
+/datum/plant_gene/trait/teleport
+ // Makes plant teleport people when squashed or slipped on.
+ // Teleport radius is calculated as max(round(potency*rate), 1)
+ name = "Bluespace Activity"
+ rate = 0.1
+ origin_tech = list("bluespace" = 3)
+
+/datum/plant_gene/trait/teleport/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target)
+ if(isliving(target))
+ var/teleport_radius = max(round(G.seed.potency / 10), 1)
+ var/turf/T = get_turf(target)
+ new /obj/effect/decal/cleanable/molten_item(T) //Leave a pile of goo behind for dramatic effect...
+ do_teleport(target, T, teleport_radius)
+
+/datum/plant_gene/trait/teleport/on_slip(obj/item/weapon/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
+ var/teleport_radius = max(round(G.seed.potency / 10), 1)
+ var/turf/T = get_turf(C)
+ C << "You slip through spacetime!"
+ do_teleport(C, T, teleport_radius)
+ if(prob(50))
+ do_teleport(G, T, teleport_radius)
+ else
+ new /obj/effect/decal/cleanable/molten_item(T) //Leave a pile of goo behind for dramatic effect...
+ qdel(G)
+
+
+/datum/plant_gene/trait/noreact
+ // Makes plant NOREACT until squashed.
+ name = "Separated Chemicals"
+
+/datum/plant_gene/trait/noreact/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc)
+ ..()
+ G.flags |= NOREACT
+
+/datum/plant_gene/trait/noreact/on_squash(obj/item/weapon/reagent_containers/food/snacks/grown/G, atom/target)
+ G.flags &= ~NOREACT
+ G.reagents.handle_reactions()
+
+
+/datum/plant_gene/trait/maxchem
+ // 2x to max reagents volume.
+ name = "Densified Chemicals"
+ rate = 2
+
+/datum/plant_gene/trait/maxchem/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc)
+ ..()
+ G.reagents.maximum_volume *= rate
\ No newline at end of file
diff --git a/code/modules/hydroponics/sample.dm b/code/modules/hydroponics/sample.dm
new file mode 100644
index 0000000000000..4478671b2fb2f
--- /dev/null
+++ b/code/modules/hydroponics/sample.dm
@@ -0,0 +1,44 @@
+var/list/chem_t1_reagents = list(
+ "hydrogen", "oxygen", "silicon",
+ "phosphorus", "sulfur", "carbon",
+ "nitrogen", "water"
+)
+
+var/list/chem_t2_reagents = list(
+ "lithium", "copper", "mercury",
+ "sodium", "iodine", "bromine"
+) // "sugar", "sacid" removed because they are already in roundstart plants
+
+var/list/chem_t3_reagents = list(
+ "ethanol", "chlorine", "potassium",
+ "aluminium", "radium", "fluorine",
+ "iron", "welding_fuel", "silver",
+ "stable_plasma"
+)
+
+var/list/chem_t4_reagents = list(
+ "oil", "ash", "acetone",
+ "saltpetre", "ammonia", "diethylamine"
+)
+
+/obj/item/seeds/sample
+ name = "plant sample"
+ icon_state = "sample-empty"
+ potency = -1
+ yield = -1
+ var/sample_color = "#FFFFFF"
+
+/obj/item/seeds/sample/New()
+ ..()
+ if(sample_color)
+ var/image/I = image(icon, icon_state = "sample-filling")
+ I.color = sample_color
+ overlays += I
+
+/obj/item/seeds/sample/get_analyzer_text()
+ return " The DNA of this sample is damaged beyond recovery, it can't support life on it's own.\n*---------*"
+
+/obj/item/seeds/sample/alienweed
+ name = "alien weed sample"
+ icon_state = "alienweed"
+ sample_color = null
\ No newline at end of file
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index f3be9c55e3a85..bc0dc740e214c 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -9,32 +9,20 @@
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown/))
var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O
while(t_amount < t_max)
- var/obj/item/seeds/t_prod = new F.seed(O.loc, O)
- t_prod.lifespan = F.lifespan
- t_prod.endurance = F.endurance
- t_prod.maturation = F.maturation
- t_prod.production = F.production
- t_prod.yield = F.yield
- t_prod.potency = F.potency
+ var/obj/item/seeds/t_prod = F.seed.Copy()
+ t_prod.loc = O.loc
t_amount++
qdel(O)
return 1
- else if(istype(O, /obj/item/weapon/grown/))
+ else if(istype(O, /obj/item/weapon/grown))
var/obj/item/weapon/grown/F = O
- if(F.seed)
- while(t_amount < t_max)
- var/obj/item/seeds/t_prod = new F.seed(O.loc, O)
- t_prod.lifespan = F.lifespan
- t_prod.endurance = F.endurance
- t_prod.maturation = F.maturation
- t_prod.production = F.production
- t_prod.yield = F.yield
- t_prod.potency = F.potency
- t_amount++
- qdel(O)
- return 1
- else return 0
+ while(t_amount < t_max)
+ var/obj/item/seeds/t_prod = F.seed.Copy()
+ t_prod.loc = O.loc
+ t_amount++
+ qdel(O)
+ return 1
/*else if(istype(O, /obj/item/stack/tile/grass))
var/obj/item/stack/tile/grass/S = O
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 7c244cbc38528..9e12ba81932d1 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -3,1531 +3,255 @@
// ********************************************************
/obj/item/seeds
- name = "pack of seeds"
+ name = "A pack of seeds."
icon = 'icons/obj/hydroponics/seeds.dmi'
- icon_state = "seed" //Unknown plant seed - these shouldn't exist in-game.
- w_class = 1 //Pocketable.
- var/plantname = "Plants" //Name of plant when planted.
- var/product //A type path. The thing that is created when the plant is harvested.
- var/species = "" //Used to update icons. Should match the name in the sprites.
- var/lifespan = 0 //How long before the plant begins to take damage from age.
- var/endurance = 0 //Amount of health the plant has.
- var/maturation = 0 //Used to determine which sprite to switch to when growing.
- var/production = 0 //Changes the amount of time needed for a plant to become harvestable.
- var/yield = 0 //Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested.
- var/oneharvest = 0 //If a plant is cleared from the tray after harvesting, e.g. a carrot.
- var/potency = -1 //The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways.
- var/growthstages = 0 //Amount of growth sprites the plant has.
- var/plant_type = 0 //0 = 'normal plant'; 1 = weed; 2 = shroom
- var/rarity = 0 //How rare the plant is. Used for giving points to cargo when shipping off to Centcom.
- var/list/mutatelist = list() //The type of plants that this plant can mutate into.
-
-/obj/item/seeds/New(loc, parent)
+ icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game.
+ w_class = 1 // Pocketable.
+ var/plantname = "Plants" // Name of plant when planted.
+ var/product // A type path. The thing that is created when the plant is harvested.
+ var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overriden.
+
+ var/icon_grow // Used to override grow icon (default is "[species]-grow"). You can use one grow icon for multiple closely related plants with it.
+ var/icon_dead // Used to override dead icon (default is "[species]-dead"). You can use one dead icon for multiple closely related plants with it.
+ var/icon_harvest // Used to override harvest icon (default is "[species]-harvest"). If null, plant will use [icon_grow][growthstages].
+
+ var/lifespan = 25 // How long before the plant begins to take damage from age.
+ var/endurance = 15 // Amount of health the plant has.
+ var/maturation = 6 // Used to determine which sprite to switch to when growing.
+ var/production = 6 // Changes the amount of time needed for a plant to become harvestable.
+ var/yield = 3 // Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested.
+ var/oneharvest = 0 // If a plant is cleared from the tray after harvesting, e.g. a carrot.
+ var/potency = 10 // The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways.
+ var/growthstages = 6 // Amount of growth sprites the plant has.
+ var/plant_type = PLANT_NORMAL // 0 = PLANT_NORMAL; 1 = PLANT_WEED; 2 = PLANT_MUSHROOM; 3 = PLANT_ALIEN
+ var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to Centcom.
+ var/list/mutatelist = list() // The type of plants that this plant can mutate into.
+ var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info.
+ var/list/reagents_add = list()
+ // A list of reagents to add to product.
+ // Format: "reagent_id" = potency multiplier
+ // Stronger reagents must always come first to avoid being displaced by weaker ones.
+ // Total amount of any reagent in plant is calculated by formula: 1 + round(potency * multiplier)
+
+
+/obj/item/seeds/New(loc, nogenes = 0)
..()
pixel_x = rand(-8, 8)
pixel_y = rand(-8, 8)
-/obj/item/seeds/proc/get_analyzer_text() //in case seeds have something special to tell to the analyzer
- return
+ if(!icon_grow)
+ icon_grow = "[species]-grow"
-/obj/item/seeds/proc/on_chem_reaction(var/datum/reagents/S) //in case seeds have some special interaction with special chems
- return
+ if(!icon_dead)
+ icon_dead = "[species]-dead"
-/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
- if (istype(O, /obj/item/device/analyzer/plant_analyzer))
- user << "*** [plantname] ***"
- user << "-Plant Endurance: [endurance]"
- user << "-Plant Lifespan: [lifespan]"
- user << "-Species Discovery Value: [rarity]"
+ if(!icon_harvest && plant_type != PLANT_MUSHROOM && yield != -1)
+ icon_harvest = "[species]-harvest"
+
+ if(!nogenes) // not used on Copy()
+ genes += new /datum/plant_gene/core/lifespan(lifespan)
+ genes += new /datum/plant_gene/core/endurance(endurance)
if(yield != -1)
- user << "-Plant Yield: [yield]"
- user << "-Plant Production: [production]"
+ genes += new /datum/plant_gene/core/yield(yield)
+ genes += new /datum/plant_gene/core/production(production)
if(potency != -1)
- user << "-Plant Potency: [potency]"
- var/list/text_strings = get_analyzer_text()
- if(text_strings)
- for(var/string in text_strings)
- user << string
- return
- ..() // Fallthrough to item/attackby() so that bags can pick seeds up
-
-/obj/item/seeds/chiliseed
- name = "pack of chili seeds"
- desc = "These seeds grow into chili plants. HOT! HOT! HOT!"
- icon_state = "seed-chili"
- species = "chili"
- plantname = "Chili Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/chili
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 4
- potency = 20
- plant_type = 0
- growthstages = 6
- rarity = 0 // CentComm knows about this species already, it's in exotic seeds crates.
- mutatelist = list(/obj/item/seeds/icepepperseed, /obj/item/seeds/chilighost)
-
-/obj/item/seeds/replicapod
- name = "pack of replica pod seeds"
- desc = "These seeds grow into replica pods. They say these are used to harvest humans."
- icon_state = "seed-replicapod"
- species = "replicapod"
- plantname = "Replica Pod"
- product = /mob/living/carbon/human //verrry special -- Urist
- lifespan = 50
- endurance = 8
- maturation = 10
- production = 1
- yield = 1 //seeds if there isn't a dna inside
- oneharvest = 1
- potency = 30
- plant_type = 0
- growthstages = 6
- var/ckey = null
- var/realName = null
- var/datum/mind/mind = null
- var/blood_gender = null
- var/blood_type = null
- var/mutant_color = null
- var/factions = null
- var/contains_sample = 0
-
-/obj/item/seeds/replicapod/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
- if(istype(W,/obj/item/weapon/reagent_containers/syringe))
- if(!contains_sample)
- for(var/datum/reagent/blood/bloodSample in W.reagents.reagent_list)
- if(bloodSample.data["mind"] && bloodSample.data["cloneable"] == 1)
- mind = bloodSample.data["mind"]
- ckey = bloodSample.data["ckey"]
- realName = bloodSample.data["real_name"]
- blood_gender = bloodSample.data["gender"]
- blood_type = bloodSample.data["blood_type"]
- mutant_color = bloodSample.data["mutant_color"]
- factions = bloodSample.data["factions"]
- W.reagents.clear_reagents()
- user << "You inject the contents of the syringe into the seeds."
- contains_sample = 1
- else
- user << "The seeds reject the sample!"
+ genes += new /datum/plant_gene/core/potency(potency)
+
+ for(var/p in genes)
+ if(ispath(p))
+ genes -= p
+ genes += new p
+
+ for(var/reag_id in reagents_add)
+ genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id])
+
+/obj/item/seeds/proc/Copy()
+ var/obj/item/seeds/S = new type(null, 1)
+ // Copy all the stats
+ S.lifespan = lifespan
+ S.endurance = endurance
+ S.maturation = maturation
+ S.production = production
+ S.yield = yield
+ S.potency = potency
+ S.genes = list()
+ for(var/g in genes)
+ var/datum/plant_gene/G = g
+ S.genes += G.Copy()
+ S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
+ return S
+
+/obj/item/seeds/proc/get_gene(typepath)
+ return (locate(typepath) in genes)
+
+/obj/item/seeds/proc/reagents_from_genes()
+ reagents_add = list()
+ for(var/datum/plant_gene/reagent/R in genes)
+ reagents_add[R.reagent_id] = R.rate
+
+/obj/item/seeds/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25)
+ adjust_lifespan(rand(-lifemut,lifemut))
+ adjust_endurance(rand(-endmut,endmut))
+ adjust_production(rand(-productmut,productmut))
+ adjust_yield(rand(-yieldmut,yieldmut))
+ adjust_potency(rand(-potmut,potmut))
+
+
+/obj/item/seeds/bullet_act(obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
+ if(istype(Proj, /obj/item/projectile/energy/florayield))
+
+ var/rating = 1
+ if(istype(loc, /obj/machinery/hydroponics))
+ var/obj/machinery/hydroponics/H = loc
+ rating = H.rating
+
+ if(yield == 0)//Oh god don't divide by zero you'll doom us all.
+ adjust_yield(1 * rating)
+ else if(prob(1/(yield * yield) * 100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2...
+ adjust_yield(1 * rating)
+ else
+ return ..()
+
+
+// Harvest procs
+/obj/item/seeds/proc/getYield()
+ var/return_yield = yield
+
+ var/obj/machinery/hydroponics/parent = loc
+ if(istype(loc, /obj/machinery/hydroponics))
+ if(parent.yieldmod == 0)
+ return_yield = min(return_yield, 1)//1 if above zero, 0 otherwise
else
- user << "The seeds already contain a genetic sample."
- ..()
-
-
-/obj/item/seeds/grapeseed
- name = "pack of grape seeds"
- desc = "These seeds grow into grape vines."
- icon_state = "seed-grapes"
- species = "grape"
- plantname = "Grape Vine"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/grapes
- lifespan = 50
- endurance = 25
- maturation = 3
- production = 5
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 2
- mutatelist = list(/obj/item/seeds/greengrapeseed)
-
-/obj/item/seeds/greengrapeseed
- name = "pack of green grape seeds"
- desc = "These seeds grow into green-grape vines."
- icon_state = "seed-greengrapes"
- species = "greengrape"
- plantname = "Green-Grape Vine"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green
- lifespan = 50
- endurance = 25
- maturation = 3
- production = 5
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 2
- rarity = 0 // Technically it's a beneficial mutant, but it's not exactly "new"...
-
-/obj/item/seeds/cabbageseed
- name = "pack of cabbage seeds"
- desc = "These seeds grow into cabbages."
- icon_state = "seed-cabbage"
- species = "cabbage"
- plantname = "Cabbages"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage
- lifespan = 50
- endurance = 25
- maturation = 3
- production = 5
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 1
- mutatelist = list(/obj/item/seeds/replicapod)
-
-/obj/item/seeds/berryseed
- name = "pack of berry seeds"
- desc = "These seeds grow into berry bushes."
- icon_state = "seed-berry"
- species = "berry"
- plantname = "Berry Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/glowberryseed,/obj/item/seeds/poisonberryseed)
-
-/obj/item/seeds/glowberryseed
- name = "pack of glow-berry seeds"
- desc = "These seeds grow into glow-berry bushes."
- icon_state = "seed-glowberry"
- species = "glowberry"
- plantname = "Glow-Berry Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/glow
- lifespan = 30
- endurance = 25
- maturation = 5
- production = 5
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 20
-
-/obj/item/seeds/bananaseed
- name = "pack of banana seeds"
- desc = "They're seeds that grow into banana trees. When grown, keep away from clown."
- icon_state = "seed-banana"
- species = "banana"
- plantname = "Banana Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/banana
- lifespan = 50
- endurance = 30
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/mimanaseed)
-
-/obj/item/seeds/mimanaseed
- name = "pack of mimana seeds"
- desc = "They're seeds that grow into mimana trees. When grown, keep away from mime."
- icon_state = "seed-mimana"
- species = "mimana"
- plantname = "Mimana Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mimana
- lifespan = 50
- endurance = 30
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
-
-/obj/item/seeds/eggplantseed
- name = "pack of eggplant seeds"
- desc = "These seeds grow to produce berries that look nothing like eggs."
- icon_state = "seed-eggplant"
- species = "eggplant"
- plantname = "Eggplants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant
- lifespan = 25
- endurance = 15
- maturation = 6
- production = 6
- yield = 2
- potency = 20
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/eggyseed)
-
-/obj/item/seeds/eggyseed
- name = "pack of eggplant seeds"
- desc = "These seeds grow to produce berries that look a lot like eggs."
- icon_state = "seed-eggy"
- species = "eggy"
- plantname = "Eggplants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy
- lifespan = 75
- endurance = 15
- maturation = 6
- production = 12
- yield = 2
- plant_type = 0
- growthstages = 6
- rarity = 0 // CentComm ships these to us in the exotic seeds crate.
-
-/obj/item/seeds/bloodtomatoseed
- name = "pack of blood-tomato seeds"
- desc = "These seeds grow into blood-tomato plants."
- icon_state = "seed-bloodtomato"
- species = "bloodtomato"
- plantname = "Blood-Tomato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blood
- lifespan = 25
- endurance = 20
- maturation = 8
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 20
-
-/obj/item/seeds/tomatoseed
- name = "pack of tomato seeds"
- desc = "These seeds grow into tomato plants."
- icon_state = "seed-tomato"
- species = "tomato"
- plantname = "Tomato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/bluetomatoseed, /obj/item/seeds/bloodtomatoseed, /obj/item/seeds/killertomatoseed)
-
-/obj/item/seeds/killertomatoseed
- name = "pack of killer-tomato seeds"
- desc = "These seeds grow into killer-tomato plants."
- icon_state = "seed-killertomato"
- species = "killertomato"
- plantname = "Killer-Tomato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 2
- potency = 10
- plant_type = 0
- oneharvest = 1
- growthstages = 2
- rarity = 30
-
-/obj/item/seeds/bluetomatoseed
- name = "pack of blue-tomato seeds"
- desc = "These seeds grow into blue-tomato plants."
- icon_state = "seed-bluetomato"
- species = "bluetomato"
- plantname = "Blue-Tomato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/bluespacetomatoseed)
- rarity = 20
-
-/obj/item/seeds/bluespacetomatoseed
- name = "pack of blue-space tomato seeds"
- desc = "These seeds grow into blue-space tomato plants."
- icon_state = "seed-bluespacetomato"
- species = "bluespacetomato"
- plantname = "Blue-Space Tomato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 50
-
-/obj/item/seeds/cornseed
- name = "pack of corn seeds"
- desc = "I don't mean to sound corny..."
- icon_state = "seed-corn"
- species = "corn"
- plantname = "Corn Stalks"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/corn
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 3
- plant_type = 0
- oneharvest = 1
- potency = 20
- growthstages = 3
- mutatelist = list(/obj/item/seeds/snapcornseed)
-
-/obj/item/seeds/snapcornseed
- name = "pack of snapcorn seeds"
- desc = "Oh snap!"
- icon_state = "seed-snapcorn"
- species = "snapcorn"
- plantname = "Snapcorn Stalks"
- product = /obj/item/weapon/grown/snapcorn
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 6
- yield = 3
- plant_type = 0
- oneharvest = 1
- potency = 20
- growthstages = 3
-
-/obj/item/seeds/poppyseed
- name = "pack of poppy seeds"
- desc = "These seeds grow into poppies."
- icon_state = "seed-poppy"
- species = "poppy"
- plantname = "Poppy Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy
- lifespan = 25
- endurance = 10
- maturation = 8
- production = 6
- yield = 6
- potency = 20
- plant_type = 0
- oneharvest = 1
- growthstages = 3
- mutatelist = list(/obj/item/seeds/bluetomatoseed, /obj/item/seeds/bloodtomatoseed)
-
-/obj/item/seeds/geraniumseed
- name = "pack of geranium seeds"
- desc = "These seeds grow into geranium."
- icon_state = "seed-geranium"
- species = "geranium"
- plantname = "geranium Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/geranium
- lifespan = 25
- endurance = 10
- maturation = 8
- production = 6
- yield = 6
- potency = 20
- plant_type = 0
- oneharvest = 1
- growthstages = 3
-
-/obj/item/seeds/lilyseed
- name = "pack of lily seeds"
- desc = "These seeds grow into lilies."
- icon_state = "seed-lily"
- species = "lily"
- plantname = "Lily Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/poppy/lily
- lifespan = 25
- endurance = 10
- maturation = 8
- production = 6
- yield = 6
- potency = 20
- plant_type = 0
- oneharvest = 1
- growthstages = 3
-
-/obj/item/seeds/potatoseed
- name = "pack of potato seeds"
- desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
- icon_state = "seed-potato"
- species = "potato"
- plantname = "Potato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
- lifespan = 30
- endurance = 15
- maturation = 10
- production = 1
- yield = 4
- plant_type = 0
- oneharvest = 1
- potency = 10
- growthstages = 4
- mutatelist = list(/obj/item/seeds/sweetpotatoseed)
-
-/obj/item/seeds/sweetpotatoseed
- name = "pack of sweet potato seeds"
- desc = "These seeds grow into sweet potato plants"
- icon_state = "seed-sweetpotato"
- species = "sweetpotato"
- plantname = "Sweet Potato Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/sweetpotato
- lifespan = 30
- endurance = 15
- maturation = 10
- production = 1
- yield = 4
- plant_type = 0
- oneharvest = 1
- potency = 10
- growthstages = 4
-
-/obj/item/seeds/icepepperseed
- name = "pack of ice-pepper seeds"
- desc = "These seeds grow into ice-pepper plants."
- icon_state = "seed-icepepper"
- species = "chiliice"
- plantname = "Ice-Pepper Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/icepepper
- lifespan = 25
- endurance = 15
- maturation = 4
- production = 4
- yield = 4
- potency = 20
- plant_type = 0
- growthstages = 6
- rarity = 20
-
-/obj/item/seeds/soyaseed
- name = "pack of soybean seeds"
- desc = "These seeds grow into soybean plants."
- icon_state = "seed-soybean"
- species = "soybean"
- plantname = "Soybean Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
- lifespan = 25
- endurance = 15
- maturation = 4
- production = 4
- yield = 3
- potency = 15
- plant_type = 0
- growthstages = 4
- mutatelist = list(/obj/item/seeds/koiseed)
-
-/obj/item/seeds/koiseed
- name = "pack of koibean seeds"
- desc = "These seeds grow into koibean plants."
- icon_state = "seed-koibean"
- species = "soybean"
- plantname = "Koibean Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/koibeans
- lifespan = 25
- endurance = 15
- maturation = 4
- production = 4
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 4
- rarity = 20
-
-/obj/item/seeds/wheatseed
- name = "pack of wheat seeds"
- desc = "These may, or may not, grow into wheat."
- icon_state = "seed-wheat"
- species = "wheat"
- plantname = "Wheat Stalks"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/wheat
- lifespan = 25
- endurance = 15
- maturation = 6
- production = 1
- yield = 4
- potency = 15
- oneharvest = 1
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/oatseed, /obj/item/seeds/riceseed)
-
-/obj/item/seeds/oatseed
- name = "pack of oat seeds"
- desc = "These may, or may not, grow into oat."
- icon_state = "seed-oat"
- species = "oat"
- plantname = "oat Stalks"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/oat
- lifespan = 25
- endurance = 15
- maturation = 6
- production = 1
- yield = 4
- potency = 15
- oneharvest = 1
- plant_type = 0
- growthstages = 6
-
-/obj/item/seeds/riceseed
- name = "pack of rice seeds"
- desc = "These may, or may not, grow into rice."
- icon_state = "seed-rice"
- species = "rice"
- plantname = "rice Stalks"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/rice
- lifespan = 25
- endurance = 15
- maturation = 6
- production = 1
- yield = 4
- potency = 15
- oneharvest = 1
- plant_type = 0
- growthstages = 6
-
-/obj/item/seeds/carrotseed
- name = "pack of carrot seeds"
- desc = "These seeds grow into carrots."
- icon_state = "seed-carrot"
- species = "carrot"
- plantname = "Carrots"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/carrot
- lifespan = 25
- endurance = 15
- maturation = 10
- production = 1
- yield = 5
- potency = 10
- oneharvest = 1
- plant_type = 0
- growthstages = 3
- mutatelist = list(/obj/item/seeds/parsnipseed)
-
-/obj/item/seeds/parsnipseed
- name = "pack of parsnip seeds"
- desc = "These seeds grow into parsnips."
- icon_state = "seed-parsnip"
- species = "parsnip"
- plantname = "Parsnip"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
- lifespan = 25
- endurance = 15
- maturation = 10
- production = 1
- yield = 5
- potency = 10
- oneharvest = 1
- plant_type = 0
- growthstages = 3
-
-/obj/item/seeds/reishimycelium
- name = "pack of reishi mycelium"
- desc = "This mycelium grows into something medicinal and relaxing."
- icon_state = "mycelium-reishi"
- species = "reishi"
- plantname = "Reishi"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/reishi
- lifespan = 35
- endurance = 35
- maturation = 10
- production = 5
- yield = 4
- potency = 15
- oneharvest = 1
- growthstages = 4
- plant_type = 2
-
-/obj/item/seeds/amanitamycelium
- name = "pack of fly amanita mycelium"
- desc = "This mycelium grows into something horrible."
- icon_state = "mycelium-amanita"
- species = "amanita"
- plantname = "Fly Amanitas"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/amanita
- lifespan = 50
- endurance = 35
- maturation = 10
- production = 5
- yield = 4
- potency = 10
- oneharvest = 1
- growthstages = 3
- plant_type = 2
- mutatelist = list(/obj/item/seeds/angelmycelium)
-
-/obj/item/seeds/angelmycelium
- name = "pack of destroying angel mycelium"
- desc = "This mycelium grows into something devastating."
- icon_state = "mycelium-angel"
- species = "angel"
- plantname = "Destroying Angels"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/angel
- lifespan = 50
- endurance = 35
- maturation = 12
- production = 5
- yield = 2
- potency = 35
- oneharvest = 1
- growthstages = 3
- plant_type = 2
- rarity = 30
+ return_yield *= parent.yieldmod
+
+ return return_yield
+
+/obj/item/seeds/proc/harvest(mob/user = usr)
+ var/obj/machinery/hydroponics/parent = loc //for ease of access
+ var/t_amount = 0
+ var/list/result = list()
+ var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK
+ var/product_name
+ while(t_amount < getYield())
+ var/obj/item/weapon/reagent_containers/food/snacks/grown/t_prod = new product(output_loc, src)
+ result.Add(t_prod) // User gets a consumable
+ if(!t_prod)
+ return
+ t_amount++
+ product_name = t_prod.name
+ if(getYield() >= 1)
+ feedback_add_details("food_harvested","[product_name]|[getYield()]")
+ parent.update_tray()
+
+ return result
+
+/obj/item/seeds/proc/prepare_result(var/obj/item/weapon/reagent_containers/food/snacks/grown/T)
+ if(T.reagents)
+ for(var/reagent_id in reagents_add)
+ if(reagent_id == "blood") // Hack to make blood in plants always O-
+ T.reagents.add_reagent(reagent_id, 1 + round(potency * reagents_add[reagent_id], 1), list("blood_type"="O-"))
+ continue
+
+ T.reagents.add_reagent(reagent_id, 1 + round(potency * reagents_add[reagent_id]), 1)
+ return 1
+
+
+/// Setters procs ///
+/obj/item/seeds/proc/adjust_yield(adjustamt)
+ if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable
+ yield = Clamp(yield + adjustamt, 0, 10)
+
+ if(yield <= 0 && plant_type == PLANT_MUSHROOM)
+ yield = 1 // Mushrooms always have a minimum yield of 1.
+ var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/yield)
+ C.value = yield
+
+/obj/item/seeds/proc/adjust_lifespan(adjustamt)
+ lifespan = Clamp(lifespan + adjustamt, 10, 100)
+ var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan)
+ C.value = lifespan
+
+/obj/item/seeds/proc/adjust_endurance(adjustamt)
+ endurance = Clamp(endurance + adjustamt, 10, 100)
+ var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance)
+ C.value = endurance
+
+/obj/item/seeds/proc/adjust_production(adjustamt)
+ if(yield != -1)
+ production = Clamp(production + adjustamt, 2, 10)
+ var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production)
+ C.value = production
+
+/obj/item/seeds/proc/adjust_potency(adjustamt)
+ if(potency != -1)
+ potency = Clamp(potency + adjustamt, 0, 100)
+ var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency)
+ C.value = potency
-/obj/item/seeds/libertymycelium
- name = "pack of liberty-cap mycelium"
- desc = "This mycelium grows into liberty-cap mushrooms."
- icon_state = "mycelium-liberty"
- species = "liberty"
- plantname = "Liberty-Caps"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap
- lifespan = 25
- endurance = 15
- maturation = 7
- production = 1
- yield = 5
- potency = 15
- oneharvest = 1
- growthstages = 3
- plant_type = 2
-/obj/item/seeds/chantermycelium
- name = "pack of chanterelle mycelium"
- desc = "This mycelium grows into chanterelle mushrooms."
- icon_state = "mycelium-chanter"
- species = "chanter"
- plantname = "Chanterelle Mushrooms"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle
- lifespan = 35
- endurance = 20
- maturation = 7
- production = 1
- yield = 5
- potency = 15
- oneharvest = 1
- growthstages = 3
- plant_type = 2
-
-/obj/item/seeds/towermycelium
- name = "pack of tower-cap mycelium"
- desc = "This mycelium grows into tower-cap mushrooms."
- icon_state = "mycelium-tower"
- species = "towercap"
- plantname = "Tower Caps"
- product = /obj/item/weapon/grown/log
- lifespan = 80
- endurance = 50
- maturation = 15
- production = 1
- yield = 5
- potency = 50
- oneharvest = 1
- growthstages = 3
- plant_type = 2
- mutatelist = list(/obj/item/seeds/steelmycelium)
-
-/obj/item/seeds/steelmycelium
- name = "pack of steel-cap mycelium"
- desc = "This mycelium grows into steel logs."
- icon_state = "mycelium-steelcap"
- species = "steelcap"
- plantname = "Steel Caps"
- product = /obj/item/weapon/grown/log/steel
- lifespan = 80
- endurance = 50
- maturation = 15
- production = 1
- yield = 5
- potency = 50
- oneharvest = 1
- growthstages = 3
- plant_type = 2
-
-/obj/item/seeds/glowshroom
- name = "pack of glowshroom mycelium"
- desc = "This mycelium -glows- into mushrooms!"
- icon_state = "mycelium-glowshroom"
- species = "glowshroom"
- plantname = "Glowshrooms"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom
- lifespan = 120 //ten times that is the delay
- endurance = 30
- maturation = 15
- production = 1
- yield = 3 //-> spread
- potency = 30 //-> brightness
- oneharvest = 1
- growthstages = 4
- plant_type = 2
- rarity = 20
-
-/obj/item/seeds/plumpmycelium
- name = "pack of plump-helmet mycelium"
- desc = "This mycelium grows into helmets... maybe."
- icon_state = "mycelium-plump"
- species = "plump"
- plantname = "Plump-Helmet Mushrooms"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet
- lifespan = 25
- endurance = 15
- maturation = 8
- production = 1
- yield = 4
- potency = 15
- oneharvest = 1
- growthstages = 3
- plant_type = 2
- mutatelist = list(/obj/item/seeds/walkingmushroommycelium)
-
-/obj/item/seeds/walkingmushroommycelium
- name = "pack of walking mushroom mycelium"
- desc = "This mycelium will grow into huge stuff!"
- icon_state = "mycelium-walkingmushroom"
- species = "walkingmushroom"
- plantname = "Walking Mushrooms"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
- lifespan = 30
- endurance = 30
- maturation = 5
- production = 1
- yield = 1
- potency = 10
- oneharvest = 1
- growthstages = 3
- plant_type = 2
- rarity = 30
-
-/obj/item/seeds/nettleseed
- name = "pack of nettle seeds"
- desc = "These seeds grow into nettles."
- icon_state = "seed-nettle"
- species = "nettle"
- plantname = "Nettles"
- product = /obj/item/weapon/grown/nettle/basic
- lifespan = 30
- endurance = 40 // tuff like a toiger
- maturation = 6
- production = 6
- yield = 4
- potency = 10
- oneharvest = 0
- growthstages = 5
- plant_type = 1
- mutatelist = list(/obj/item/seeds/deathnettleseed)
-
-/obj/item/seeds/deathnettleseed
- name = "pack of death-nettle seeds"
- desc = "These seeds grow into death-nettles."
- icon_state = "seed-deathnettle"
- species = "deathnettle"
- plantname = "Death Nettles"
- product = /obj/item/weapon/grown/nettle/death
- lifespan = 30
- endurance = 25
- maturation = 8
- production = 6
- yield = 2
- potency = 10
- oneharvest = 0
- growthstages = 5
- plant_type = 1
- rarity = 10
-
-/obj/item/seeds/weeds
- name = "pack of weed seeds"
- desc = "Yo mang, want some weeds?"
- icon_state = "seed"
- species = "weeds"
- plantname = "Starthistle"
- lifespan = 100
- endurance = 50 // damm pesky weeds
- maturation = 5
- production = 1
- yield = -1
- potency = -1
- oneharvest = 1
- growthstages = 4
- plant_type = 1
-
-/obj/item/seeds/harebell
- name = "pack of harebell seeds"
- desc = "These seeds grow into pretty little flowers."
- icon_state = "seed-harebell"
- species = "harebell"
- plantname = "Harebells"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/harebell
- lifespan = 100
- endurance = 20
- maturation = 7
- production = 1
- yield = 2
- potency = 30
- oneharvest = 1
- growthstages = 4
- plant_type = 1
-
-/obj/item/seeds/sunflowerseed
- name = "pack of sunflower seeds"
- desc = "These seeds grow into sunflowers."
- icon_state = "seed-sunflower"
- species = "sunflower"
- plantname = "Sunflowers"
- product = /obj/item/weapon/grown/sunflower
- lifespan = 25
- endurance = 20
- maturation = 6
- production = 2
- yield = 2
- potency = 10
- oneharvest = 1
- growthstages = 3
- plant_type = 0
- mutatelist = list(/obj/item/seeds/moonflowerseed,/obj/item/seeds/novaflowerseed)
-
-/obj/item/seeds/moonflowerseed
- name = "pack of moonflower seeds"
- desc = "These seeds grow into moonflowers."
- icon_state = "seed-moonflower"
- species = "moonflower"
- plantname = "Moonflowers"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
- lifespan = 25
- endurance = 20
- maturation = 6
- production = 2
- yield = 2
- potency = 15
- oneharvest = 1
- growthstages = 3
- plant_type = 0
- rarity = 10
-
-/obj/item/seeds/novaflowerseed
- name = "pack of novaflower seeds"
- desc = "These seeds grow into novaflowers."
- icon_state = "seed-novaflower"
- species = "novaflower"
- plantname = "Novaflowers"
- product = /obj/item/weapon/grown/novaflower
- lifespan = 25
- endurance = 20
- maturation = 6
- production = 2
- yield = 2
- potency = 20
- oneharvest = 1
- growthstages = 3
- plant_type = 0
-
-/obj/item/seeds/appleseed
- name = "pack of apple seeds"
- desc = "These seeds grow into apple trees."
- icon_state = "seed-apple"
- species = "apple"
- plantname = "Apple Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple
- lifespan = 55
- endurance = 35
- maturation = 6
- production = 6
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/goldappleseed)
-
-/obj/item/seeds/poisonedappleseed
- name = "pack of apple seeds"
- desc = "These seeds grow into apple trees."
- icon_state = "seed-apple"
- species = "apple"
- plantname = "Apple Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple/poisoned
- lifespan = 55
- endurance = 35
- maturation = 6
- production = 6
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 50 // Source of cyanide, and impossible obtain normally.
-
-/obj/item/seeds/goldappleseed
- name = "pack of golden apple seeds"
- desc = "These seeds grow into golden apple trees. Good thing there are no firebirds in space."
- icon_state = "seed-goldapple"
- species = "goldapple"
- plantname = "Golden Apple Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/apple/gold
- lifespan = 55
- endurance = 35
- maturation = 10
- production = 10
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 40 // Alchemy!
-
-/obj/item/seeds/ambrosiavulgarisseed
- name = "pack of ambrosia vulgaris seeds"
- desc = "These seeds grow into common ambrosia, a plant grown by and from medicine."
- icon_state = "seed-ambrosiavulgaris"
- species = "ambrosiavulgaris"
- plantname = "Ambrosia Vulgaris"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris
- lifespan = 60
- endurance = 25
- maturation = 6
- production = 6
- yield = 6
- potency = 5
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/ambrosiadeusseed)
-
-/obj/item/seeds/ambrosiadeusseed
- name = "pack of ambrosia deus seeds"
- desc = "These seeds grow into ambrosia deus. Could it be the food of the gods..?"
- icon_state = "seed-ambrosiadeus"
- species = "ambrosiadeus"
- plantname = "Ambrosia Deus"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus
- lifespan = 60
- endurance = 25
- maturation = 6
- production = 6
- yield = 6
- potency = 5
- plant_type = 0
- growthstages = 6
- rarity = 40
-
-/obj/item/seeds/whitebeetseed
- name = "pack of white-beet seeds"
- desc = "These seeds grow into sugary beet producing plants."
- icon_state = "seed-whitebeet"
- species = "whitebeet"
- plantname = "White-Beet Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet
- lifespan = 60
- endurance = 50
- maturation = 6
- production = 6
- yield = 6
- oneharvest = 1
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/redbeetseed)
-
-/obj/item/seeds/redbeetseed
- name = "pack of redbeet seeds"
- desc = "These seeds grow into red beet producing plants."
- icon_state = "seed-redbeet"
- species = "redbeet"
- plantname = "Red-Beet Plants"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/redbeet
- lifespan = 60
- endurance = 50
- maturation = 6
- production = 6
- yield = 6
- oneharvest = 1
- potency = 10
- plant_type = 0
- growthstages = 6
-
-/obj/item/seeds/sugarcaneseed
- name = "pack of sugarcane seeds"
- desc = "These seeds grow into sugarcane."
- icon_state = "seed-sugarcane"
- species = "sugarcane"
- plantname = "Sugarcane"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane
- lifespan = 60
- endurance = 50
- maturation = 3
- production = 6
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 3
-
-/obj/item/seeds/watermelonseed
- name = "pack of watermelon seeds"
- desc = "These seeds grow into watermelon plants."
- icon_state = "seed-watermelon"
- species = "watermelon"
- plantname = "Watermelon Vines"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon
- lifespan = 50
- endurance = 40
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/holymelonseed)
-
-/obj/item/seeds/holymelonseed
- name = "pack of holymelon seeds"
- desc = "These seeds grow into holymelon plants."
- icon_state = "seed-holymelon"
- species = "holymelon"
- plantname = "Holy Melon Vines"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/holymelon
- lifespan = 50
- endurance = 40
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 6
-
-/obj/item/seeds/pumpkinseed
- name = "pack of pumpkin seeds"
- desc = "These seeds grow into pumpkin vines."
- icon_state = "seed-pumpkin"
- species = "pumpkin"
- plantname = "Pumpkin Vines"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin
- lifespan = 50
- endurance = 40
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 3
- mutatelist = list(/obj/item/seeds/blumpkinseed)
-
-/obj/item/seeds/blumpkinseed
- name = "pack of blumpkin seeds"
- desc = "These seeds grow into blumpkin vines."
- icon_state = "seed-blumpkin"
- species = "blumpkin"
- plantname = "Blumpkin Vines"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin
- lifespan = 50
- endurance = 40
- maturation = 6
- production = 6
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 3
-
-/obj/item/seeds/limeseed
- name = "pack of lime seeds"
- desc = "These are very sour seeds."
- icon_state = "seed-lime"
- species = "lime"
- plantname = "Lime Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime
- lifespan = 55
- endurance = 50
- maturation = 6
- production = 6
- yield = 4
- potency = 15
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/orangeseed)
-
-/obj/item/seeds/lemonseed
- name = "pack of lemon seeds"
- desc = "These are sour seeds."
- icon_state = "seed-lemon"
- species = "lemon"
- plantname = "Lemon Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon
- lifespan = 55
- endurance = 45
- maturation = 6
- production = 6
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/cashseed)
-
-/obj/item/seeds/cashseed
- name = "pack of money seeds"
- desc = "When life gives you lemons, mutate them into cash."
- icon_state = "seed-cash"
- species = "cashtree"
- plantname = "Money Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/shell/moneyfruit
- lifespan = 55
- endurance = 45
- maturation = 6
- production = 6
- yield = 4
- potency = 10
- plant_type = 0
- growthstages = 6
- rarity = 50 // Nanotrasen approves... but are these seeds even attainable? Drag the tray to the shuttle?
-
-/obj/item/seeds/orangeseed
- name = "pack of orange seed"
- desc = "Sour seeds."
- icon_state = "seed-orange"
- species = "orange"
- plantname = "Orange Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange
- lifespan = 60
- endurance = 50
- maturation = 6
- production = 6
- yield = 5
- potency = 20
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/limeseed)
-
-/obj/item/seeds/poisonberryseed
- name = "pack of poison-berry seeds"
- desc = "These seeds grow into poison-berry bushes."
- icon_state = "seed-poisonberry"
- species = "poisonberry"
- plantname = "Poison-Berry Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 6
- mutatelist = list(/obj/item/seeds/deathberryseed)
- rarity = 10 // Mildly poisonous berries are common in reality
-
-/obj/item/seeds/deathberryseed
- name = "pack of death-berry seeds"
- desc = "These seeds grow into death berries."
- icon_state = "seed-deathberry"
- species = "deathberry"
- plantname = "Death Berry Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/berries/death
- lifespan = 30
- endurance = 20
- maturation = 5
- production = 5
- yield = 3
- potency = 50
- plant_type = 0
- growthstages = 6
- rarity = 30
-
-/obj/item/seeds/grassseed
- name = "pack of grass seeds"
- desc = "These seeds grow into grass. Yummy!"
- icon_state = "seed-grass"
- species = "grass"
- plantname = "Grass"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/grass
- lifespan = 40
- endurance = 40
- maturation = 2
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 2
- mutatelist = list(/obj/item/seeds/carpetseed)
-
-/obj/item/seeds/carpetseed
- name = "pack of carpet seeds"
- desc = "These seeds grow into stylish carpet samples."
- icon_state = "seed-carpet"
- species = "carpet"
- plantname = "Carpet"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/carpet
- lifespan = 40
- endurance = 40
- maturation = 2
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 2
-
-/obj/item/seeds/cocoapodseed
- name = "pack of cocoa pod seeds"
- desc = "These seeds grow into cacao trees. They look fattening." //SIC: cocoa is the seeds. The trees are spelled cacao.
- icon_state = "seed-cocoapod"
- species = "cocoapod"
- plantname = "Cacao Tree" //Idem
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 5
- mutatelist = list(/obj/item/seeds/vanillapodseed)
-
-/obj/item/seeds/vanillapodseed
- name = "pack of vanilla pod seeds"
- desc = "These seeds grow into vanilla trees. They look fattening."
- icon_state = "seed-vanillapod"
- species = "vanillapod"
- plantname = "Vanilla Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/vanillapod
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 2
- potency = 10
- plant_type = 0
- growthstages = 5
-
-/obj/item/seeds/cherryseed
- name = "pack of cherry pits"
- desc = "Careful not to crack a tooth on one... That'd be the pits."
- icon_state = "seed-cherry"
- species = "cherry"
- plantname = "Cherry Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/cherries
- lifespan = 35
- endurance = 35
- maturation = 5
- production = 5
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 5
-
-/obj/item/seeds/bluecherryseed
- name = "pack of blue cherry pits"
- desc = "The blue kind of cherries"
- icon_state = "seed-bluecherry"
- species = "bluecherry"
- plantname = "Blue Cherry Tree"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries
- lifespan = 35
- endurance = 35
- maturation = 5
- production = 5
- yield = 3
- potency = 10
- plant_type = 0
- growthstages = 5
-
-/obj/item/seeds/kudzuseed
- name = "pack of kudzu seeds"
- desc = "These seeds grow into a weed that grows incredibly fast."
- icon_state = "seed-kudzu"
- species = "kudzu"
- plantname = "Kudzu"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod
- lifespan = 20
- endurance = 10
- maturation = 6
- production = 6
- yield = 4
- potency = 10
- growthstages = 4
- plant_type = 1
- rarity = 30
- var/list/mutations = list()
-
-/obj/item/seeds/kudzuseed/New(loc, obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/parent)
- ..()
- if(parent)
- mutations = parent.mutations
+/obj/item/seeds/proc/get_analyzer_text() //in case seeds have something special to tell to the analyzer
+ var/text = ""
+ switch(plant_type)
+ if(PLANT_NORMAL)
+ text += "- Plant type: Normal plant\n"
+ if(PLANT_WEED)
+ text += "- Plant type: Weed. Can grow in nutrient-poor soil.\n"
+ if(PLANT_MUSHROOM)
+ text += "- Plant type: Mushroom. Can grow in dry soil.\n"
+ else
+ text += "- Plant type: UNKNOWN \n"
+ if(potency != -1)
+ text += "- Potency: [potency]\n"
+ if(yield != -1)
+ text += "- Yield: [yield]\n"
+ text += "- Maturation speed: [maturation]\n"
+ if(yield != -1)
+ text += "- Production speed: [production]\n"
+ text += "- Endurance: [endurance]\n"
+ text += "- Lifespan: [lifespan]\n"
+ if(rarity)
+ text += "- Species Discovery Value: [rarity]\n"
+
+ text += "*---------*"
+
+ return text
+
+/obj/item/seeds/proc/on_chem_reaction(datum/reagents/S) //in case seeds have some special interaction with special chems
+ return
-/obj/item/seeds/kudzuseed/harvest()
- var/list/prod = ..()
- for(var/obj/item/weapon/reagent_containers/food/snacks/grown/kudzupod/K in prod)
- K.mutations = mutations
+/obj/item/seeds/attackby(obj/item/O, mob/user, params)
+ if (istype(O, /obj/item/device/analyzer/plant_analyzer))
+ user << "*---------*\n This is \a [src]."
+ var/text = get_analyzer_text()
+ if(text)
+ user << "[text]"
-/obj/item/seeds/kudzuseed/attack_self(mob/user as mob)
- if(istype(user.loc,/turf/space))
return
- var/turf/T = get_turf(src)
- user << "You plant the kudzu. You monster."
- message_admins("Kudzu planted by [key_name_admin(user)](?) (FLW) at ([T.x],[T.y],[T.z] - (JMP))",0,1)
- investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu")
- new /obj/effect/spacevine_controller(user.loc, mutations, potency, production)
- qdel(src)
-
-/obj/item/seeds/kudzuseed/get_analyzer_text()
- var/list/mut_text = list()
- var/text_string = ""
- for(var/datum/spacevine_mutation/SM in mutations)
- text_string += "[(text_string == "") ? "" : ", "][SM.name]"
- mut_text += "-Plant Mutations: [(text_string == "") ? "None" : text_string]"
- return mut_text
+ ..() // Fallthrough to item/attackby() so that bags can pick seeds up
-/obj/item/seeds/kudzuseed/on_chem_reaction(var/datum/reagents/S)
- var/list/temp_mut_list = list()
- if(S.has_reagent("sterilizine", 5))
- for(var/datum/spacevine_mutation/SM in mutations)
- if(SM.quality == NEGATIVE)
- temp_mut_list += SM
- if(prob(20))
- mutations.Remove(pick(temp_mut_list))
- temp_mut_list.Cut()
- if(S.has_reagent("fuel", 5))
- for(var/datum/spacevine_mutation/SM in mutations)
- if(SM.quality == POSITIVE)
- temp_mut_list += SM
- if(prob(20))
- mutations.Remove(pick(temp_mut_list))
- temp_mut_list.Cut()
- if(S.has_reagent("phenol", 5))
- for(var/datum/spacevine_mutation/SM in mutations)
- if(SM.quality == MINOR_NEGATIVE)
- temp_mut_list += SM
- if(prob(20))
- mutations.Remove(pick(temp_mut_list))
- if(S.has_reagent("blood", 15))
- production += rand(15, -5)
- if(S.has_reagent("amatoxin", 5))
- production += rand(5, -15)
- if(S.has_reagent("plasma", 5))
- potency += rand(5, -15)
- if(S.has_reagent("holywater", 10))
- potency += rand(15, -5)
-/obj/item/seeds/chilighost
- name = "pack of ghost chili seeds"
- desc = "These seeds grow into a chili said to be the hottest in the galaxy."
- icon_state = "seed-chilighost"
- species = "chilighost"
- plantname = "chilighost"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili
- lifespan = 20
- endurance = 10
- maturation = 10
- production = 10
- yield = 3
- potency = 20
- plant_type = 0
- growthstages = 6
- rarity = 20
-/obj/item/seeds/gatfruit
- name = "pack of gatfruit seeds"
- desc = "These seeds grow into .357 revolvers."
- icon_state = "seed-gatfruit"
- species = "gatfruit"
- plantname = "gatfruit"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/gatfruit
- lifespan = 20
- endurance = 20
- maturation = 40
- production = 10
- yield = 2
- potency = 60
- plant_type = 0
- growthstages = 2
- rarity = 50 // Seems admin-only.
-/obj/item/seeds/coffee_arabica_seed
- name = "pack of coffee arabica seeds"
- desc = "These seeds grow into coffee arabica bushes."
- icon_state = "seed-coffeea"
- species = "coffeea"
- plantname = "Coffee Arabica Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/coffee/arabica
- lifespan = 30
- endurance = 20
- maturation = 5
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 5
- mutatelist = list(/obj/item/seeds/coffee_robusta_seed)
-/obj/item/seeds/coffee_robusta_seed
- name = "pack of coffee robusta seeds"
- desc = "These seeds grow into coffee robusta bushes."
- icon_state = "seed-coffeer"
- species = "coffeer"
- plantname = "Coffee Robusta Bush"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 5
- rarity = 20
+// Checks plants for broken tray icons. Use Advanced Proc Call to activate.
+// Maybe some day it would be used as unit test.
+/proc/check_plants_growth_stages_icons()
+ var/list/states = icon_states('icons/obj/hydroponics/growing.dmi')
+ var/list/paths = typesof(/obj/item/seeds) - /obj/item/seeds
-/obj/item/seeds/tobacco_seed
- name = "pack of tobacco seeds"
- desc = "These seeds grow into tobacco plants."
- icon_state = "seed-tobacco"
- species = "tobacco"
- plantname = "Tobacco Plant"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- oneharvest = 1
- yield = 10
- potency = 10
- plant_type = 0
- growthstages = 3
- mutatelist = list(/obj/item/seeds/tobacco_space_seed)
+ for(var/seedpath in paths)
+ var/obj/item/seeds/seed = new seedpath
-/obj/item/seeds/tobacco_space_seed
- name = "pack of space tobacco seeds"
- desc = "These seeds grow into space tobacco plants."
- icon_state = "seed-stobacco"
- species = "stobacco"
- plantname = "Space Tobacco Plant"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tobacco/space
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- oneharvest = 1
- yield = 10
- potency = 10
- plant_type = 0
- growthstages = 3
- rarity = 20
+ for(var/i in 1 to seed.growthstages)
+ if("[seed.icon_grow][i]" in states)
+ continue
+ world << "[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!"
-/obj/item/seeds/tea_aspera_seed
- name = "pack of tea aspera seeds"
- desc = "These seeds grow into tea plants."
- icon_state = "seed-teaaspera"
- species = "teaaspera"
- plantname = "Tea Aspera Plant"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tea/aspera
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 5
- mutatelist = list(/obj/item/seeds/tea_astra_seed)
+ if(!(seed.icon_dead in states))
+ world << "[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!"
-/obj/item/seeds/tea_astra_seed
- name = "pack of tea astra seeds"
- desc = "These seeds grow into tea plants."
- icon_state = "seed-teaastra"
- species = "teaastra"
- plantname = "Tea Astra Plant"
- product = /obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra
- lifespan = 20
- endurance = 15
- maturation = 5
- production = 5
- yield = 5
- potency = 10
- plant_type = 0
- growthstages = 5
- rarity = 20
+ if(seed.icon_harvest) // mushrooms have no grown sprites, same for items with no product
+ if(!(seed.icon_harvest in states))
+ world << "[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!"
\ No newline at end of file
diff --git a/code/modules/mining/abandoned_crate.dm b/code/modules/mining/abandoned_crate.dm
index 7e58f4b3f6716..d008e7b875f65 100644
--- a/code/modules/mining/abandoned_crate.dm
+++ b/code/modules/mining/abandoned_crate.dm
@@ -48,7 +48,7 @@
for(var/i = 0, i < 3, i++)
new /obj/item/weapon/reagent_containers/glass/beaker/noreact(src)
if(31 to 35)
- new /obj/item/seeds/cashseed(src)
+ new /obj/item/seeds/cash(src)
if(36 to 40)
new /obj/item/weapon/melee/baton(src)
if(41 to 45)
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 0b6c02c517693..bc2a23d0a7ee5 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -1452,20 +1452,20 @@
return O.juice_reagents
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/weapon/grown/O)
- if (!istype(O))
- return 5
- else if (O.potency == -1)
- return 5
- else
- return round(O.potency)
+ if (!istype(O))
+ return 5
+ else if (O.seed.potency == -1)
+ return 5
+ else
+ return round(O.seed.potency)
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
- if (!istype(O))
- return 5
- else if (O.potency == -1)
- return 5
- else
- return round(5*sqrt(O.potency))
+ if (!istype(O))
+ return 5
+ else if (O.seed.potency == -1)
+ return 5
+ else
+ return round(5*sqrt(O.seed.potency))
/obj/machinery/reagentgrinder/proc/remove_object(obj/item/O)
holdingitems -= O
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index cd1dd5078667c..f1143ecb570b7 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -26,7 +26,7 @@
..()
if (!possible_transfer_amounts)
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
- if (vol > 0)
+ if (isnum(vol) && vol > 0)
volume = vol
create_reagents(volume)
if(spawned_disease)
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index ab8cc8dba8205..dff48a32bea2c 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -62,9 +62,7 @@ other types of metals and chemistry for reagents).
name = "Component Design Disk"
desc = "A disk for storing device design data for construction in lathes."
icon = 'icons/obj/cloning.dmi'
- icon_state = "datadisk2"
- item_state = "card-id"
- w_class = 1.0
+ icon_state = "datadisk1"
materials = list(MAT_METAL=30, MAT_GLASS=10)
var/datum/design/blueprint
diff --git a/config/admins.txt b/config/admins.txt
deleted file mode 100644
index cb1a3cd4cc9b2..0000000000000
--- a/config/admins.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################################
-# Basically, ckey goes first. Rank goes after the "=" #
-# Case is not important for ckey. #
-# Case IS important for the rank. #
-# All punctuation (spaces etc) EXCEPT '-', '_' and '@' will be stripped from rank names. #
-# Ranks can be anything defined in admin_ranks.txt #
-# NOTE: if the rank-name cannot be found in admin_ranks.txt, they will not be adminned! ~Carn #
-# NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. #
-###############################################################################################
-BigSlice = Host
-Sliceocelot = Host
-Kubbrz6 = Midimin
-M00nm4nhere = Midimin
-Roleplay Rascal = Admin
-SpaghettiScience = Midimin
-Memeoo = Trial Admin
diff --git a/icons/effects/tomatodecal.dmi b/icons/effects/tomatodecal.dmi
index a67e1a5e934ed..8296ad0b49591 100644
Binary files a/icons/effects/tomatodecal.dmi and b/icons/effects/tomatodecal.dmi differ
diff --git a/icons/obj/hydroponics/equipment.dmi b/icons/obj/hydroponics/equipment.dmi
index 255481f2d5b52..9b35f0851ad36 100644
Binary files a/icons/obj/hydroponics/equipment.dmi and b/icons/obj/hydroponics/equipment.dmi differ
diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi
index e08924152f012..482f07dba4fd6 100644
Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ
diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi
index bb70e0b5946ef..c82f15e3012f2 100644
Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index dda7237838a6f..6082730afeaf2 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1095,12 +1095,41 @@
#include "code\modules\html_interface\cards\cards.dm"
#include "code\modules\html_interface\nanotrasen\nanotrasen.dm"
#include "code\modules\hydroponics\biogenerator.dm"
+#include "code\modules\hydroponics\gene_modder.dm"
#include "code\modules\hydroponics\grown.dm"
#include "code\modules\hydroponics\growninedible.dm"
#include "code\modules\hydroponics\hydroitemdefines.dm"
#include "code\modules\hydroponics\hydroponics.dm"
+#include "code\modules\hydroponics\plant_genes.dm"
+#include "code\modules\hydroponics\sample.dm"
#include "code\modules\hydroponics\seed_extractor.dm"
#include "code\modules\hydroponics\seeds.dm"
+#include "code\modules\hydroponics\grown\ambrosia.dm"
+#include "code\modules\hydroponics\grown\apple.dm"
+#include "code\modules\hydroponics\grown\banana.dm"
+#include "code\modules\hydroponics\grown\beans.dm"
+#include "code\modules\hydroponics\grown\berries.dm"
+#include "code\modules\hydroponics\grown\cereals.dm"
+#include "code\modules\hydroponics\grown\chili.dm"
+#include "code\modules\hydroponics\grown\citrus.dm"
+#include "code\modules\hydroponics\grown\cocoa_vanilla.dm"
+#include "code\modules\hydroponics\grown\corn.dm"
+#include "code\modules\hydroponics\grown\eggplant.dm"
+#include "code\modules\hydroponics\grown\flowers.dm"
+#include "code\modules\hydroponics\grown\grass_carpet.dm"
+#include "code\modules\hydroponics\grown\kudzu.dm"
+#include "code\modules\hydroponics\grown\melon.dm"
+#include "code\modules\hydroponics\grown\misc.dm"
+#include "code\modules\hydroponics\grown\mushrooms.dm"
+#include "code\modules\hydroponics\grown\nettle.dm"
+#include "code\modules\hydroponics\grown\potato.dm"
+#include "code\modules\hydroponics\grown\pumpkin.dm"
+#include "code\modules\hydroponics\grown\replicapod.dm"
+#include "code\modules\hydroponics\grown\root.dm"
+#include "code\modules\hydroponics\grown\tea_coffee.dm"
+#include "code\modules\hydroponics\grown\tobacco.dm"
+#include "code\modules\hydroponics\grown\tomato.dm"
+#include "code\modules\hydroponics\grown\towercap.dm"
#include "code\modules\library\lib_items.dm"
#include "code\modules\library\lib_machines.dm"
#include "code\modules\library\lib_readme.dm"