diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 03f8004a312..69169a35758 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -434,10 +434,8 @@
harvest = FALSE
weedlevel = 0 // Reset
- sleep(5) // Wait a while
- update_appearance()
- visible_message("[oldPlantName] suddenly mutates into [myseed.plantname]!")
- TRAY_NAME_UPDATE
+ var/message = "[oldPlantName] suddenly mutates into [myseed.plantname]!"
+ addtimer(CALLBACK(src, .proc/after_mutation, message), 0.5 SECONDS)
/obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant
if( weedlevel > 5 )
@@ -454,13 +452,17 @@
harvest = FALSE
weedlevel = 0 // Reset
- sleep(5) // Wait a while
- update_appearance()
- visible_message("The mutated weeds in [src] spawn some [myseed.plantname]!")
- TRAY_NAME_UPDATE
+ var/message = "The mutated weeds in [src] spawn some [myseed.plantname]!"
+ addtimer(CALLBACK(src, .proc/after_mutation, message), 0.5 SECONDS)
else
to_chat(usr, "The few weeds in [src] seem to react, but only for a moment...")
-
+/**
+ * Called after plant mutation, update the appearance of the tray content and send a visible_message()
+ */
+/obj/machinery/hydroponics/proc/after_mutation(message)
+ update_appearance()
+ visible_message(message)
+ TRAY_NAME_UPDATE
/**
* Plant Death Proc.
* Cleans up various stats for the plant upon death, including pests, harvestability, and plant health.