[MIRROR] Fixes reagent chamber and other similair machinery breaking (#3541)

* Fixes reagent chamber and other similair machinery breaking (#57050)

* fixes reagent chamber and other similair machinery breaking

* Removes pointless src. and changes R into holder

* Updates var to be more reflective of what it is

* Fixes reagent chamber and other similair machinery breaking

Co-authored-by: Time-Green <timkoster1@hotmail.com>
This commit is contained in:
SkyratBot
2021-02-20 23:11:06 +00:00
committed by GitHub
co-authored by Time-Green
parent ea9709a90a
commit 3904e44fe4
+17 -12
View File
@@ -519,33 +519,38 @@
var/list/cached_reagents = reagent_list
if (!target)
return
if (!target.reagents || src.total_volume<=0 || !src.get_reagent_amount(reagent))
var/datum/reagents/holder
if(istype(target, /datum/reagents))
holder = target
else if(target.reagents && total_volume > 0 && get_reagent_amount(reagent))
holder = target.reagents
else
return
if(amount < 0)
return
var/cached_amount = amount
var/datum/reagents/R = target.reagents
if(src.get_reagent_amount(reagent)<amount)
amount = src.get_reagent_amount(reagent)
if(get_reagent_amount(reagent) < amount)
amount = get_reagent_amount(reagent)
amount = min(round(amount, CHEMICAL_VOLUME_ROUNDING), R.maximum_volume-R.total_volume)
amount = min(round(amount, CHEMICAL_VOLUME_ROUNDING), holder.maximum_volume - holder.total_volume)
var/trans_data = null
for (var/CR in cached_reagents)
var/datum/reagent/current_reagent = CR
for (var/looping_through_reagents in cached_reagents)
var/datum/reagent/current_reagent = looping_through_reagents
if(current_reagent.type == reagent)
if(preserve_data)
trans_data = current_reagent.data
if(current_reagent.intercept_reagents_transfer(R, cached_amount))//Use input amount instead.
if(current_reagent.intercept_reagents_transfer(holder, cached_amount))//Use input amount instead.
break
force_stop_reagent_reacting(current_reagent)
R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, current_reagent.ph, no_react = TRUE)
holder.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, current_reagent.ph, no_react = TRUE)
remove_reagent(current_reagent.type, amount, 1)
break
src.update_total()
R.update_total()
R.handle_reactions()
update_total()
holder.update_total()
holder.handle_reactions()
return amount
/// Copies the reagents to the target object