diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index c83be1a3a7a..4769153e1fd 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -182,3 +182,11 @@
user.put_in_hands(T)
to_chat(user, "You open [src]\'s shell, revealing \a [T].")
qdel(src)
+
+// Diona Nymphs can eat these as well as weeds to gain nutrition.
+/obj/item/reagent_containers/food/snacks/grown/attack_animal(mob/living/simple_animal/M)
+ if(isnymph(M))
+ var/mob/living/simple_animal/diona/D = M
+ D.consume(src)
+ else
+ return ..()
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm
index e8c108a11de..7d6f90b7d0d 100644
--- a/code/modules/mob/living/simple_animal/friendly/diona.dm
+++ b/code/modules/mob/living/simple_animal/friendly/diona.dm
@@ -202,6 +202,20 @@
qdel(src)
return TRUE
+// Consumes plant matter other than weeds to evolve
+/mob/living/simple_animal/diona/proc/consume(obj/item/reagent_containers/food/snacks/grown/G)
+ if(nutrition >= nutrition_need) // Prevents griefing by overeating plant items without evolving.
+ to_chat(src, "You're too full to consume this! Perhaps it's time to grow bigger...")
+ else
+ if(do_after_once(src, 20, target = G))
+ visible_message("[src] ravenously consumes [G].", "You ravenously devour [G].")
+ playsound(loc, 'sound/items/eatfood.ogg', 30, 0, frequency = 1.5)
+ if(G.reagents.get_reagent_amount("nutriment") + G.reagents.get_reagent_amount("plantmatter") < 1)
+ adjust_nutrition(2)
+ else
+ adjust_nutrition((G.reagents.get_reagent_amount("nutriment") + G.reagents.get_reagent_amount("plantmatter")) * 2)
+ qdel(G)
+
/mob/living/simple_animal/diona/proc/steal_blood()
if(stat != CONSCIOUS)
return FALSE