diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 6ef2ade8fe..e58225068c 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -832,10 +832,10 @@
if(cached_reagents[reagent]) //if it's already in us, merge
var/datum/reagent/R = cached_reagents[reagent]
- WIP_TAG //check my maths for purity calculations
+ //WIP_TAG //check my maths for purity calculations
//Add amount and equalize purity
- var/our_pure_moles = R.volume * R.purity
- var/their_pure_moles = amount * other_purity
+ //var/our_pure_moles = R.volume * R.purity
+ //var/their_pure_moles = amount * other_purity
R.volume += amount
//R.purity = (our_pure_moles + their_pure_moles) / (R.volume)
R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product
@@ -846,7 +846,7 @@
my_atom.on_reagent_change(ADD_REAGENT)
R.on_merge(data, amount)
if(!no_react)
- start_reacting()
+ handle_reactions()
return TRUE
else
@@ -863,7 +863,7 @@
if(my_atom)
my_atom.on_reagent_change(ADD_REAGENT)
if(!no_react)
- start_reacting()
+ handle_reactions()
if(isliving(my_atom))
R.on_mob_add(my_atom)
return TRUE
@@ -897,7 +897,7 @@
//clamp the removal amount to be between current reagent amount
//and zero, to prevent removing more than the holder has stored
amount = CLAMP(amount, 0, R.volume)
- pH = ((pH * volume)-(R.pH * amount))/(volume - amount)
+ pH = ((pH * total_volume)-(R.pH * amount))/(total_volume - amount)
R.volume -= amount
update_total()
if(!safety)//So it does not handle reactions when it need not to
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 4a3579bf07..d95a18dc3e 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -36,7 +36,8 @@
//Fermichem vars:
var/purity = 1
var/impureChem = "toxin"
- var/loc = null
+ //var/loc = null
+ var/pH
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 8c4f16aa09..43aac65143 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -8,9 +8,12 @@
//Naninte chem
/datum/reagent/fermi
- name = "Fermi"
- id = "fermi"
- taste_description = "If affection had a taste, this would be it."
+ name = "Fermi" //Why did I putthis here?
+ id = "fermi" //It's meeee
+ taste_description = "If affection had a taste, this would be it."
+ var/ImpureChem = "toxin" // What chemical is metabolised with an inpure reaction
+ var/InverseChemVal = 0 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
+ var/InverseChem = "Initropidril" // What chem is metabolised when purity is below InverseChemVal
///datum/reagent/fermi/on_mob_life(mob/living/carbon/M)
//current_cycle++
@@ -22,15 +25,15 @@
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M)
if (src.purity == 1)
return
- if (CR.InverseChemVal > src.purity)
+ else if (src.InverseChemVal > src.purity)
holder.remove_reagent(src.id, volume, FALSE)
- holder.add_reagent(CR.InverseChem)
+ holder.add_reagent(src.InverseChem)
return
else
var/pureVol = volume * purity
var/impureVol = volume * (1 - pureVol)
holder.remove_reagent(src.id, (volume*impureVol), FALSE)
- holder.add_reagent(CR.ImpureChem, impureVol, FALSE)
+ holder.add_reagent(src.ImpureChem, impureVol, FALSE)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 2f890244b7..ff78aea252 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -21,7 +21,6 @@
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
- ImpureChem = "toxin" //What chemical is produced with an inpure reaction
/datum/chemical_reaction/eigenstate/on_reaction(datum/reagents/holder)
var/location = get_turf(holder.my_atom)
@@ -50,9 +49,6 @@
RateUpLim = 5 // Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE // If the chemical explodes in a special way
- ImpureChem = "SDGFTox" // What chemical is metabolised with an inpure reaction
- InverseChemVal = 0.5 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
- InverseChem = "SDZF" // What chem is metabolised when purity is below InverseChemVal
/datum/chemical_reaction/BElarger
name = ""
@@ -119,9 +115,6 @@
RateUpLim = 5 // Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE // If the chemical explodes in a special way
- //ImpureChem = "SDGFTox" // What chemical is metabolised with an inpure reaction
- //InverseChemVal = 0.5 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
- //InverseChem = "SDZF" // What chem is metabolised when purity is below InverseChemVal
/datum/chemical_reaction/enthral/on_reaction(datum/reagents/holder)
diff --git a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm b/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
similarity index 100%
rename from modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
rename to modular_citadel/code/modules/reagents/objects/fermiclothes.dm
diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm
new file mode 100644
index 0000000000..3dd4c41029
--- /dev/null
+++ b/modular_citadel/code/modules/reagents/objects/items.dm
@@ -0,0 +1,67 @@
+/obj/item/pHbooklet
+ name = "pH indicator booklet"
+ desc = "A piece of paper that will change colour depending on the pH of what it's added to."
+ icon_state = "pHbooklet"
+ icon = 'modular_citadel/icons/obj/FermiChem.dmi'
+ item_flags = NOBLUDGEON
+ var/numberOfPages = 100
+
+/obj/item/pHbooklet/attack_hand(mob/user)
+ if(numberOfPages >= 1)
+ var/obj/item/pHpaper/P = new /obj/item/pHpaper
+ //P.add_fingerprint(user)
+ P.forceMove(user.loc)
+ user.put_in_hands(P)
+ to_chat(user, "You take [P] out of \the [src].")
+ numberOfPages--
+ else
+ to_chat(user, "[src] is empty!")
+ add_fingerprint(user)
+ return ..()
+
+/obj/item/pHpaper
+ name = "pH indicator strip"
+ desc = "A piece of paper that will change colour depending on the pH of a solution."
+ icon_state = "pHpaper"
+ icon = 'modular_citadel/icons/obj/FermiChem.dmi'
+ item_flags = NOBLUDGEON
+ color = "#f5c352"
+ var/used = FALSE
+
+/obj/item/pHpaper/attack_hand(mob/user, obj/I)
+ if(!I.reagents.pH)
+ return
+ if(used == TRUE)
+ to_chat(user, "[src] has already been used!")
+ return
+ switch(I.reagents.pH)
+ if(14 to INFINITY)
+ src.color = "#462c83"
+ if(13 to 14)
+ src.color = "#63459b"
+ if(12 to 13)
+ src.color = "#5a51a2"
+ if(11 to 12)
+ src.color = "#3853a4"
+ if(10 to 11)
+ src.color = "#3f93cf"
+ if(9 to 10)
+ src.color = "#0bb9b7"
+ if(8 to 9)
+ src.color = "#23b36e"
+ if(7 to 8)
+ src.color = "#3aa651"
+ if(6 to 7)
+ src.color = "#4cb849"
+ if(5 to 6)
+ src.color = "#b5d335"
+ if(4 to 5)
+ src.color = "#b5d333"
+ if(3 to 4)
+ src.color = "#f7ec1e"
+ if(2 to 3)
+ src.color = "#fbc314"
+ if(1 to 2)
+ src.color = "#f26724"
+ if(0 to 1)
+ src.color = "#ef1d26"
diff --git a/modular_citadel/icons/obj/FermiChem.dmi b/modular_citadel/icons/obj/FermiChem.dmi
new file mode 100644
index 0000000000..ffc50d2899
Binary files /dev/null and b/modular_citadel/icons/obj/FermiChem.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index f1e41b6c2f..d45fc811c0 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2901,7 +2901,6 @@
#include "modular_citadel\code\modules\client\verbs\who.dm"
#include "modular_citadel\code\modules\clothing\clothing.dm"
#include "modular_citadel\code\modules\clothing\neck.dm"
-#include "modular_citadel\code\modules\clothing\fermichemclothe\fermiclothes.dm"
#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
#include "modular_citadel\code\modules\clothing\head\head.dm"
#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm"
@@ -2987,6 +2986,8 @@
#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm"
#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm"
+#include "modular_citadel\code\modules\reagents\objects\fermiclothes.dm"
+#include "modular_citadel\code\modules\reagents\objects\items.dm"
#include "modular_citadel\code\modules\reagents\reagent container\cit_kegs.dm"
#include "modular_citadel\code\modules\reagents\reagent container\hypospraymkii.dm"
#include "modular_citadel\code\modules\reagents\reagent container\hypovial.dm"