From 01a836654306e0d090b8ffcaedb45e6c641f3201 Mon Sep 17 00:00:00 2001 From: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Wed, 5 Oct 2022 15:09:15 -0400 Subject: [PATCH] Fixes Hydroponics Water Adding (#70280) Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> --- code/modules/hydroponics/hydroponics.dm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 902fa6d22c4..81427d0307d 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -591,10 +591,13 @@ /** * Adjust water. * Raises or lowers tray water values by a set value. Adding water will dillute toxicity from the tray. + * Returns the amount of water actually added/taken * * adjustamt - determines how much water the tray will be adjusted upwards or downwards. */ /obj/machinery/hydroponics/proc/adjust_waterlevel(amt) - set_waterlevel(clamp(waterlevel + amt, 0, maxwater), FALSE) + var/initial_waterlevel = waterlevel + set_waterlevel(clamp(waterlevel+amt, 0, maxwater), FALSE) + return waterlevel-initial_waterlevel /** * Adjust Health. @@ -849,9 +852,15 @@ //This was originally in apply_chemicals, but due to apply_chemicals only holding nutrients, we handle it here now. if(reagent_source.reagents.has_reagent(/datum/reagent/water, 1)) var/water_amt = reagent_source.reagents.get_reagent_amount(/datum/reagent/water) * transfer_amount / reagent_source.reagents.total_volume - H.adjust_waterlevel(round(water_amt)) - reagent_source.reagents.remove_reagent(/datum/reagent/water, water_amt) - reagent_source.reagents.trans_to(H.reagents, transfer_amount, transfered_by = user) + var/water_amt_adjusted = H.adjust_waterlevel(round(water_amt)) + reagent_source.reagents.remove_reagent(/datum/reagent/water, water_amt_adjusted) + for(var/datum/reagent/not_water_reagent as anything in reagent_source.reagents.reagent_list) + if(istype(not_water_reagent,/datum/reagent/water)) + continue + var/transfer_me_to_tray = reagent_source.reagents.get_reagent_amount(not_water_reagent.type) * transfer_amount / reagent_source.reagents.total_volume + reagent_source.reagents.trans_id_to(H.reagents, not_water_reagent.type, transfer_me_to_tray) + else + reagent_source.reagents.trans_to(H.reagents, transfer_amount, transfered_by = user) lastuser = WEAKREF(user) if(IS_EDIBLE(reagent_source) || istype(reagent_source, /obj/item/reagent_containers/pill)) qdel(reagent_source)