diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 99c1cf97a6..8c3b9c7f99 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -83,6 +83,16 @@ updateUsrDialog() update_icon() return + + if(beaker) + if(istype(I, /obj/item/reagent_containers/dropper)) + var/obj/item/reagent_containers/dropper/D = I + D.afterattack(beaker, user, 1) + return + if(istype(I, /obj/item/reagent_containers/syringe)) + var/obj/item/reagent_containers/syringe/S = I + S.afterattack(beaker, user, 1) + return return ..() /obj/machinery/chem_heater/on_deconstruction() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index a6a9d7a85f..de27723508 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -200,22 +200,23 @@ /datum/reagent/fermi/zeolites name = "Artificial Zeolites" - description = "Lab made Zeolite, used to clear radiation from people and items alike! Splashing just a small amount(5u) onto any item can clear away large amounts of contamination." + description = "Lab made Zeolite, used to clear radiation from people and items alike! Splashing just a small amount(5u) onto any item can clear away large amounts of contamination, as long as its purity is at least 0.7." pH = 8 color = "#FFDADA" - metabolization_rate = 8 * REAGENTS_METABOLISM //Metabolizes fast but heals a lot! - value = REAGENT_VALUE_COMMON + metabolization_rate = 8 * REAGENTS_METABOLISM //Metabolizes fast but heals a lot! Lasts far longer if more pure. + value = REAGENT_VALUE_RARE //Relatively hard to make now, might be fine with VERY_RARE instead depending on feedback. /datum/reagent/fermi/zeolites/on_mob_life(mob/living/carbon/M) + metabolization_rate = (4 / purity) * REAGENTS_METABOLISM //Metab rate directly influenced by purity. Linear. var/datum/component/radioactive/contamination = M.GetComponent(/datum/component/radioactive) - if(M.radiation > 0) - M.radiation -= min(M.radiation, 60) + if(M.radiation > 0) //hey so apparently pentetic literally purges 1/50 (2%) of the rad amount on someone per tick no matter the 'true' amount, sooo uhh time to tweak this some more.. + M.radiation -= clamp(round((M.radiation / 150) * (25 ** purity), 0.1), 0, M.radiation) //Purges between ~3% and ~16% of total rad amount, per tick, depending on purity. Exponential. if(contamination && contamination.strength > 0) - contamination.strength -= min(contamination.strength, 100) + contamination.strength -= min(contamination.strength, round(25 ** (0.5 + purity), 0.1)) //25 per tick at minimum purity; Tops out at ~125 per tick if purity is 1. Exponential. ..() /datum/reagent/fermi/zeolites/reaction_obj(obj/O, reac_volume) var/datum/component/radioactive/contamination = O.GetComponent(/datum/component/radioactive) - if(contamination && reac_volume >= 5) + if(contamination && reac_volume >= 5 && purity >= 0.7) //you need at least 0.7 purity to instantly purge all contam on an object. qdel(contamination) return diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index da9fd34cd6..f4b8850f55 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -591,19 +591,21 @@ /datum/chemical_reaction/fermi/zeolites name = "Zeolites" id = /datum/reagent/fermi/zeolites - results = list(/datum/reagent/fermi/zeolites = 5) //We make a lot! + results = list(/datum/reagent/fermi/zeolites = 5) //We make a lot! - But it's now somewhat dangerous, and needs a bit of uranium to catalyze the reaction required_reagents = list(/datum/reagent/medicine/potass_iodide = 1, /datum/reagent/aluminium = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) + required_catalysts = list(/datum/reagent/uranium = 5) //FermiChem vars: - OptimalTempMin = 300 - OptimalTempMax = 900 - ExplodeTemp = 1000 //check to see overflow doesn't happen! - OptimalpHMin = 4.0 - OptimalpHMax = 6.0 + OptimalTempMin = 500 + OptimalTempMax = 750 + ExplodeTemp = 850 + OptimalpHMin = 2.8 + OptimalpHMax = 5 //2.2 ph levels of optimal ph zone - centered at 3.9 - ph of ingredients mixed at equal values is 9.55; ph of result is 8. ReactpHLim = 4 //CatalystFact = 0 - CurveSharpT = 4 - CurveSharppH = 0 - ThermicConstant = 0 - HIonRelease = 0.01 - RateUpLim = 15 + CurveSharpT = 1.5 + CurveSharppH = 3 + ThermicConstant = 7 + HIonRelease = -0.15 + RateUpLim = 4 + PurityMin = 0.5 //Good luck. FermiChem = TRUE