diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 32e7dd187a0..82d2d027f62 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -1,4 +1,3 @@
-<<<<<<< HEAD
// ********************************************************
// Here's all the seeds (plants) that can be used in hydro
// ********************************************************
@@ -631,629 +630,3 @@
src.yield = round(clamp(max(src.yield, (src.yield +(2/3)*(snip.yield -src.yield) )),0,10 ))
return TRUE
-=======
-// ********************************************************
-// Here's all the seeds (plants) that can be used in hydro
-// ********************************************************
-
-/obj/item/seeds
- icon = 'icons/obj/hydroponics/seeds.dmi'
- icon_state = "seed" // Unknown plant seed - these shouldn't exist in-game.
- w_class = WEIGHT_CLASS_TINY
- resistance_flags = FLAMMABLE
- /// Name of plant when planted.
- var/plantname = "Plants"
- /// A type path. The thing that is created when the plant is harvested.
- var/obj/item/product
- ///Describes the product on the product path.
- var/productdesc
- /// Used to update icons. Should match the name in the sprites unless all icon_* are overridden.
- var/species = ""
- ///the file that stores the sprites of the growing plant from this seed.
- var/growing_icon = 'icons/obj/hydroponics/growing.dmi'
- /// Used to override grow icon (default is "[species]-grow"). You can use one grow icon for multiple closely related plants with it.
- var/icon_grow
- /// Used to override dead icon (default is "[species]-dead"). You can use one dead icon for multiple closely related plants with it.
- var/icon_dead
- /// Used to override harvest icon (default is "[species]-harvest"). If null, plant will use [icon_grow][growthstages].
- var/icon_harvest
- /// How long before the plant begins to take damage from age.
- var/lifespan = 25
- /// Amount of health the plant has.
- var/endurance = 15
- /// Used to determine which sprite to switch to when growing.
- var/maturation = 6
- /// Changes the amount of time needed for a plant to become harvestable.
- var/production = 6
- /// Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested.
- var/yield = 3
- /// The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways.
- var/potency = 10
- /// Amount of growth sprites the plant has.
- var/growthstages = 6
- // Chance that a plant will mutate in each stage of it's life.
- var/instability = 5
- /// How rare the plant is. Used for giving points to cargo when shipping off to CentCom.
- var/rarity = 0
- /// The type of plants that this plant can mutate into.
- var/list/mutatelist
- /// Plant genes are stored here, see plant_genes.dm for more info.
- var/list/genes = list()
- /// A list of reagents to add to product.
- var/list/reagents_add
- // Format: "reagent_id" = potency multiplier
- // Stronger reagents must always come first to avoid being displaced by weaker ones.
- // Total amount of any reagent in plant is calculated by formula: max(round(potency * multiplier), 1)
- ///If the chance below passes, then this many weeds sprout during growth
- var/weed_rate = 1
- ///Percentage chance per tray update to grow weeds
- var/weed_chance = 5
- ///Determines if the plant has had a graft removed or not.
- var/grafted = FALSE
- ///Type-path of trait to be applied when grafting a plant.
- var/graft_gene
-
-/obj/item/seeds/Initialize(mapload, nogenes = 0)
- . = ..()
- pixel_x = rand(-8, 8)
- pixel_y = rand(-8, 8)
-
- if(!icon_grow)
- icon_grow = "[species]-grow"
-
- if(!icon_dead)
- icon_dead = "[species]-dead"
-
- if(!icon_harvest && !get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism) && yield != -1)
- icon_harvest = "[species]-harvest"
-
- if(!nogenes) // not used on Copy()
- genes += new /datum/plant_gene/core/lifespan(lifespan)
- genes += new /datum/plant_gene/core/endurance(endurance)
- genes += new /datum/plant_gene/core/weed_rate(weed_rate)
- genes += new /datum/plant_gene/core/weed_chance(weed_chance)
- if(yield != -1)
- genes += new /datum/plant_gene/core/yield(yield)
- genes += new /datum/plant_gene/core/production(production)
- if(potency != -1)
- genes += new /datum/plant_gene/core/potency(potency)
- genes += new /datum/plant_gene/core/instability(instability)
-
- for(var/p in genes)
- if(ispath(p))
- genes -= p
- genes += new p
-
- for(var/reag_id in reagents_add)
- 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."
- if(reagents_add && user.can_see_reagents())
- . += "- Plant Reagents -"
- for(var/datum/plant_gene/reagent/G in genes)
- . += "- [G.get_name()] -"
-
-/obj/item/seeds/proc/Copy()
- var/obj/item/seeds/S = new type(null, 1)
- // Copy all the stats
- S.lifespan = lifespan
- S.endurance = endurance
- S.maturation = maturation
- S.production = production
- S.yield = yield
- S.potency = potency
- S.instability = instability
- 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
- S.genes += G.Copy()
- S.reagents_add = reagents_add.Copy() // Faster than grabbing the list from genes.
- return S
-
-/obj/item/seeds/proc/get_gene(typepath)
- return (locate(typepath) in genes)
-
-/obj/item/seeds/proc/reagents_from_genes()
- reagents_add = list()
- for(var/datum/plant_gene/reagent/R in genes)
- reagents_add[R.reagent_id] = R.rate
-
-///This proc adds a mutability_flag to a gene
-/obj/item/seeds/proc/set_mutability(typepath, mutability)
- var/datum/plant_gene/g = get_gene(typepath)
- if(g)
- g.mutability_flags |= mutability
-
-///This proc removes a mutability_flag from a gene
-/obj/item/seeds/proc/unset_mutability(typepath, mutability)
- var/datum/plant_gene/g = get_gene(typepath)
- if(g)
- g.mutability_flags &= ~mutability
-
-/obj/item/seeds/proc/mutate(lifemut = 2, endmut = 5, productmut = 1, yieldmut = 2, potmut = 25, wrmut = 2, wcmut = 5, traitmut = 0, stabmut = 3)
- adjust_lifespan(rand(-lifemut,lifemut))
- adjust_endurance(rand(-endmut,endmut))
- adjust_production(rand(-productmut,productmut))
- adjust_yield(rand(-yieldmut,yieldmut))
- adjust_potency(rand(-potmut,potmut))
- adjust_instability(rand(-stabmut,stabmut))
- adjust_weed_rate(rand(-wrmut, wrmut))
- adjust_weed_chance(rand(-wcmut, wcmut))
- if(prob(traitmut))
- if(prob(50))
- add_random_traits(1, 1)
- else
- add_random_reagents(1, 1)
-
-
-
-/obj/item/seeds/bullet_act(obj/projectile/Proj) //Works with the Somatoray to modify plant variables.
- if(istype(Proj, /obj/projectile/energy/florayield))
- var/rating = 1
- if(istype(loc, /obj/machinery/hydroponics))
- var/obj/machinery/hydroponics/H = loc
- rating = H.rating
-
- if(yield == 0)//Oh god don't divide by zero you'll doom us all.
- adjust_yield(1 * rating)
- else if(prob(1/(yield * yield) * 100))//This formula gives you diminishing returns based on yield. 100% with 1 yield, decreasing to 25%, 11%, 6, 4, 2...
- adjust_yield(1 * rating)
- else
- return ..()
-
-
-// Harvest procs
-/obj/item/seeds/proc/getYield()
- var/return_yield = yield
-
- var/obj/machinery/hydroponics/parent = loc
- if(istype(loc, /obj/machinery/hydroponics))
- if(parent.yieldmod == 0)
- return_yield = min(return_yield, 1)//1 if above zero, 0 otherwise
- else
- return_yield *= (parent.yieldmod)
-
- return return_yield
-
-
-/obj/item/seeds/proc/harvest(mob/user)
- ///Reference to the tray/soil the seeds are planted in.
- var/obj/machinery/hydroponics/parent = loc //for ease of access
- ///Count used for creating the correct amount of results to the harvest.
- var/t_amount = 0
- ///List of plants all harvested from the same batch.
- var/list/result = list()
- ///Tile of the harvester to deposit the growables.
- var/output_loc = parent.Adjacent(user) ? user.loc : parent.loc //needed for TK
- ///Name of the grown products.
- var/product_name
- ///The Number of products produced by the plant, typically the yield. Modified by Densified Chemicals.
- var/product_count = getYield()
- if(get_gene(/datum/plant_gene/trait/maxchem))
- product_count = clamp(round(product_count/2),0,5)
- while(t_amount < product_count)
- 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 = parent.myseed.plantname
- if(getYield() >= 1)
- SSblackbox.record_feedback("tally", "food_harvested", getYield(), product_name)
- parent.update_tray(user)
-
- return result
-
-/**
- * This is where plant chemical products are handled.
- *
- * Individually, the formula for individual amounts of chemicals is Potency * the chemical production %, rounded to the fullest 1.
- * Specific chem handling is also handled here, like bloodtype, food taste within nutriment, and the auto-distilling trait.
- */
-/obj/item/seeds/proc/prepare_result(var/obj/item/T)
- if(!T.reagents)
- CRASH("[T] has no reagents.")
- var/reagent_max = 0
- for(var/rid in reagents_add)
- reagent_max += reagents_add[rid]
- if(istype(T, /obj/item/reagent_containers/food/snacks/grown))
- var/obj/item/reagent_containers/food/snacks/grown/grown_edible = T
- for(var/rid in reagents_add)
- var/reagent_overflow_mod = reagents_add[rid]
- if(reagent_max > 1)
- reagent_overflow_mod = (reagents_add[rid]/ reagent_max)
- var/edible_vol = grown_edible.reagents ? grown_edible.reagents.maximum_volume : 0
- var/amount = max(1, round((edible_vol)*(potency/100) * reagent_overflow_mod, 1)) //the plant will always have at least 1u of each of the reagents in its reagent production traits
- var/list/data
- if(rid == /datum/reagent/blood) // Hack to make blood in plants always O-
- data = list("blood_type" = "O-")
- if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)
- data = grown_edible.tastes // apple tastes of apple.
- //Handles the distillary trait, swaps nutriment and vitamins for that species brewable if it exists.
- if(get_gene(/datum/plant_gene/trait/brewing) && grown_edible.distill_reagent)
- T.reagents.add_reagent(grown_edible.distill_reagent, amount/2)
- continue
- T.reagents.add_reagent(rid, amount, data)
-
-
-/// Setters procs ///
-
-/**
- * Adjusts seed yield up or down according to adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/adjust_yield(adjustamt)
- if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable
- yield = clamp(yield + adjustamt, 0, 10)
-
- if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
- yield = 1 // Mushrooms always have a minimum yield of 1.
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/yield)
- if(C)
- C.value = yield
-
-/**
- * Adjusts seed lifespan up or down according to adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/adjust_lifespan(adjustamt)
- lifespan = clamp(lifespan + adjustamt, 10, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan)
- if(C)
- C.value = lifespan
-
-/**
- * Adjusts seed endurance up or down according to adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/adjust_endurance(adjustamt)
- endurance = clamp(endurance + adjustamt, 10, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance)
- if(C)
- C.value = endurance
-
-/**
- * Adjusts seed production seed up or down according to adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/adjust_production(adjustamt)
- if(yield != -1)
- production = clamp(production + adjustamt, 1, 10)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production)
- if(C)
- C.value = production
-
-/**
- * Adjusts seed potency up or down according to adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/adjust_potency(adjustamt)
- if(potency != -1)
- potency = clamp(potency + adjustamt, 0, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency)
- if(C)
- C.value = potency
-
-/**
- * Adjusts seed instability up or down according to adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/adjust_instability(adjustamt)
- if(instability == -1)
- return
- instability = clamp(instability + adjustamt, 0, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/instability)
- if(C)
- C.value = instability
-
-/**
- * Adjusts seed weed grwoth speed up or down according to adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/adjust_weed_rate(adjustamt)
- weed_rate = clamp(weed_rate + adjustamt, 0, 10)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate)
- if(C)
- C.value = weed_rate
-
-/**
- * Adjusts seed weed chance up or down according to adjustamt. (Max 67%)
- */
-/obj/item/seeds/proc/adjust_weed_chance(adjustamt)
- weed_chance = clamp(weed_chance + adjustamt, 0, 67)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance)
- if(C)
- C.value = weed_chance
-
-//Directly setting stats
-
-/**
- * Sets the plant's yield stat to the value of adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/set_yield(adjustamt)
- if(yield != -1) // Unharvestable shouldn't suddenly turn harvestable
- yield = clamp(adjustamt, 0, 10)
-
- if(yield <= 0 && get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
- yield = 1 // Mushrooms always have a minimum yield of 1.
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/yield)
- if(C)
- C.value = yield
-
-/**
- * Sets the plant's lifespan stat to the value of adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/set_lifespan(adjustamt)
- lifespan = clamp(adjustamt, 10, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/lifespan)
- if(C)
- C.value = lifespan
-
-/**
- * Sets the plant's endurance stat to the value of adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/set_endurance(adjustamt)
- endurance = clamp(adjustamt, 10, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/endurance)
- if(C)
- C.value = endurance
-
-/**
- * Sets the plant's production stat to the value of adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/set_production(adjustamt)
- if(yield != -1)
- production = clamp(adjustamt, 1, 10)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/production)
- if(C)
- C.value = production
-
-/**
- * Sets the plant's potency stat to the value of adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/set_potency(adjustamt)
- if(potency != -1)
- potency = clamp(adjustamt, 0, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/potency)
- if(C)
- C.value = potency
-
-/**
- * Sets the plant's instability stat to the value of adjustamt. (Max 100)
- */
-/obj/item/seeds/proc/set_instability(adjustamt)
- if(instability == -1)
- return
- instability = clamp(adjustamt, 0, 100)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/instability)
- if(C)
- C.value = instability
-
-/**
- * Sets the plant's weed production rate to the value of adjustamt. (Max 10)
- */
-/obj/item/seeds/proc/set_weed_rate(adjustamt)
- weed_rate = clamp(adjustamt, 0, 10)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_rate)
- if(C)
- C.value = weed_rate
-
-/**
- * Sets the plant's weed growth percentage to the value of adjustamt. (Max 67%)
- */
-/obj/item/seeds/proc/set_weed_chance(adjustamt)
- weed_chance = clamp(adjustamt, 0, 67)
- var/datum/plant_gene/core/C = get_gene(/datum/plant_gene/core/weed_chance)
- if(C)
- C.value = weed_chance
-
-
-/obj/item/seeds/proc/get_analyzer_text() //in case seeds have something special to tell to the analyzer
- var/text = ""
- if(!get_gene(/datum/plant_gene/trait/plant_type/weed_hardy) && !get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism) && !get_gene(/datum/plant_gene/trait/plant_type/alien_properties))
- text += "- Plant type: Normal plant\n"
- if(get_gene(/datum/plant_gene/trait/plant_type/weed_hardy))
- text += "- Plant type: Weed. Can grow in nutrient-poor soil.\n"
- if(get_gene(/datum/plant_gene/trait/plant_type/fungal_metabolism))
- text += "- Plant type: Mushroom. Can grow in dry soil.\n"
- if(get_gene(/datum/plant_gene/trait/plant_type/alien_properties))
- text += "- Plant type: UNKNOWN \n"
- if(potency != -1)
- text += "- Potency: [potency]\n"
- if(yield != -1)
- text += "- Yield: [yield]\n"
- text += "- Maturation speed: [maturation]\n"
- if(yield != -1)
- text += "- Production speed: [production]\n"
- text += "- Endurance: [endurance]\n"
- text += "- Lifespan: [lifespan]\n"
- text += "- Instability: [instability]\n"
- text += "- Weed Growth Rate: [weed_rate]\n"
- text += "- Weed Vulnerability: [weed_chance]\n"
- if(rarity)
- text += "- Species Discovery Value: [rarity]\n"
- var/all_traits = ""
- for(var/datum/plant_gene/trait/traits in genes)
- if(istype(traits, /datum/plant_gene/trait/plant_type))
- continue
- all_traits += " [traits.get_name()]"
- text += "- Plant Traits:[all_traits]\n"
- text += "*---------*"
- return text
-
-/obj/item/seeds/proc/on_chem_reaction(datum/reagents/S) //in case seeds have some special interaction with special chems
- return
-
-/obj/item/seeds/attackby(obj/item/O, mob/user, params)
- if (istype(O, /obj/item/plant_analyzer))
- to_chat(user, "*---------*\n This is \a [src].")
- var/text
- var/obj/item/plant_analyzer/P_analyzer = O
- if(P_analyzer.scan_mode == PLANT_SCANMODE_STATS)
- text = get_analyzer_text()
- if(text)
- to_chat(user, "[text]")
- if(reagents_add && P_analyzer.scan_mode == PLANT_SCANMODE_CHEMICALS)
- to_chat(user, "- Plant Reagents -")
- to_chat(user, "*---------*")
- for(var/datum/plant_gene/reagent/G in genes)
- to_chat(user, "- [G.get_name()] -")
- to_chat(user, "*---------*")
-
-
- 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
-
-/obj/item/seeds/proc/randomize_stats()
- set_lifespan(rand(25, 60))
- set_endurance(rand(15, 35))
- set_production(rand(2, 10))
- set_yield(rand(1, 10))
- set_potency(rand(10, 35))
- set_weed_rate(rand(1, 10))
- set_weed_chance(rand(5, 100))
- maturation = rand(6, 12)
-
-/obj/item/seeds/proc/add_random_reagents(lower = 0, upper = 2)
- var/amount_random_reagents = rand(lower, upper)
- for(var/i in 1 to amount_random_reagents)
- var/random_amount = rand(4, 15) * 0.01 // this must be multiplied by 0.01, otherwise, it will not properly associate
- var/datum/plant_gene/reagent/R = new(get_random_reagent_id(), random_amount)
- if(R.can_add(src))
- genes += R
- else
- qdel(R)
- reagents_from_genes()
-
-/obj/item/seeds/proc/add_random_traits(lower = 0, upper = 2)
- var/amount_random_traits = rand(lower, upper)
- for(var/i in 1 to amount_random_traits)
- var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type)))
- var/datum/plant_gene/trait/T = new random_trait
- if(T.can_add(src))
- genes += T
- else
- qdel(T)
-
-/obj/item/seeds/proc/add_random_plant_type(normal_plant_chance = 75)
- if(prob(normal_plant_chance))
- var/random_plant_type = pick(subtypesof(/datum/plant_gene/trait/plant_type))
- var/datum/plant_gene/trait/plant_type/P = new random_plant_type
- if(P.can_add(src))
- genes += P
- else
- qdel(P)
-
-/obj/item/seeds/proc/remove_random_reagents(lower = 0, upper = 2)
- var/amount_random_reagents = rand(lower, upper)
- for(var/i in 1 to amount_random_reagents)
- var/datum/reagent/chemical = pick(reagents_add)
- qdel(chemical)
-
-/**
- * Creates a graft from this plant.
- *
- * Creates a new graft from this plant.
- * Sets the grafts trait to this plants graftable trait.
- * Gives the graft a reference to this plant.
- * Copies all the relevant stats from this plant to the graft.
- * Returns the created graft.
- */
-/obj/item/seeds/proc/create_graft()
- var/obj/item/graft/snip = new(loc, graft_gene)
- snip.parent_seed = src
- snip.parent_name = plantname
- snip.name += "([plantname])"
-
- // Copy over stats so the graft can outlive its parent.
- snip.lifespan = lifespan
- snip.endurance = endurance
- snip.production = production
- snip.weed_rate = weed_rate
- snip.weed_chance = weed_chance
- snip.yield = yield
-
- return snip
-
-/**
- * Applies a graft to this plant.
- *
- * Adds the graft trait to this plant if possible.
- * Increases plant stats by 2/3 of the grafts stats to a maximum of 100 (10 for yield).
- * Returns [TRUE]
- *
- * Arguments:
- * - [snip][/obj/item/graft]: The graft being used applied to this plant.
- */
-/obj/item/seeds/proc/apply_graft(obj/item/graft/snip)
- var/datum/plant_gene/trait/new_trait = snip.stored_trait
- if(new_trait?.can_add(src))
- genes += new_trait.Copy()
-
- // Adjust stats based on graft stats.
- src.lifespan = round(clamp(max(src.lifespan, (src.lifespan +(2/3)*(snip.lifespan -src.lifespan) )),0,100))
- src.endurance = round(clamp(max(src.endurance, (src.endurance +(2/3)*(snip.endurance -src.endurance) )),0,100))
- src.production = round(clamp(max(src.production, (src.production +(2/3)*(snip.production -src.production) )),0,100))
- src.weed_rate = round(clamp(max(src.weed_rate, (src.weed_rate +(2/3)*(snip.weed_rate -src.weed_rate) )),0,100))
- src.weed_chance = round(clamp(max(src.weed_chance, (src.weed_chance+(2/3)*(snip.weed_chance-src.weed_chance) )),0,100))
- src.yield = round(clamp(max(src.yield, (src.yield +(2/3)*(snip.yield -src.yield) )),0,10 ))
-
- return TRUE
->>>>>>> upstream/master