From 3792a0f6c70cf40c0a3a958716b2322e27d548bf Mon Sep 17 00:00:00 2001 From: DGamerL <108773801+DGamerL@users.noreply.github.com> Date: Fri, 1 Mar 2024 21:17:34 +0100 Subject: [PATCH] FINALLY (#24353) --- code/modules/hydroponics/hydroponics_tray.dm | 228 +++++++++---------- 1 file changed, 114 insertions(+), 114 deletions(-) diff --git a/code/modules/hydroponics/hydroponics_tray.dm b/code/modules/hydroponics/hydroponics_tray.dm index 9c0b489baff..42fe9a3adff 100644 --- a/code/modules/hydroponics/hydroponics_tray.dm +++ b/code/modules/hydroponics/hydroponics_tray.dm @@ -96,7 +96,7 @@ var/list/connected = list() var/list/processing_atoms = list(src) - while(processing_atoms.len) + while(length(processing_atoms)) var/atom/a = processing_atoms[1] for(var/step_dir in GLOB.cardinal) var/obj/machinery/hydroponics/h = locate() in get_step(a, step_dir) @@ -485,12 +485,12 @@ else to_chat(user, "The pests seem to behave oddly, but quickly settle down...") -/obj/machinery/hydroponics/proc/applyChemicals(datum/reagents/S, mob/user) +/obj/machinery/hydroponics/proc/apply_chemicals(mob/user) if(myseed) - myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines + myseed.on_chem_reaction(reagents) //In case seeds have some special interactions with special chems, currently only used by vines // Requires 5 mutagen to possibly change species.// Poor man's mutagen. - if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) + if(reagents.has_reagent("mutagen", 5) || reagents.has_reagent("radium", 10) || reagents.has_reagent("uranium", 10)) switch(rand(100)) if(91 to 100) adjustHealth(-10) @@ -511,212 +511,212 @@ to_chat(user, "Nothing happens...") // 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen - else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) + else if(reagents.has_reagent("mutagen", 2) || reagents.has_reagent("radium", 5) || reagents.has_reagent("uranium", 5)) hardmutate() - else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) + else if(reagents.has_reagent("mutagen", 1) || reagents.has_reagent("radium", 2) || reagents.has_reagent("uranium", 2)) mutate() // After handling the mutating, we now handle the damage from adding crude radioactives... - if(S.has_reagent("uranium", 1)) - adjustHealth(-round(S.get_reagent_amount("uranium") * 1)) - adjustToxic(round(S.get_reagent_amount("uranium") * 2)) - if(S.has_reagent("radium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium") * 1)) - adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce) + if(reagents.has_reagent("uranium", 1)) + adjustHealth(-round(reagents.get_reagent_amount("uranium") * 1)) + adjustToxic(round(reagents.get_reagent_amount("uranium") * 2)) + if(reagents.has_reagent("radium", 1)) + adjustHealth(-round(reagents.get_reagent_amount("radium") * 1)) + adjustToxic(round(reagents.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce) // Nutriments - if(S.has_reagent("eznutriment", 1)) + if(reagents.has_reagent("eznutriment", 1)) yieldmod = 1 mutmod = 1 - adjustNutri(round(S.get_reagent_amount("eznutriment") * 1)) + adjustNutri(round(reagents.get_reagent_amount("eznutriment") * 1)) - if(S.has_reagent("left4zednutriment", 1)) + if(reagents.has_reagent("left4zednutriment", 1)) yieldmod = 0 mutmod = 2 - adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1)) + adjustNutri(round(reagents.get_reagent_amount("left4zednutriment") * 1)) - if(S.has_reagent("robustharvestnutriment", 1)) + if(reagents.has_reagent("robustharvestnutriment", 1)) yieldmod = 1.3 mutmod = 0 - adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 )) + adjustNutri(round(reagents.get_reagent_amount("robustharvestnutriment") *1 )) //Fish Water is both an excellent fertilizer and waters - if(S.has_reagent("fishwater", 1)) - adjustNutri(round(S.get_reagent_amount("fishwater") * 0.75)) - adjustWater(round(S.get_reagent_amount("fishwater") * 1)) + if(reagents.has_reagent("fishwater", 1)) + adjustNutri(round(reagents.get_reagent_amount("fishwater") * 0.75)) + adjustWater(round(reagents.get_reagent_amount("fishwater") * 1)) // Ambrosia Gaia produces earthsblood. - if(S.has_reagent("earthsblood")) - self_sufficiency_progress += S.get_reagent_amount("earthsblood") + if(reagents.has_reagent("earthsblood")) + self_sufficiency_progress += reagents.get_reagent_amount("earthsblood") if(self_sufficiency_progress >= self_sufficiency_req) become_self_sufficient() else if(!self_sustaining) to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.") // Antitoxin binds shit pretty well. So the tox goes significantly down - if(S.has_reagent("charcoal", 1)) - adjustToxic(-round(S.get_reagent_amount("charcoal") * 2)) + if(reagents.has_reagent("charcoal", 1)) + adjustToxic(-round(reagents.get_reagent_amount("charcoal") * 2)) // BRO, YOU JUST WENT ON FULL STUPID. - if(S.has_reagent("toxin", 1)) - adjustToxic(round(S.get_reagent_amount("toxin") * 2)) + if(reagents.has_reagent("toxin", 1)) + adjustToxic(round(reagents.get_reagent_amount("toxin") * 2)) // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now... - if(S.has_reagent("milk", 1)) - adjustNutri(round(S.get_reagent_amount("milk") * 0.1)) - adjustWater(round(S.get_reagent_amount("milk") * 0.9)) + if(reagents.has_reagent("milk", 1)) + adjustNutri(round(reagents.get_reagent_amount("milk") * 0.1)) + adjustWater(round(reagents.get_reagent_amount("milk") * 0.9)) // Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay? - if(S.has_reagent("beer", 1)) - adjustHealth(-round(S.get_reagent_amount("beer") * 0.05)) - adjustNutri(round(S.get_reagent_amount("beer") * 0.25)) - adjustWater(round(S.get_reagent_amount("beer") * 0.7)) + if(reagents.has_reagent("beer", 1)) + adjustHealth(-round(reagents.get_reagent_amount("beer") * 0.05)) + adjustNutri(round(reagents.get_reagent_amount("beer") * 0.25)) + adjustWater(round(reagents.get_reagent_amount("beer") * 0.7)) // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.has_reagent("fluorine", 1)) - adjustHealth(-round(S.get_reagent_amount("fluorine") * 2)) - adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5)) - adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5)) + if(reagents.has_reagent("fluorine", 1)) + adjustHealth(-round(reagents.get_reagent_amount("fluorine") * 2)) + adjustToxic(round(reagents.get_reagent_amount("fluorine") * 2.5)) + adjustWater(-round(reagents.get_reagent_amount("fluorine") * 0.5)) adjustWeeds(-rand(1,4)) // You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial - if(S.has_reagent("chlorine", 1)) - adjustHealth(-round(S.get_reagent_amount("chlorine") * 1)) - adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5)) - adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5)) + if(reagents.has_reagent("chlorine", 1)) + adjustHealth(-round(reagents.get_reagent_amount("chlorine") * 1)) + adjustToxic(round(reagents.get_reagent_amount("chlorine") * 1.5)) + adjustWater(-round(reagents.get_reagent_amount("chlorine") * 0.5)) adjustWeeds(-rand(1,3)) // White Phosphorous + water -> phosphoric acid. That's not a good thing really. // Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. - if(S.has_reagent("phosphorus", 1)) - adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75)) - adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1)) - adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5)) + if(reagents.has_reagent("phosphorus", 1)) + adjustHealth(-round(reagents.get_reagent_amount("phosphorus") * 0.75)) + adjustNutri(round(reagents.get_reagent_amount("phosphorus") * 0.1)) + adjustWater(-round(reagents.get_reagent_amount("phosphorus") * 0.5)) adjustWeeds(-rand(1,2)) // Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though... - if(S.has_reagent("sugar", 1)) + if(reagents.has_reagent("sugar", 1)) adjustWeeds(rand(1,2)) adjustPests(rand(1,2)) - adjustNutri(round(S.get_reagent_amount("sugar") * 0.1)) + adjustNutri(round(reagents.get_reagent_amount("sugar") * 0.1)) // It is water! - if(S.has_reagent("water", 1)) - adjustWater(round(S.get_reagent_amount("water") * 1)) + if(reagents.has_reagent("water", 1)) + adjustWater(round(reagents.get_reagent_amount("water") * 1)) // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~ - if(S.has_reagent("holywater", 1)) - adjustWater(round(S.get_reagent_amount("holywater") * 1)) - adjustHealth(round(S.get_reagent_amount("holywater") * 0.1)) + if(reagents.has_reagent("holywater", 1)) + adjustWater(round(reagents.get_reagent_amount("holywater") * 1)) + adjustHealth(round(reagents.get_reagent_amount("holywater") * 0.1)) // A variety of nutrients are dissolved in club soda, without sugar. // These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. - if(S.has_reagent("sodawater", 1)) - adjustWater(round(S.get_reagent_amount("sodawater") * 1)) - adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1)) - adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1)) + if(reagents.has_reagent("sodawater", 1)) + adjustWater(round(reagents.get_reagent_amount("sodawater") * 1)) + adjustHealth(round(reagents.get_reagent_amount("sodawater") * 0.1)) + adjustNutri(round(reagents.get_reagent_amount("sodawater") * 0.1)) // Man, you guys are daft - if(S.has_reagent("sacid", 1)) - adjustHealth(-round(S.get_reagent_amount("sacid") * 1)) - adjustToxic(round(S.get_reagent_amount("sacid") * 1.5)) + if(reagents.has_reagent("sacid", 1)) + adjustHealth(-round(reagents.get_reagent_amount("sacid") * 1)) + adjustToxic(round(reagents.get_reagent_amount("sacid") * 1.5)) adjustWeeds(-rand(1,2)) // SERIOUSLY - if(S.has_reagent("facid", 1)) - adjustHealth(-round(S.get_reagent_amount("facid") * 2)) - adjustToxic(round(S.get_reagent_amount("facid") * 3)) + if(reagents.has_reagent("facid", 1)) + adjustHealth(-round(reagents.get_reagent_amount("facid") * 2)) + adjustToxic(round(reagents.get_reagent_amount("facid") * 3)) adjustWeeds(-rand(1,4)) // Glyphosate is just as bad - if(S.has_reagent("glyphosate", 1)) - adjustHealth(-round(S.get_reagent_amount("glyphosate") * 5)) - adjustToxic(round(S.get_reagent_amount("glyphosate") * 6)) + if(reagents.has_reagent("glyphosate", 1)) + adjustHealth(-round(reagents.get_reagent_amount("glyphosate") * 5)) + adjustToxic(round(reagents.get_reagent_amount("glyphosate") * 6)) adjustWeeds(-rand(4,8)) // why, just why - if(S.has_reagent("napalm", 1)) + if(reagents.has_reagent("napalm", 1)) if(!(myseed.resistance_flags & FIRE_PROOF)) - adjustHealth(-round(S.get_reagent_amount("napalm") * 6)) - adjustToxic(round(S.get_reagent_amount("napalm") * 7)) + adjustHealth(-round(reagents.get_reagent_amount("napalm") * 6)) + adjustToxic(round(reagents.get_reagent_amount("napalm") * 7)) adjustWeeds(-rand(5, 9)) //At least give them a small reward if they bother //Weed Spray - if(S.has_reagent("atrazine", 1)) - adjustToxic(round(S.get_reagent_amount("atrazine") * 0.5)) + if(reagents.has_reagent("atrazine", 1)) + adjustToxic(round(reagents.get_reagent_amount("atrazine") * 0.5)) //old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts adjustWeeds(-rand(1,2)) //Pest Spray - if(S.has_reagent("pestkiller", 1)) - adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5)) + if(reagents.has_reagent("pestkiller", 1)) + adjustToxic(round(reagents.get_reagent_amount("pestkiller") * 0.5)) adjustPests(-rand(1,2)) // Healing - if(S.has_reagent("cryoxadone", 1)) - adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3)) - adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3)) + if(reagents.has_reagent("cryoxadone", 1)) + adjustHealth(round(reagents.get_reagent_amount("cryoxadone") * 3)) + adjustToxic(-round(reagents.get_reagent_amount("cryoxadone") * 3)) // Ammonia is bad ass. - if(S.has_reagent("ammonia", 1)) - adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5)) - adjustNutri(round(S.get_reagent_amount("ammonia") * 1)) + if(reagents.has_reagent("ammonia", 1)) + adjustHealth(round(reagents.get_reagent_amount("ammonia") * 0.5)) + adjustNutri(round(reagents.get_reagent_amount("ammonia") * 1)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01)) + myseed.adjust_yield(round(reagents.get_reagent_amount("ammonia") * 0.01)) // Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants - if(S.has_reagent("saltpetre", 1)) - var/salt = S.get_reagent_amount("saltpetre") + if(reagents.has_reagent("saltpetre", 1)) + var/salt = reagents.get_reagent_amount("saltpetre") adjustHealth(round(salt * 0.25)) if(myseed) myseed.adjust_production(-round(salt/100)-prob(salt%100)) myseed.adjust_potency(round(salt*0.50)) // Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer - if(S.has_reagent("ash", 1)) - adjustHealth(round(S.get_reagent_amount("ash") * 0.25)) - adjustNutri(round(S.get_reagent_amount("ash") * 0.5)) + if(reagents.has_reagent("ash", 1)) + adjustHealth(round(reagents.get_reagent_amount("ash") * 0.25)) + adjustNutri(round(reagents.get_reagent_amount("ash") * 0.5)) adjustWeeds(-1) // This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. - if(S.has_reagent("diethylamine", 1)) - adjustHealth(round(S.get_reagent_amount("diethylamine") * 1)) - adjustNutri(round(S.get_reagent_amount("diethylamine") * 2)) + if(reagents.has_reagent("diethylamine", 1)) + adjustHealth(round(reagents.get_reagent_amount("diethylamine") * 1)) + adjustNutri(round(reagents.get_reagent_amount("diethylamine") * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02)) + myseed.adjust_yield(round(reagents.get_reagent_amount("diethylamine") * 0.02)) adjustPests(-rand(1,2)) // Compost, effectively - if(S.has_reagent("nutriment", 1)) - adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5)) - adjustNutri(round(S.get_reagent_amount("nutriment") * 1)) + if(reagents.has_reagent("nutriment", 1)) + adjustHealth(round(reagents.get_reagent_amount("nutriment") * 0.5)) + adjustNutri(round(reagents.get_reagent_amount("nutriment") * 1)) - if(S.has_reagent("plantmatter", 1)) - adjustHealth(round(S.get_reagent_amount("plantmatter") * 0.5)) - adjustNutri(round(S.get_reagent_amount("plantmatter") * 1)) + if(reagents.has_reagent("plantmatter", 1)) + adjustHealth(round(reagents.get_reagent_amount("plantmatter") * 0.5)) + adjustNutri(round(reagents.get_reagent_amount("plantmatter") * 1)) // Compost for EVERYTHING - if(S.has_reagent("virusfood", 1)) - adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5)) - adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5)) + if(reagents.has_reagent("virusfood", 1)) + adjustNutri(round(reagents.get_reagent_amount("virusfood") * 0.5)) + adjustHealth(-round(reagents.get_reagent_amount("virusfood") * 0.5)) // FEED ME - if(S.has_reagent("blood", 1)) - adjustNutri(round(S.get_reagent_amount("blood") * 1)) + if(reagents.has_reagent("blood", 1)) + adjustNutri(round(reagents.get_reagent_amount("blood") * 1)) adjustPests(rand(2,4)) // FEED ME SEYMOUR - if(S.has_reagent("lazarus_reagent", 1)) + if(reagents.has_reagent("lazarus_reagent", 1)) spawnplant() // The best stuff there is. For testing/debugging. - if(S.has_reagent("adminordrazine", 1)) - adjustWater(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1)) + if(reagents.has_reagent("adminordrazine", 1)) + adjustWater(round(reagents.get_reagent_amount("adminordrazine") * 1)) + adjustHealth(round(reagents.get_reagent_amount("adminordrazine") * 1)) + adjustNutri(round(reagents.get_reagent_amount("adminordrazine") * 1)) adjustPests(-rand(1,5)) adjustWeeds(-rand(1,5)) - if(S.has_reagent("adminordrazine", 5)) + if(reagents.has_reagent("adminordrazine", 5)) switch(rand(100)) if(66 to 100) mutatespecie() @@ -726,6 +726,7 @@ mutatepest(user) else to_chat(user, "Nothing happens...") + reagents.clear_reagents() /obj/machinery/hydroponics/attackby(obj/item/O, mob/user, params) //Called when mob user "attacks" it with object O @@ -1000,7 +1001,7 @@ /obj/machinery/hydroponics/proc/add_compost(obj/item/reagent_source, mob/user, transfer_amount, visi_msg, irrigate = FALSE) var/list/trays = list(src)//makes the list just this in cases of syringes and compost etc - if(irrigate && transfer_amount > 30 && reagent_source.reagents.total_volume >= 30 && using_irrigation) + if(irrigate && (transfer_amount > 30) && (reagent_source.reagents.total_volume >= 30) && using_irrigation) trays = FindConnected() if(length(trays) > 1) @@ -1010,14 +1011,13 @@ visible_message("[visi_msg].") var/split = round(transfer_amount / length(trays)) - for(var/obj/machinery/hydroponics/H in trays)//cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener - reagent_source.reagents.trans_to(H.reagents, split) - if(isfood(reagent_source) || ispill(reagent_source) || istype(reagent_source, /obj/item/grown)) - qdel(reagent_source) - - H.applyChemicals(reagents, user) - reagents.clear_reagents() + for(var/obj/machinery/hydroponics/H as anything in trays)//cause I don't want to feel like im juggling 15 tamagotchis and I can get to my real work of ripping flooring apart in hopes of validating my life choices of becoming a space-gardener + reagent_source.reagents.trans_to(H, split) + H.apply_chemicals(user) H.update_state() + if(isfood(reagent_source) || ispill(reagent_source) || istype(reagent_source, /obj/item/grown)) + qdel(reagent_source) + if(reagent_source) // If the source wasn't composted and destroyed reagent_source.update_icon()