Almost done. Just need to update reagent vars.

This commit is contained in:
Fermi
2019-05-14 21:20:38 +01:00
parent 76aec5a5ed
commit 0d907db516
8 changed files with 86 additions and 21 deletions
+6 -6
View File
@@ -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
+2 -1
View File
@@ -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
. = ..()
@@ -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)
@@ -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)
@@ -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, "<span class='notice'>You take [P] out of \the [src].</span>")
numberOfPages--
else
to_chat(user, "<span class='warning'>[src] is empty!</span>")
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, "<span class='warning'>[src] has already been used!</span>")
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"
Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

+2 -1
View File
@@ -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"