diff --git a/code/modules/hydroponics/_hydro_setup.dm b/code/modules/hydroponics/_hydro_setup.dm
index a3fd4604a6..4641aa3ace 100644
--- a/code/modules/hydroponics/_hydro_setup.dm
+++ b/code/modules/hydroponics/_hydro_setup.dm
@@ -55,4 +55,5 @@
#define TRAIT_PRODUCT_COLOUR 35
#define TRAIT_BIOLUM 36
#define TRAIT_BIOLUM_COLOUR 37
-#define TRAIT_IMMUTABLE 38
\ No newline at end of file
+#define TRAIT_IMMUTABLE 38
+#define TRAIT_FLESH_COLOUR 39
\ No newline at end of file
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 8b7678f19f..72f0e444ab 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -194,9 +194,11 @@
else if(seed.chems)
if(istype(W,/obj/item/weapon/material/hatchet) && !isnull(seed.chems["woodpulp"]))
user.show_message("You make planks out of \the [src]!", 1)
+ var/flesh_colour = seed.get_trait(TRAIT_FLESH_COLOUR)
+ if(!flesh_colour) flesh_colour = seed.get_trait(TRAIT_PRODUCT_COLOUR)
for(var/i=0,i<2,i++)
var/obj/item/stack/material/wood/NG = new (user.loc)
- NG.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
+ if(flesh_colour) NG.color = flesh_colour
for (var/obj/item/stack/material/wood/G in user.loc)
if(G==NG)
continue
@@ -221,6 +223,15 @@
new /obj/item/weapon/reagent_containers/food/snacks/soydope(get_turf(src))
qdel(src)
return
+ else //This may need to be made more specific, but at this point I am not sure what the criteria should be.
+ user << "You slice up \the [src]."
+ var/slices = rand(3,5)
+ var/reagents_to_transfer = round(reagents.total_volume/slices)
+ for(var/i=i;i<=slices;i++)
+ var/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/F = new(get_turf(src),seed)
+ if(reagents_to_transfer) reagents.trans_to_obj(F,reagents_to_transfer)
+ qdel(src)
+ return
..()
/obj/item/weapon/reagent_containers/food/snacks/grown/attack(var/mob/living/carbon/M, var/mob/user, var/def_zone)
@@ -301,9 +312,11 @@
if(seed.kitchen_tag == "grass")
user.show_message("You make a grass tile out of \the [src]!", 1)
+ var/flesh_colour = seed.get_trait(TRAIT_FLESH_COLOUR)
+ if(!flesh_colour) flesh_colour = seed.get_trait(TRAIT_PRODUCT_COLOUR)
for(var/i=0,i<2,i++)
var/obj/item/stack/tile/grass/G = new (user.loc)
- G.color = seed.get_trait(TRAIT_PRODUCT_COLOUR)
+ if(flesh_colour) G.color = flesh_colour
for (var/obj/item/stack/tile/grass/NG in user.loc)
if(G==NG)
continue
@@ -358,3 +371,35 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris
plantname = "ambrosia"
+
+/obj/item/weapon/reagent_containers/food/snacks/fruit_slice
+ name = "fruit slice"
+ desc = "A slice of some tasty fruit."
+ icon = 'icons/obj/hydroponics_misc.dmi'
+ icon_state = ""
+
+var/list/fruit_icon_cache = list()
+
+/obj/item/weapon/reagent_containers/food/snacks/fruit_slice/New(var/newloc, var/datum/seed/S)
+ ..(newloc)
+ // Need to go through and make a general image caching controller. Todo.
+ if(!istype(S))
+ qdel(src)
+ return
+
+ name = "[S.seed_name] slice"
+ desc = "A slice of \a [S.seed_name]. Tasty, probably."
+
+ var/rind_colour = S.get_trait(TRAIT_PRODUCT_COLOUR)
+ var/flesh_colour = S.get_trait(TRAIT_FLESH_COLOUR)
+ if(!flesh_colour) flesh_colour = rind_colour
+ if(!fruit_icon_cache["rind-[rind_colour]"])
+ var/image/I = image(icon,"fruit_rind")
+ I.color = rind_colour
+ fruit_icon_cache["rind-[rind_colour]"] = I
+ overlays |= fruit_icon_cache["rind-[rind_colour]"]
+ if(!fruit_icon_cache["slice-[rind_colour]"])
+ var/image/I = image(icon,"fruit_slice")
+ I.color = flesh_colour
+ fruit_icon_cache["slice-[rind_colour]"] = I
+ overlays |= fruit_icon_cache["slice-[rind_colour]"]
\ No newline at end of file
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 9fd666fbb6..2331c328dc 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -60,6 +60,7 @@
set_trait(TRAIT_IDEAL_HEAT, 293) // Preferred temperature in Kelvin.
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.25) // Plant eats this much per tick.
set_trait(TRAIT_PLANT_COLOUR, "#46B543") // Colour of the plant icon.
+ set_trait(TRAIT_FLESH_COLOUR, "#46B543")
spawn(5)
sleep(-1)
@@ -169,8 +170,9 @@
if(get_trait(TRAIT_BIOLUM_COLOUR))
clr = get_trait(TRAIT_BIOLUM_COLOUR)
splat.set_light(get_trait(TRAIT_BIOLUM), l_color = clr)
- if(get_trait(TRAIT_PRODUCT_COLOUR))
- splat.color = get_trait(TRAIT_PRODUCT_COLOUR)
+ var/flesh_colour = get_trait(TRAIT_FLESH_COLOUR)
+ if(!flesh_colour) flesh_colour = get_trait(TRAIT_PRODUCT_COLOUR)
+ if(flesh_colour) splat.color = get_trait(TRAIT_PRODUCT_COLOUR)
if(chems)
for(var/mob/living/M in T.contents)
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index cfbf024eda..d93de27286 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -244,6 +244,7 @@
set_trait(TRAIT_PRODUCT_ICON,"apple")
set_trait(TRAIT_PRODUCT_COLOUR,"#FF540A")
set_trait(TRAIT_PLANT_ICON,"tree2")
+ set_trait(TRAIT_FLESH_COLOUR,"#E8E39B")
/datum/seed/apple/poison
name = "poisonapple"
@@ -804,6 +805,7 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#326B30")
set_trait(TRAIT_PLANT_COLOUR,"#257522")
set_trait(TRAIT_PLANT_ICON,"vine2")
+ set_trait(TRAIT_FLESH_COLOUR,"#F22C2C")
/datum/seed/pumpkin
name = "pumpkin"
diff --git a/icons/obj/hydroponics_misc.dmi b/icons/obj/hydroponics_misc.dmi
new file mode 100644
index 0000000000..a5c594d93f
Binary files /dev/null and b/icons/obj/hydroponics_misc.dmi differ