diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index f45b6bc517..5e0259d4b5 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -380,7 +380,11 @@ pestlevel = 0 // Reset update_icon() visible_message("The [oldPlantName] is overtaken by some [myseed.plantname]!") - + name = "hydroponics tray ([myseed.plantname])" + if(myseed.product) + desc = initial(myseed.product.desc) + else + desc = initial(desc) /obj/machinery/hydroponics/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25, wrmut = 2, wcmut = 5, traitmut = 0) // Mutates the current seed if(!myseed) @@ -414,7 +418,11 @@ sleep(5) // Wait a while update_icon() visible_message("[oldPlantName] suddenly mutates into [myseed.plantname]!") - + name = "hydroponics tray ([myseed.plantname])" + if(myseed.product) + desc = initial(myseed.product.desc) + else + desc = initial(desc) /obj/machinery/hydroponics/proc/mutateweed() // If the weeds gets the mutagent instead. Mind you, this pretty much destroys the old plant if( weedlevel > 5 ) @@ -769,6 +777,15 @@ to_chat(user, "You plant [O].") dead = 0 myseed = O + name = "hydroponics tray ([myseed.plantname])" + if(!myseed.productdesc) //we haven't changed our produce's description + if(myseed.product) + myseed.productdesc = initial(myseed.product.desc) + else if(myseed.desc) + myseed.productdesc = myseed.desc + else + myseed.productdesc = "A fascinating specimen." + desc = myseed.productdesc age = 1 plant_health = myseed.endurance lastcycle = world.time @@ -834,6 +851,8 @@ harvest = FALSE //To make sure they can't just put in another seed and insta-harvest it qdel(myseed) myseed = null + name = initial(name) + desc = initial(desc) weedlevel = 0 //Has a side effect of cleaning up those nasty weeds update_icon() @@ -866,6 +885,8 @@ qdel(myseed) myseed = null update_icon() + name = initial(name) + desc = initial(desc) else if(user) examine(user) @@ -883,6 +904,8 @@ qdel(myseed) myseed = null dead = 0 + name = initial(name) + desc = initial(desc) update_icon() /// Tray Setters - The following procs adjust the tray or plants variables, and make sure that the stat doesn't go out of bounds./// diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 16863b0aa4..4132719389 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -8,7 +8,8 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. - var/product // A type path. The thing that is created when the plant is harvested. + var/obj/item/product // A type path. The thing that is created when the plant is harvested. + var/productdesc var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overridden. var/growing_icon = 'icons/obj/hydroponics/growing.dmi' //the file that stores the sprites of the growing plant from this seed. @@ -69,6 +70,10 @@ genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id]) reagents_from_genes() //quality coding +/obj/item/seeds/examine(mob/user) + . = ..() + . += "Use a pen on it to rename it or change its description." + /obj/item/seeds/proc/Copy() var/obj/item/seeds/S = new type(null, 1) // Copy all the stats @@ -80,6 +85,10 @@ S.potency = potency S.weed_rate = weed_rate S.weed_chance = weed_chance + S.name = name + S.plantname = plantname + S.desc = desc + S.productdesc = productdesc S.genes = list() for(var/g in genes) var/datum/plant_gene/G = g @@ -157,11 +166,18 @@ var/product_name while(t_amount < getYield()) var/obj/item/reagent_containers/food/snacks/grown/t_prod = new product(output_loc, src) + if(parent.myseed.plantname != initial(parent.myseed.plantname)) + t_prod.name = lowertext(parent.myseed.plantname) + if(productdesc) + t_prod.desc = productdesc + t_prod.seed.name = parent.myseed.name + t_prod.seed.desc = parent.myseed.desc + t_prod.seed.plantname = parent.myseed.plantname result.Add(t_prod) // User gets a consumable if(!t_prod) return t_amount++ - product_name = t_prod.name + product_name = parent.myseed.plantname if(getYield() >= 1) SSblackbox.record_feedback("tally", "food_harvested", getYield(), product_name) parent.update_tray(user) @@ -331,14 +347,56 @@ to_chat(user, "[text]") return + + if(istype(O, /obj/item/pen)) + var/choice = input("What would you like to change?") in list("Plant Name", "Seed Description", "Product Description", "Cancel") + if(!user.canUseTopic(src, BE_CLOSE)) + return + switch(choice) + if("Plant Name") + var/newplantname = reject_bad_text(stripped_input(user, "Write a new plant name:", name, plantname)) + if(!user.canUseTopic(src, BE_CLOSE)) + return + if (length(newplantname) > 20) + to_chat(user, "That name is too long!") + return + if(!newplantname) + to_chat(user, "That name is invalid.") + return + else + name = "[lowertext(newplantname)]" + plantname = newplantname + if("Seed Description") + var/newdesc = stripped_input(user, "Write a new description:", name, desc) + if(!user.canUseTopic(src, BE_CLOSE)) + return + if (length(newdesc) > 180) + to_chat(user, "That description is too long!") + return + if(!newdesc) + to_chat(user, "That description is invalid.") + return + else + desc = newdesc + if("Product Description") + if(product && !productdesc) + productdesc = initial(product.desc) + var/newproductdesc = stripped_input(user, "Write a new description:", name, productdesc) + if(!user.canUseTopic(src, BE_CLOSE)) + return + if (length(newproductdesc) > 180) + to_chat(user, "That description is too long!") + return + if(!newproductdesc) + to_chat(user, "That description is invalid.") + return + else + productdesc = newproductdesc + else + return + ..() // Fallthrough to item/attackby() so that bags can pick seeds up - - - - - - // Checks plants for broken tray icons. Use Advanced Proc Call to activate. // Maybe some day it would be used as unit test. /proc/check_plants_growth_stages_icons()