diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 98246f0d64..2d6e70033e 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -155,13 +155,8 @@
if(seed.get_trait(TRAIT_SPREAD) == 0)
return
- // TODO: Generalize.
- var/obj/effect/glowshroom/planted = new /obj/effect/glowshroom(user.loc)
- planted.delay = 50
- planted.endurance = 100
- planted.potency = potency
-
user << "You plant the [src.name]."
+ new /obj/machinery/portable_atmospherics/hydroponics/soil/invisible(get_turf(user),src.seed)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/pickup(mob/user)
diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm
index 4ad70f9b2d..8d188c0c7d 100644
--- a/code/modules/hydroponics/hydro_tray.dm
+++ b/code/modules/hydroponics/hydro_tray.dm
@@ -7,7 +7,7 @@
flags = OPENCONTAINER
volume = 100
- var/draw_warnings = 1 //Set to 0 to stop it from drawing the alert lights.
+ var/mechanical = 1 //Set to 0 to stop it from drawing the alert lights.
// Plant maintenance vars.
var/waterlevel = 100 // Water (max 100)
@@ -200,7 +200,7 @@
// If there is no seed data (and hence nothing planted),
// or the plant is dead, process nothing further.
if(!seed || dead)
- if(draw_warnings) update_icon() //Harvesting would fail to set alert icons properly.
+ if(mechanical) update_icon() //Harvesting would fail to set alert icons properly.
return
// Advance plant age.
@@ -291,7 +291,7 @@
// If enough time (in cycles, not ticks) has passed since the plant was harvested, we're ready to harvest again.
else if(seed.products && seed.products.len && \
(age > seed.get_trait(TRAIT_PRODUCTION)) && \
- (*age - lastproduce) > seed.get_trait(TRAIT_PRODUCTION)) && \
+ ((age - lastproduce) > seed.get_trait(TRAIT_PRODUCTION)) && \
(!harvest && !dead))
harvest = 1
@@ -400,7 +400,7 @@
yield_mod = 0
mutation_mod = 0
- user << "You remove the dead plant from the [src]."
+ user << "You remove the dead plant."
check_level_sanity()
update_icon()
return
@@ -413,7 +413,7 @@
// Updates the plant overlay.
if(!isnull(seed))
- if(draw_warnings && health <= (seed.get_trait(TRAIT_ENDURANCE) / 2))
+ if(mechanical && health <= (seed.get_trait(TRAIT_ENDURANCE) / 2))
overlays += "over_lowhealth3"
if(dead)
@@ -457,7 +457,7 @@
overlays += "hydrocover"
//Updated the various alert icons.
- if(draw_warnings)
+ if(mechanical)
if(waterlevel <= 10)
overlays += "over_lowwater3"
if(nutrilevel <= 2)
@@ -678,7 +678,7 @@
check_level_sanity()
update_icon()
- else if(istype(O, /obj/item/weapon/wrench))
+ else if(mechanical && istype(O, /obj/item/weapon/wrench))
//If there's a connector here, the portable_atmospherics setup can handle it.
if(locate(/obj/machinery/atmospherics/portables_connector/) in loc)
@@ -740,11 +740,11 @@
usr << "Nutrient: [round(nutrilevel,0.1)]/10"
if(weedlevel >= 5)
- usr << "[src] is filled with weeds!"
+ usr << "[src] is infested with weeds!"
if(pestlevel >= 5)
- usr << "[src] is filled with tiny worms!"
+ usr << "[src] is infested with tiny worms!"
- if(!istype(src,/obj/machinery/portable_atmospherics/hydroponics/soil))
+ if(mechanical)
var/turf/T = loc
var/datum/gas_mixture/environment
@@ -786,7 +786,7 @@
icon_state = "soil"
density = 0
use_power = 0
- draw_warnings = 0
+ mechanical = 0
/obj/machinery/portable_atmospherics/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/shovel))
@@ -800,3 +800,42 @@
/obj/machinery/portable_atmospherics/hydroponics/soil/New()
..()
verbs -= /obj/machinery/portable_atmospherics/hydroponics/verb/close_lid
+
+/obj/machinery/portable_atmospherics/hydroponics/soil/CanPass()
+ return 1
+
+// This is a hack pending a proper rewrite of the plant controller.
+// Icons for plants are generated as overlays, so setting it to invisible wouldn't work.
+// Hence using a blank icon.
+/obj/machinery/portable_atmospherics/hydroponics/soil/invisible
+ name = "plant"
+ icon = 'icons/obj/seeds.dmi'
+ icon_state = "blank"
+
+/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/New(var/newloc,var/datum/seed/newseed)
+ ..()
+ seed = newseed
+ dead = 0
+ age = 1
+ health = seed.get_trait(TRAIT_ENDURANCE)
+ lastcycle = world.time
+ pixel_y = 0-rand(8,12)
+ check_level_sanity()
+ update_icon()
+
+/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/remove_dead()
+ ..()
+ del(src)
+
+/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/harvest()
+ ..()
+ if(!seed)
+ del(src)
+
+/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/process()
+ if(!seed)
+ del(src)
+ return
+ else if(name=="plant")
+ name = seed.display_name
+ ..()
\ No newline at end of file