// *********************************************************** // Foods that are produced from hydroponics ~~~~~~~~~~ // Data from the seeds carry over to these grown foods // *********************************************************** // Base type. Subtypes are found in /grown dir. /obj/item/reagent_containers/food/snacks/grown icon = 'icons/obj/hydroponics/harvest.dmi' var/obj/item/seeds/seed = null // type path, gets converted to item on New(). It's safe to assume it's always a seed item. var/plantname = "" var/bitesize_mod = 0 var/splat_type = /obj/effect/decal/cleanable/plant_smudge // If set, bitesize = 1 + round(reagents.total_volume / bitesize_mod) dried_type = -1 // Saves us from having to define each stupid grown's dried_type as itself. // If you don't want a plant to be driable (watermelons) set this to null in the time definition. resistance_flags = FLAMMABLE origin_tech = "biotech=1" /obj/item/reagent_containers/food/snacks/grown/Initialize(mapload, obj/item/seeds/new_seed) . = ..() tastes = list("[name]" = 1) // apples taste of apple, silly. if(new_seed) seed = new_seed.Copy() else if(ispath(seed)) // This is for adminspawn or map-placed growns. They get the default stats of their seed type. seed = new seed() seed.adjust_potency(50-seed.potency) pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) if(dried_type == -1) dried_type = src.type if(seed) for(var/datum/plant_gene/trait/T in seed.genes) T.on_new(src, loc) seed.prepare_result(src) transform *= TransformUsingVariable(seed.potency, 100, 0.5) //Makes the resulting produce's sprite larger or smaller based on potency! add_juice() /obj/item/reagent_containers/food/snacks/grown/proc/add_juice() if(reagents) if(bitesize_mod) bitesize = 1 + round(reagents.total_volume / bitesize_mod) return 1 return 0 /obj/item/reagent_containers/food/snacks/grown/examine(user) ..() if(seed) for(var/datum/plant_gene/trait/T in seed.genes) if(T.examine_line) to_chat(user, T.examine_line) /obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params) ..() if (istype(O, /obj/item/device/plant_analyzer)) var/msg = "*---------*\n This is \a [src].\n" if(seed) msg += seed.get_analyzer_text() var/reag_txt = "" if(seed) for(var/reagent_id in seed.reagents_add) var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id] var/amt = reagents.get_reagent_amount(reagent_id) reag_txt += "\n- [R.name]: [amt]" if(reag_txt) msg += reag_txt msg += "
*---------*" to_chat(user, msg) else if(seed) for(var/datum/plant_gene/trait/T in seed.genes) T.on_attackby(src, O, user) // Various gene procs /obj/item/reagent_containers/food/snacks/grown/attack_self(mob/user) if(seed && seed.get_gene(/datum/plant_gene/trait/squash)) squash(user) ..() /obj/item/reagent_containers/food/snacks/grown/throw_impact(atom/hit_atom) if(!..()) //was it caught by a mob? if(seed) for(var/datum/plant_gene/trait/T in seed.genes) T.on_throw_impact(src, hit_atom) if(seed.get_gene(/datum/plant_gene/trait/squash)) squash(hit_atom) /obj/item/reagent_containers/food/snacks/grown/proc/squash(atom/target) var/turf/T = get_turf(target) if(ispath(splat_type, /obj/effect/decal/cleanable/plant_smudge)) if(filling_color) var/obj/O = new splat_type(T) O.color = filling_color O.name = "[name] smudge" else if(splat_type) new splat_type(T) if(trash) generate_trash(T) visible_message("[src] has been squashed.","You hear a smack.") if(seed) for(var/datum/plant_gene/trait/trait in seed.genes) trait.on_squash(src, target) reagents.reaction(T) for(var/A in T) reagents.reaction(A) qdel(src) /obj/item/reagent_containers/food/snacks/grown/On_Consume() if(iscarbon(usr)) if(seed) for(var/datum/plant_gene/trait/T in seed.genes) T.on_consume(src, usr) ..() /obj/item/reagent_containers/food/snacks/grown/Crossed(atom/movable/AM) if(seed) for(var/datum/plant_gene/trait/T in seed.genes) T.on_cross(src, AM) ..() /obj/item/reagent_containers/food/snacks/grown/generate_trash(atom/location) if(trash && ispath(trash, /obj/item/grown)) . = new trash(location, seed) trash = null return return ..() // For item-containing growns such as eggy or gatfruit /obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user) var/obj/item/T if(trash) T = generate_trash() qdel(src) user.putItemFromInventoryInHandIfPossible(T, user.active_hand_index, TRUE) to_chat(user, "You open [src]\'s shell, revealing \a [T].")