diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
index ba989b11b99..98351f0d8ce 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm
@@ -31,7 +31,7 @@
"E" = (/obj/structure/disposalpipe/segment{dir = 1;icon_state = "pipe-c"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
"F" = (/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors)
"H" = (/obj/machinery/chem_master/condimaster,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
-"G" = (/obj/machinery/plantgenes,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
+"G" = (/obj/machinery/plantgenes/seedvault,/turf/open/floor/plasteel/freezer{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered)
(1,1,1) = {"
aabbaaaaaaaaaaaaaaaa
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 3550a497b38..4ce58ecf91a 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -803,6 +803,6 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;biotech=3"
req_components = list(
/obj/item/weapon/stock_parts/manipulator = 1,
- /obj/item/weapon/stock_parts/micro_laser = 2,
+ /obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/stock_parts/scanning_module = 1,)
\ No newline at end of file
diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm
index d231455280c..1f062578259 100644
--- a/code/modules/hydroponics/gene_modder.dm
+++ b/code/modules/hydroponics/gene_modder.dm
@@ -15,7 +15,11 @@
var/datum/plant_gene/target
var/operation = ""
- var/rating = 0 // TODO: add failures, make it useful
+ var/rating = 0
+ var/max_extract_pot = 50
+ // The cap on potency gene extraction.
+ // This number is for T1, each upgraded part adds 5% for a tech level above T1.
+ // At T4, it reaches 95%.
/obj/machinery/plantgenes/New()
..()
@@ -24,7 +28,6 @@
component_parts += new /obj/item/weapon/stock_parts/console_screen(src)
component_parts += new /obj/item/weapon/stock_parts/scanning_module(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
- component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
RefreshParts()
@@ -32,6 +35,7 @@
rating = 0
for(var/obj/item/weapon/stock_parts/S in component_parts)
rating += S.rating-1
+ max_extract_pot = initial(max_extract_pot) + rating*5
/obj/machinery/plantgenes/update_icon()
..()
@@ -90,7 +94,7 @@
if(!user)
return
- var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600) // Set up the popup browser window
+ var/datum/browser/popup = new(user, "plantdna", "Plant DNA Manipulator", 450, 600)
if(!( in_range(src, user) || istype(user, /mob/living/silicon) ))
popup.close()
return
@@ -114,16 +118,18 @@
switch(operation)
if("remove")
dat += "[target.get_name()] gene from \the [seed]?
"
-// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
if("extract")
dat += "[target.get_name()] gene from \the [seed]?
"
dat += "The sample will be destroyed in process!"
+ if(istype(target, /datum/plant_gene/core/potency))
+ var/datum/plant_gene/core/gene = target
+ if(gene.value > max_extract_pot)
+ dat += "
This device's extraction capabilities are currently limited to [max_extract_pot] potency. "
+ dat += "Target gene will be degraded to [max_extract_pot] potency on extraction."
if("replace")
dat += "[target.get_name()] gene with [disk.gene.get_name()]?
"
-// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
if("insert")
dat += "[disk.gene.get_name()] gene into \the [seed]?
"
-// dat += "Failure may damage or destroy the sample!" // No failures yet. TODO: add failures
dat += "