From 3c7d4400eb816f3024b865c39bb1ca1889cc0cb2 Mon Sep 17 00:00:00 2001 From: Trilby Date: Tue, 17 Dec 2024 01:23:41 -0500 Subject: [PATCH 1/5] more regnant interactions + borg qol --- code/datums/craft/recipes/misc.dm | 20 ++++++++--------- code/modules/hydroponics/trays/tray.dm | 22 ++++++++++++++----- .../mob/living/silicon/robot/gripper.dm | 12 +++++++--- 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/code/datums/craft/recipes/misc.dm b/code/datums/craft/recipes/misc.dm index 0ef09e3a994..bf71a225310 100644 --- a/code/datums/craft/recipes/misc.dm +++ b/code/datums/craft/recipes/misc.dm @@ -126,29 +126,29 @@ ) /datum/craft_recipe/consumer/cement_bag - name = "Quick-Cement Bag" + name = "Bag: Quick-Cement" result = /obj/item/cement_bag steps = list( - list(/obj/item/stack/ore/glass, 2), - list(/obj/item/stack/rods, 2), - list(/obj/item/stack/ore, 3), + list(/obj/item/stack/ore/glass, 2, "time" = 2), + list(/obj/item/stack/rods, 1, "time" = 2), + list(/obj/item/stack/ore, 1, "time" = 2), list(QUALITY_HAMMERING, 1, 12), list(QUALITY_SHOVELING, 1, 15) ) /datum/craft_recipe/consumer/hydro_tray_plant_bag_water - name = "Woodchips Bag" + name = "Bag: Woodchips" result = /obj/item/hydro_tray_plant_bag_water steps = list( - list(CRAFT_MATERIAL, 10, MATERIAL_WOOD), - list(QUALITY_CUTTING, 10, 10) + list(CRAFT_MATERIAL, 10, MATERIAL_WOOD, "time" = 15), + list(QUALITY_CUTTING, 5, 5) ) /datum/craft_recipe/consumer/hydro_tray_plant_bag_nutrient - name = "Mealworms Bag" + name = "Bag: Mealworms" result = /obj/item/hydro_tray_plant_bag_nutrient steps = list( - list(/obj/item/stack/ore, 2), - list(/obj/item/reagent_containers/food/snacks/meat, 2), // 10u oil per meat + list(/obj/item/stack/ore, 2, "time" = 15), + list(/obj/item/reagent_containers/food/snacks/meat, 2, "time" = 2), list(QUALITY_CUTTING, 10, 10) ) \ No newline at end of file diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index f167246e118..05845fe4992 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -75,7 +75,8 @@ "adminordrazine" = 1, "eznutrient" = 1, "robustharvest" = 1, - "left4zed" = 1 + "left4zed" = 1, + "protein" = 5 ) var/global/list/weedkiller_reagents = list( "hydrazine" = -4, @@ -89,6 +90,10 @@ ) var/global/list/pestkiller_reagents = list( "sugar" = 2, + "protein" = 3, + "toxin" = -1, + "beer" = -0.5, + "ethanol" = -1, "diethylamine" = -2, "adminordrazine" = -5 ) @@ -103,9 +108,11 @@ "sodawater" = 1, ) - // Beneficial reagents also have values for modifying yield_mod and mut_mod (in that order). + // Beneficial reagents also have values for modifying: + // health | yield_mod | mut_mod - in this order var/global/list/beneficial_reagents = list( "beer" = list( -0.05, 0, 0 ), + "ethanol" = list( -0.25, 0, 0 ), "hydrazine" = list( -2, 0, 0 ), "phosphorus" = list( -0.75, 0, 0 ), "sodawater" = list( 0.1, 0, 0 ), @@ -117,6 +124,7 @@ "ammonia" = list( 0.5, 0, 0 ), "diethylamine" = list( 1, 0, 0 ), "nutriment" = list( 0.5, 0.1, 0 ), + "carbon" = list( 0.1, 0.01,0 ), "radium" = list( -1.5, 0, 0.2), "adminordrazine" = list( 1, 1, 1 ), "robustharvest" = list( 0, 0.2, 0 ), @@ -131,7 +139,8 @@ ) var/global/list/potency_reagents = list( - "diethylamine" = 1 + "diethylamine" = 1, + "carbon" = 0.01 ) /obj/machinery/portable_atmospherics/hydroponics/AltClick() @@ -271,11 +280,14 @@ if(seed.get_trait(TRAIT_HARVEST_REPEAT)) post_moder_yield_mod *= 0.5 +/* //Fast growing crops dont get hit by the first harvest being elder if(age >= 70) post_moder_yield_mod -= (age * 0.005) if(age >= 120 && user) //Losing yield slowly now to_chat(user, "This plant appears to be deteriorating with age, surpassing any reasonable life expectancy for a [seed.display_name]. It's yield is suffering as a result.") +*/ + post_moder_yield_mod = round(post_moder_yield_mod) yield_mod = post_moder_yield_mod // to_chat(user, "yield_mod [seed.display_name]. post_moder_yield_mod [post_moder_yield_mod].") @@ -326,7 +338,7 @@ //Remove the seed if something is already planted. if(seed) seed = null - seed = plant_controller.seeds[pick(list("reishi","nettles","amanita","chanterelle","plumphelmet","towercap","harebells","weeds"))] + seed = plant_controller.seeds[pick(list("reishi","nettles","amanita","chanterelle","plumphelmet","towercap","harebells","weeds","grass","wheat"))] if(!seed) return //Weed does not exist, someone fucked up. dead = 0 @@ -717,7 +729,7 @@ if(weedlevel >= 5) to_chat(usr, "\The [src] is infested with weeds!") if(pestlevel >= 5) - to_chat(usr, "\The [src] is infested with tiny worms!") + to_chat(usr, "\The [src] is infested with tiny harmful pests!") if(dead) to_chat(usr, SPAN_DANGER("The plant is dead.")) diff --git a/code/modules/mob/living/silicon/robot/gripper.dm b/code/modules/mob/living/silicon/robot/gripper.dm index 8c8fdb28b6e..5a7cd27e8f9 100644 --- a/code/modules/mob/living/silicon/robot/gripper.dm +++ b/code/modules/mob/living/silicon/robot/gripper.dm @@ -30,7 +30,9 @@ /obj/item/am_containment, /obj/item/am_shielding_container, /obj/item/stack/tile, //Repair floors yay - /obj/item/oddity/blackbox_nanoforge + /obj/item/oddity/blackbox_nanoforge, + /obj/item/cement_bag, + /obj/item/stack/ore //So they can craft cement bags ) var/obj/item/wrapped = null // Item currently being held. @@ -264,7 +266,9 @@ /obj/item/am_containment, /obj/item/am_shielding_container, /obj/item/device/integrated_electronics, - /obj/item/integrated_circuit + /obj/item/integrated_circuit, + /obj/item/hydro_tray_plant_bag_water, + /obj/item/hydro_tray_plant_bag_nutrient ) /obj/item/gripper/chemistry //A gripper designed for chemistry and medical, to allow borgs to work efficiently in the lab @@ -313,7 +317,9 @@ /obj/item/am_shielding_container, /obj/item/clothing/mask/smokable/cigarette, /obj/item/reagent_containers/cooking_with_jane/cooking_container, - /obj/item/spatula + /obj/item/spatula, + /obj/item/hydro_tray_plant_bag_water, + /obj/item/hydro_tray_plant_bag_nutrient ) /obj/item/gripper/ammo //Used to boxes, ammo and shells From 7276b2dfc8fc9b4abb076923017b0dcbabf8aa14 Mon Sep 17 00:00:00 2001 From: Trilby Date: Tue, 17 Dec 2024 01:25:57 -0500 Subject: [PATCH 2/5] service gripper --- code/modules/mob/living/silicon/robot/gripper.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/gripper.dm b/code/modules/mob/living/silicon/robot/gripper.dm index 5a7cd27e8f9..77331ff7410 100644 --- a/code/modules/mob/living/silicon/robot/gripper.dm +++ b/code/modules/mob/living/silicon/robot/gripper.dm @@ -301,7 +301,7 @@ /obj/item/gripper/service //Used to handle food, drinks, and seeds. name = "service gripper" icon_state = "gripper" - desc = "A simple grasping tool used to perform tasks in the service sector, such as handling food, drinks, and seeds." + desc = "A simple grasping tool used to perform tasks in the service sector, such as handling food, drinks, ores, and seeds." can_hold = list( /obj/item/reagent_containers/glass, @@ -319,7 +319,8 @@ /obj/item/reagent_containers/cooking_with_jane/cooking_container, /obj/item/spatula, /obj/item/hydro_tray_plant_bag_water, - /obj/item/hydro_tray_plant_bag_nutrient + /obj/item/hydro_tray_plant_bag_nutrient, + /obj/item/stack/ore //So they can craft some items ) /obj/item/gripper/ammo //Used to boxes, ammo and shells From 574991417e3c39f2b727cb12e86a7809e8815850 Mon Sep 17 00:00:00 2001 From: Trilby Date: Tue, 17 Dec 2024 16:33:07 -0500 Subject: [PATCH 3/5] companion system --- code/__DEFINES/_hydro_setup.dm | 3 +- .../objects/items/devices/scanners/plant.dm | 8 ++ code/modules/hydroponics/seed.dm | 47 +++++------ code/modules/hydroponics/seed_datums.dm | 77 ++++++++++++------- code/modules/hydroponics/seed_gene_presets.dm | 10 +++ .../modules/hydroponics/trays/tray_process.dm | 44 ++++++++++- code/modules/research/experiment.dm | 6 ++ .../trade_stations_presets/1-common/botany.dm | 4 +- 8 files changed, 148 insertions(+), 51 deletions(-) diff --git a/code/__DEFINES/_hydro_setup.dm b/code/__DEFINES/_hydro_setup.dm index 4eed9915bf6..ddb2c022977 100644 --- a/code/__DEFINES/_hydro_setup.dm +++ b/code/__DEFINES/_hydro_setup.dm @@ -60,9 +60,10 @@ #define TRAIT_FLESH_COLOUR "39" #define TRAIT_CHEM_SPRAYER "40" #define TRAIT_WALL_HUGGER "41" -#define TRAIT_INVASIVE "42"//Allows to invade already seeded tiles +#define TRAIT_INVASIVE "42" //Allows to invade already seeded tiles #define TRAIT_BOOSTED_GROWTH "43" // 1 by default, increase it to boost plant growth #define TRAIT_LARGE "44" #define TRAIT_CHEM_PRODUCTION "45" +#define TRAIT_COMPANION_PLANT "46" //tray_process.dm for how this one works #define WALL_HUG_OFFSET 12 //How many pixels a wallhugging plant is offset towards a wall \ No newline at end of file diff --git a/code/game/objects/items/devices/scanners/plant.dm b/code/game/objects/items/devices/scanners/plant.dm index 2b75ea5aaf2..a961ae5523d 100755 --- a/code/game/objects/items/devices/scanners/plant.dm +++ b/code/game/objects/items/devices/scanners/plant.dm @@ -188,6 +188,9 @@ if(2) dat += "
It is carnivorous and poses a significant threat to living things around it." + if(grown_seed.get_trait(TRAIT_COMPANION_PLANT)) + dat += "
It will yields, production, and growth of other plants close to itself." + if(grown_seed.get_trait(TRAIT_PARASITE)) dat += "
It is capable of parisitizing and gaining sustenance from tray weeds." @@ -233,6 +236,11 @@ dat += "
Expected reagent production: [chem_exspection]x (i.e mult)." + if(grown_seed.companions) + for(var/friends in companions) + dat += "
This plant has benefits when growing next to [friends]." + + return JOINTEXT(dat) // A special paper that we can scan with the science tool diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 06514729e7f..31de74531af 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -32,26 +32,27 @@ /datum/seed //Tracking. - var/uid // Unique identifier. - var/name // Index for global list. - var/seed_name // Plant name for seed packet. - var/seed_noun = "seeds" // Descriptor for packet. - var/display_name // Prettier name. - var/roundstart // If set, seed will not display variety number. - var/mysterious // Only used for the random seed packets. - var/can_self_harvest = 0 // Mostly used for living mobs. - var/growth_stages = 0 // Number of stages the plant passes through before it is mature. - var/list/materials // List used to determine material values for recycling in autolathe - var/list/origin_tech = list() // List used to determine research values for recyling in deconstructive analyzer - var/list/traits = list() // Initialized in New() - var/list/mutants // Possible predefined mutant varieties, if any. - var/list/greatMutants // Possible floral gun mutations - var/list/evolutions =list() // Possible floral evolutions - var/list/chems // Chemicals that plant produces in products/injects into victim. - var/list/consume_gasses // The plant will absorb these gasses during its life. - var/list/exude_gasses // The plant will exude these gasses during its life. - var/kitchen_tag // Used by the reagent grinder. - var/trash_type // Garbage item produced when eaten. + var/uid // Unique identifier. + var/name // Index for global list. + var/seed_name // Plant name for seed packet. + var/seed_noun = "seeds" // Descriptor for packet. + var/display_name // Prettier name. + var/roundstart // If set, seed will not display variety number. + var/mysterious // Only used for the random seed packets. + var/can_self_harvest = 0 // Mostly used for living mobs. + var/growth_stages = 0 // Number of stages the plant passes through before it is mature. + var/list/materials // List used to determine material values for recycling in autolathe + var/list/origin_tech =list() // List used to determine research values for recyling in deconstructive analyzer + var/list/traits = list() // Initialized in New() + var/list/mutants // Possible predefined mutant varieties, if any. + var/list/greatMutants // Possible floral gun mutations + var/list/evolutions =list() // Possible floral evolutions + var/list/chems // Chemicals that plant produces in products/injects into victim. + var/list/consume_gasses // The plant will absorb these gasses during its life. + var/list/exude_gasses // The plant will exude these gasses during its life. + var/list/companions =list() // What plants this one gets boosts *This is for the plant itself not affecting others* + var/kitchen_tag // Used by the reagent grinder. + var/trash_type // Garbage item produced when eaten. var/splat_type = /obj/effect/decal/cleanable/fruit_smudge // Graffiti decal. var/has_mob_product var/force_layer @@ -78,7 +79,7 @@ set_trait(TRAIT_PLANT_ICON, 0) // Icon to use for the plant growing in the tray. set_trait(TRAIT_PRODUCT_COLOUR, 0) // Colour to apply to product icon. set_trait(TRAIT_BIOLUM_COLOUR, 0) // The colour of the plant's radiance. - set_trait(TRAIT_CHEM_SPRAYER, 0) // The ability to spray its chemicals on movement. + set_trait(TRAIT_CHEM_SPRAYER, 0) // The ability to spray its chemicals on movement. set_trait(TRAIT_POTENCY, 1) // General purpose plant strength value. set_trait(TRAIT_REQUIRES_NUTRIENTS, 1) // The plant can starve. set_trait(TRAIT_REQUIRES_WATER, 1) // The plant can become dehydrated. @@ -521,6 +522,8 @@ set_trait(TRAIT_BIOLUM_COLOUR,get_random_colour(0,75,190)) if(prob(1)) set_trait(TRAIT_CHEM_PRODUCTION,1) + if(prob(10)) + set_trait(TRAIT_COMPANION_PLANT,1) set_trait(TRAIT_ENDURANCE,rand(60,100)) set_trait(TRAIT_YIELD,rand(3,15)) @@ -709,7 +712,7 @@ if(GENE_PIGMENT) traits_to_copy = list(TRAIT_PLANT_COLOUR,TRAIT_PRODUCT_COLOUR,TRAIT_BIOLUM_COLOUR) if(GENE_STRUCTURE) - traits_to_copy = list(TRAIT_PLANT_ICON,TRAIT_PRODUCT_ICON,TRAIT_HARVEST_REPEAT) + traits_to_copy = list(TRAIT_PLANT_ICON,TRAIT_PRODUCT_ICON,TRAIT_HARVEST_REPEAT, TRAIT_COMPANION_PLANT) if(GENE_FRUIT) traits_to_copy = list(TRAIT_STINGS,TRAIT_EXPLOSIVE,TRAIT_FLESH_COLOUR,TRAIT_JUICY,TRAIT_CHEM_SPRAYER) if(GENE_SPECIAL) diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 1fd5dd9a2f6..c0be8cf9a97 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -5,6 +5,7 @@ display_name = "chili plants" chems = list("capsaicin" = list(3,5), "nutriment" = list(1,25)) mutants = list("icechili") + companions = list("carrot", "tomato", "corn", "cabbage", "eggplant") kitchen_tag = "chili" /datum/seed/chili/New() @@ -40,6 +41,7 @@ seed_name = "berry" display_name = "berry bush" mutants = list("glowberries","poisonberries") + companions = list("lemon", "harebell", "silverbell") chems = list("nutriment" = list(1,10), "berryjuice" = list(10,10)) kitchen_tag = "berries" @@ -105,30 +107,6 @@ set_trait(TRAIT_PRODUCT_COLOUR,"#7A5454") set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.35) -/datum/seed/blueberry - name = "blueberries" - seed_name = "blueberry" - display_name = "blueberry bush" - chems = list("nutriment" = list(1,10), "blueberryjuice" = list(10,10)) - kitchen_tag = "blueberries" - - -/datum/seed/blueberry/New() - ..() - set_trait(TRAIT_HARVEST_REPEAT,1) - set_trait(TRAIT_JUICY,1) - set_trait(TRAIT_MATURATION,5) - set_trait(TRAIT_PRODUCTION,5) - set_trait(TRAIT_YIELD,4) - set_trait(TRAIT_POTENCY,10) - set_trait(TRAIT_PRODUCT_ICON,"berry") - set_trait(TRAIT_PRODUCT_COLOUR,"#3BA4EC") - set_trait(TRAIT_PLANT_ICON,"bush") - set_trait(TRAIT_IDEAL_HEAT, 298) - set_trait(TRAIT_IDEAL_LIGHT, 7) - set_trait(TRAIT_WATER_CONSUMPTION, 6) - set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15) - // Nettles/variants. /datum/seed/nettle name = "nettle" @@ -138,6 +116,8 @@ chems = list("nutriment" = list(1,50), "sacid" = list(0,1)) kitchen_tag = "nettle" kitchen_tag = "nettle" + //Random no research + companions = list("grass", "tower cap") /datum/seed/nettle/New() ..() @@ -176,6 +156,7 @@ mutants = list("bluetomato","bloodtomato") chems = list("nutriment" = list(1,10), "tomatojuice" = list(10,10)) kitchen_tag = "tomato" + companions = list("carrot", "tower cap") /datum/seed/tomato/New() ..() @@ -251,6 +232,7 @@ display_name = "eggplants" chems = list("nutriment" = list(1,10)) kitchen_tag = "eggplant" + companions = list("carrot", "tower cap") /datum/seed/eggplant/New() ..() @@ -276,6 +258,8 @@ mutants = list("poisonapple","goldapple") chems = list("nutriment" = list(1,10)) kitchen_tag = "apple" + //Random no research + companions = list("grass", "lime") /datum/seed/apple/New() @@ -323,6 +307,8 @@ greatMutants = list("ambrosiainfernum", "ambrosiaomni") chems = list("nutriment" = list(1), "space_drugs" = list(1,8), "monocaridine" = list(1,10,1), "toxin" = list(1,10)) kitchen_tag = "ambrosia" + //Random no research + companions = list("harebell", "silverbell") /datum/seed/ambrosia/New() ..() @@ -439,6 +425,7 @@ chems = list("nutriment" = list(1,25)) splat_type = /obj/effect/plant kitchen_tag = "chanterelle" + companions = list("tower cap", "metal cap") /datum/seed/mushroom/New() ..() @@ -599,6 +586,7 @@ chems = list("woodpulp" = list(10,1)) mutants = list("metalcap") kitchen_tag = "towercap" + companions = list("metal cap") /datum/seed/mushroom/towercap/New() ..() @@ -617,6 +605,7 @@ origin_tech = list(TECH_MATERIAL = 1) mutants = null evolutions = list("plasmacap"=list("plasma")) + companions = list("tower cap") /datum/seed/mushroom/towercap/metalcap/New() ..() @@ -780,6 +769,8 @@ mutants = list("silverbells") chems = list("nutriment" = list(1,20)) kitchen_tag = "harebell" + //Random no research + companions = list("tower cap", "wheat") /datum/seed/flower/New() ..() @@ -798,6 +789,8 @@ display_name = "silverbells" mutants = null chems = list("nutriment" = list(1,50), "silver" = list(1,5)) + //Random no research + companions = list("white-beet", "watermelon") /datum/seed/flower/silverBell/New() ..() @@ -812,6 +805,8 @@ display_name = "poppies" chems = list("space_drugs" = list(1,20), "monocaridine" = list(1,10)) kitchen_tag = "poppy" + //Random no research + companions = list("grass", "wheat") /datum/seed/flower/poppy/New() ..() @@ -831,9 +826,11 @@ seed_name = "sunflower" display_name = "sunflowers" kitchen_tag = "sunflower" + companions = list("tomato", "blue tomato", "chili", "corn") /datum/seed/flower/sunflower/New() ..() + set_trait(TRAIT_COMPANION_PLANT,1) set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCT_ICON,"flower2") set_trait(TRAIT_PRODUCT_COLOUR,"#FFF700") @@ -850,6 +847,7 @@ mutants = list("greengrapes") chems = list("nutriment" = list(1,10), "sugar" = list(1,5), "grapejuice" = list(10,10)) kitchen_tag = "grape" + companions = list("tower cap", "strawberries") /datum/seed/grapes/New() ..() @@ -883,6 +881,8 @@ seed_name = "peanut" display_name = "peanut vines" chems = list("nutriment" = list(1,10)) + //0 research done random plant + companions = list("tower cap") /datum/seed/peanuts/New() ..() @@ -902,6 +902,7 @@ display_name = "cabbages" chems = list("nutriment" = list(1,10)) kitchen_tag = "cabbage" + companions = list("carrot") /datum/seed/cabbage/New() ..() @@ -926,6 +927,8 @@ evolutions = list("clownana"=list("lube","blood")) trash_type = /obj/item/bananapeel kitchen_tag = "banana" + //0 research done random plant + companions = list("tower cap") /datum/seed/banana/New() ..() @@ -960,6 +963,7 @@ chems = list("nutriment" = list(1,10), "cornoil" = list(1,10)) kitchen_tag = "corn" trash_type = /obj/item/corncob + companions = list("pumpkin", "soybean", "strawberries", "cabbage") /datum/seed/corn/New() ..() @@ -982,6 +986,7 @@ mutants = list("broot") chems = list("nutriment" = list(1,10), "potato" = list(10,10)) kitchen_tag = "potato" + companions = list("corn", "wheat", "strawberries", "cabbage") /datum/seed/potato/New() ..() @@ -1001,6 +1006,7 @@ display_name = "soybeans" chems = list("nutriment" = list(1,20), "soymilk" = list(10,20)) kitchen_tag = "soybeans" + companions = list("corn", "potato", "eggplant", "chili") /datum/seed/soybean/New() ..() @@ -1019,6 +1025,7 @@ display_name = "wheat stalks" chems = list("nutriment" = list(1,25), "flour" = list(15,15)) kitchen_tag = "wheat" + companions = list("white-beet") /datum/seed/wheat/New() ..() @@ -1039,6 +1046,7 @@ display_name = "rice stalks" chems = list("nutriment" = list(1,25), "rice" = list(10,15)) kitchen_tag = "rice" + companions = list("potato") /datum/seed/rice/New() ..() @@ -1059,6 +1067,7 @@ display_name = "carrots" chems = list("nutriment" = list(1,20), "imidazoline" = list(3,5), "carrotjuice" = list(10,20)) kitchen_tag = "carrot" + companions = list("chili", "cabbage", "tomato") /datum/seed/carrots/New() ..() @@ -1094,6 +1103,7 @@ display_name = "white-beets" chems = list("nutriment" = list(0,20), "sugar" = list(1,5)) kitchen_tag = "whitebeet" + companions = list("carrot", "cabbage", "tomato") /datum/seed/whitebeets/New() ..() @@ -1113,6 +1123,7 @@ display_name = "sugarcanes" chems = list("sugar" = list(4,5)) kitchen_tag = "sugarcane" + companions = list("potato") /datum/seed/sugarcane/New() ..() @@ -1132,6 +1143,7 @@ seed_name = "watermelon" display_name = "watermelon vine" chems = list("nutriment" = list(1,6), "watermelonjuice" = list(10,6)) + companions = list("corn", "soybean") /datum/seed/watermelon/New() ..() @@ -1156,6 +1168,7 @@ display_name = "pumpkin vine" chems = list("nutriment" = list(1,6)) kitchen_tag = "pumpkin" + companions = list("corn", "soybean") /datum/seed/pumpkin/New() ..() @@ -1176,6 +1189,8 @@ display_name = "lime trees" chems = list("nutriment" = list(1,20), "limejuice" = list(10,20)) kitchen_tag = "lime" + //Generic list without any research + companions = list("gelthi", "tower cap") /datum/seed/citrus/New() ..() @@ -1306,6 +1321,7 @@ seed_name = "cacao" display_name = "cacao tree" chems = list("nutriment" = list(1,10), "coco" = list(4,5)) + companions = list("pineapple", "gelthi", "banana", "tower cap") /datum/seed/cocoa/New() ..() @@ -1327,6 +1343,7 @@ display_name = "cherry tree" chems = list("nutriment" = list(1,15), "sugar" = list(1,15), "cherryjelly" = list(10,15)) kitchen_tag = "cherries" + companions = list("tower cap") /datum/seed/cherries/New() ..() @@ -1366,6 +1383,7 @@ display_name = "mercy's hand leaves" chems = list("bicaridine" = list(1,10), "anti_toxin" = list(1,10)) kitchen_tag = "shand" + companions = list("moon tear", "sun tear") /datum/seed/shand/New() ..() @@ -1380,6 +1398,7 @@ set_trait(TRAIT_IDEAL_HEAT, 283) set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15) +//alocasia hate mint, sadly this is over-wrote in game. /datum/seed/alocasia name = "space alocasia" seed_name = "space alocasia" @@ -1407,6 +1426,7 @@ display_name = "sun tear leaves" chems = list("honey" = list(1,10), "kelotane" = list(3,5)) kitchen_tag = "mtear" + companions = list("moon tear") /datum/seed/mtear/New() ..() @@ -1429,6 +1449,7 @@ mutants = list("sun tear") chems = list("sugar" = list(1,10), "moon water" = list(3,5)) kitchen_tag = "mtear" + companions = list("sun tear") /datum/seed/moontear/New() ..() @@ -1449,6 +1470,7 @@ display_name = "blood root" chems = list("nutriment" = list(1,10), "sanguinum" = list(3,5)) kitchen_tag = "broot" + companions = list("tower cap") /datum/seed/broot/New() ..() @@ -1669,9 +1691,9 @@ seed_name = "blueberry" display_name = "blueberry bush" chems = list("nutriment" = list(1,10), "blueberryjuice" = list(10,10)) + companions = list("lemon", "harebell", "silverbell", "strawberries") //Spefically you have strawberries kitchen_tag = "blueberries" - /datum/seed/blueberry/New() ..() set_trait(TRAIT_HARVEST_REPEAT,1) @@ -1688,12 +1710,12 @@ set_trait(TRAIT_WATER_CONSUMPTION, 6) set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15) - /datum/seed/strawberry name = "strawberries" seed_name = "strawberries" display_name = "strawberry bush" chems = list("nutriment" = list(1,10), "strawberryjuice" = list(10,10)) + companions = list("lemon", "harebell", "silverbell", "cabbage") //Spefically you have cabbage kitchen_tag = "strawberries" /datum/seed/strawberry/New() @@ -1738,6 +1760,7 @@ seed_name = "cinnamon" display_name = "cinnamon" chems = list("cinnamonpowder" = list(6,12)) + companions = list("maidengrass", "grass", "lemon") /datum/seed/cinnamon/New() ..() @@ -1758,10 +1781,12 @@ display_name = "mint plant" chems = list("blendedmint" = list(10,10)) kitchen_tag = "mint" + companions = list("chili", "cabbage", "eggplant") /datum/seed/mint/New() ..() set_trait(TRAIT_HARVEST_REPEAT,1) + set_trait(TRAIT_COMPANION_PLANT,1) set_trait(TRAIT_MATURATION,6) set_trait(TRAIT_PRODUCTION,6) set_trait(TRAIT_YIELD,5) diff --git a/code/modules/hydroponics/seed_gene_presets.dm b/code/modules/hydroponics/seed_gene_presets.dm index fb1ad9025fe..143a199744c 100644 --- a/code/modules/hydroponics/seed_gene_presets.dm +++ b/code/modules/hydroponics/seed_gene_presets.dm @@ -269,6 +269,16 @@ trait_info = "single harvest" preset_values = list(TRAIT_HARVEST_REPEAT = 0) +/obj/item/computer_hardware/hard_drive/portable/plantgene/structure/companion + disk_name = "plant gene disk - companion plant" + trait_info = "companion plaint" + preset_values = list(TRAIT_COMPANION_PLANT = 1) + +/obj/item/computer_hardware/hard_drive/portable/plantgene/structure/loner + disk_name = "plant gene disk - loner plant" + trait_info = "loner plant" + preset_values = list(TRAIT_COMPANION_PLANT = 0) + // OUTPUT /obj/item/computer_hardware/hard_drive/portable/plantgene/output preset_genetype = GENE_OUTPUT diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm index 0bc18dc6d51..0323d12c6c3 100644 --- a/code/modules/hydroponics/trays/tray_process.dm +++ b/code/modules/hydroponics/trays/tray_process.dm @@ -1,4 +1,5 @@ /obj/machinery/portable_atmospherics/hydroponics/Process() + var/mono_crop_booster = 0 if (frozen == 1) // If the tray is frozen, it won't do anything. return @@ -8,6 +9,46 @@ if(smoke.reagents.total_volume) smoke.reagents.trans_to_obj(src, 5, copy = 1) + //stacking hydro trays or soil piles is harmful + for(var/obj/machinery/portable_atmospherics/hydroponics/over_crowarding in view(0, src)) + if(over_crowarding != src && seed) + weedlevel += 0.1 + pestlevel += 0.1 + health -= 3 + mono_crop_booster -= 1 + + if(seed) + //monocrop boosting + for(var/obj/machinery/portable_atmospherics/hydroponics/field in oview(1, src)) + if(field == src || field.dead || !seed) + continue + + var/is_companion = FALSE + + //Silly complication do to lists + if(seed == field.seed || seed.get_trait(TRAIT_COMPANION_PLANT)) + is_companion = TRUE + + if(companions && !is_companion) //Dont need to go through the list if your already getting a boost from same seed/trait + for(var/list_of_companions in companions) + if(seed_name == list_of_companions || seed_name == "modifed [list_of_companions]" || seed_name == "mutant [list_of_companions]") + is_companion = TRUE + break + + if(!is_companion) + continue + + health += 0.01 + mono_crop_booster += 1 + //companions + if(pestlevel > 0 && prob(1+mono_crop_booster)) + pestlevel -= 0.02 + if(2 < yield_mod) + yield_mod += 0.01 + if(100 < potency_mod) + potency_mod += 0.01 + + //Do this even if we're not ready for a plant cycle. process_reagents() @@ -39,7 +80,8 @@ return // Advance plant age. - if(prob(30*seed.get_trait(TRAIT_BOOSTED_GROWTH))) age += 1 * HYDRO_SPEED_MULTIPLIER + if(prob((30+mono_crop_booster)*seed.get_trait(TRAIT_BOOSTED_GROWTH))) + age += 1 * HYDRO_SPEED_MULTIPLIER //Highly mutable plants have a chance of mutating every tick. if(seed.get_trait(TRAIT_IMMUTABLE) == -1) diff --git a/code/modules/research/experiment.dm b/code/modules/research/experiment.dm index c2b8a366720..1b40dd08c2a 100644 --- a/code/modules/research/experiment.dm +++ b/code/modules/research/experiment.dm @@ -429,6 +429,12 @@ GLOBAL_LIST_EMPTY(explosion_watcher_list) if ((P.get_trait(TRAIT_JUICY)) && !("TRAIT_JUICY" in scanned_fruittraits)) scanned_fruittraits += "TRAIT_JUICY" scanneddata += 1 + if ((P.get_trait(TRAIT_CHEM_PRODUCTION)) && !("CHEM_PRODUCTION" in scanned_fruittraits)) + scanned_fruittraits += "CHEM_PRODUCTION" + scanneddata += 1 + if ((P.get_trait(TRAIT_COMPANION_PLANT)) && !("COMPANION_PLANT" in scanned_fruittraits)) + scanned_fruittraits += "COMPANION_PLANT" + scanneddata += 1 if ((P.get_trait(TRAIT_EXPLOSIVE)) && !("TRAIT_EXPLOSIVE" in scanned_fruittraits)) scanned_fruittraits += "TRAIT_EXPLOSIVE" scanneddata += 1 diff --git a/code/modules/trade/datums/trade_stations_presets/1-common/botany.dm b/code/modules/trade/datums/trade_stations_presets/1-common/botany.dm index bf6718c58df..a66d9256673 100644 --- a/code/modules/trade/datums/trade_stations_presets/1-common/botany.dm +++ b/code/modules/trade/datums/trade_stations_presets/1-common/botany.dm @@ -53,7 +53,9 @@ /obj/item/computer_hardware/hard_drive/portable/plantgene/vigour/wall_hugger = custom_good_name("plant gene disk: wall growth"), /obj/item/computer_hardware/hard_drive/portable/plantgene/vigour/non_wall_hugger = custom_good_name("plant gene disk: no wall growth"), /obj/item/computer_hardware/hard_drive/portable/plantgene/structure/repeat_harvest = custom_good_name("plant gene disk: repeatable harvest"), - /obj/item/computer_hardware/hard_drive/portable/plantgene/structure/single_harvest = custom_good_name("plant gene disk: single harvest") + /obj/item/computer_hardware/hard_drive/portable/plantgene/structure/single_harvest = custom_good_name("plant gene disk: single harvest"), + /obj/item/computer_hardware/hard_drive/portable/plantgene/structure/companion = custom_good_name("plant gene disk: companion plant"), + /obj/item/computer_hardware/hard_drive/portable/plantgene/structure/loner = custom_good_name("plant gene disk: loner plant") ), "Output" = list( /obj/item/computer_hardware/hard_drive/portable/plantgene/output/power_producer = custom_good_name("plant gene disk: battery"), From 8093d591e8408d46eac32297ce327972d7152a29 Mon Sep 17 00:00:00 2001 From: Trilby Date: Tue, 17 Dec 2024 16:34:12 -0500 Subject: [PATCH 4/5] the compile part --- code/game/objects/items/devices/scanners/plant.dm | 2 +- code/modules/hydroponics/trays/tray_process.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/scanners/plant.dm b/code/game/objects/items/devices/scanners/plant.dm index a961ae5523d..52d0f340c09 100755 --- a/code/game/objects/items/devices/scanners/plant.dm +++ b/code/game/objects/items/devices/scanners/plant.dm @@ -237,7 +237,7 @@ if(grown_seed.companions) - for(var/friends in companions) + for(var/friends in grown_seed.companions) dat += "
This plant has benefits when growing next to [friends]." diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm index 0323d12c6c3..0314d605397 100644 --- a/code/modules/hydroponics/trays/tray_process.dm +++ b/code/modules/hydroponics/trays/tray_process.dm @@ -29,9 +29,9 @@ if(seed == field.seed || seed.get_trait(TRAIT_COMPANION_PLANT)) is_companion = TRUE - if(companions && !is_companion) //Dont need to go through the list if your already getting a boost from same seed/trait - for(var/list_of_companions in companions) - if(seed_name == list_of_companions || seed_name == "modifed [list_of_companions]" || seed_name == "mutant [list_of_companions]") + if(seed.companions && !is_companion) //Dont need to go through the list if your already getting a boost from same seed/trait + for(var/list_of_companions in seed.companions) + if(seed.seed_name == list_of_companions || seed.seed_name == "modifed [list_of_companions]" || seed.seed_name == "mutant [list_of_companions]") is_companion = TRUE break From a50e7532e8397539bccb2f033099cfc01efeff37 Mon Sep 17 00:00:00 2001 From: Trilby Date: Wed, 18 Dec 2024 19:33:55 -0500 Subject: [PATCH 5/5] Update brewing_datums.dm --- modular_sojourn/brewing_datums.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_sojourn/brewing_datums.dm b/modular_sojourn/brewing_datums.dm index 05a455cd405..49d1a7cf6e7 100644 --- a/modular_sojourn/brewing_datums.dm +++ b/modular_sojourn/brewing_datums.dm @@ -410,7 +410,7 @@ /datum/brewing_product/fernet reagent_to_brew = "fernet" display_name = "Fernet" - needed_crops = list("mint" = 20, "thaadra" = 20, "harebell" = 5) + needed_crops = list("mint" = 20, "thaadra" = 20, "harebells" = 5) needed_chems = list("water" = 60) brew_timer = 15 MINUTES brewed_amount = 1