Merge pull request #13521 from DeltaFire15/zeolites-tweaking

[READY] Rebalances zeolites and their reaction
This commit is contained in:
silicons
2020-11-07 00:16:29 -07:00
committed by GitHub
3 changed files with 31 additions and 18 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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