diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 241a1dcab7..6aa7563d2d 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -190,7 +190,7 @@ im
trans_data = copy_data(T)
//fermichem Added ph TODO: add T.purity
- R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, pH, no_react = TRUE) //we only handle reaction after every reagent has been transfered.
+ R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE) //we only handle reaction after every reagent has been transfered.
//R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, pH, T.purity, no_react = TRUE) //we only handle reaction after every reagent has been transfered.
remove_reagent(T.id, transfer_amount)
@@ -251,7 +251,7 @@ im
if(current_reagent.id == reagent)
if(preserve_data)
trans_data = current_reagent.data
- R.add_reagent(current_reagent.id, amount, trans_data, src.chem_temp, pH, no_react = TRUE) //Fermichem edit TODO: add purity
+ R.add_reagent(current_reagent.id, amount, trans_data, chem_temp, T.purity, pH, no_react = TRUE) //Fermichem edit TODO: add purity
//R.add_reagent(current_reagent.id, amount, trans_data, src.chem_temp, pH, current_reagent.purity, no_react = TRUE) //Fermichem edit
remove_reagent(current_reagent.id, amount, 1)
break
@@ -560,7 +560,7 @@ im
targetVol = 0
handle_reactions()
update_total()
- var/datum/reagent/fermi/Ferm = fermiReactID
+ var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[fermiReactID]
Ferm.FermiFinish(src, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return
@@ -571,10 +571,11 @@ im
if (fermiIsReacting == FALSE)
message_admins("THIS SHOULD NEVER APPEAR!")
+ CRASH("Fermi has refused to stop reacting even though we asked her nicely.")
if (chem_temp > C.OptimalTempMin && fermiIsReacting == TRUE)//To prevent pointless reactions
if (reactedVol < targetVol)
- reactedVol = FermiReact(fermiReactID, chem_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results)
+ reactedVol = FermiReact(fermiReactID, chem_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results, multiplier)
message_admins("FermiChem tick activated started, Reacted vol: [reactedVol] of [targetVol]")
else
STOP_PROCESSING(SSprocessing, src)
@@ -584,7 +585,7 @@ im
targetVol = 0
handle_reactions()
update_total()
- var/datum/reagent/fermi/Ferm = fermiReactID
+ var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[fermiReactID]
Ferm.FermiFinish(src, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return
@@ -596,14 +597,14 @@ im
targetVol = 0
handle_reactions()
update_total()
- var/datum/reagent/fermi/Ferm = fermiReactID
+ var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[fermiReactID]
Ferm.FermiFinish(src, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return
//handle_reactions()
-/datum/reagents/proc/FermiReact(selected_reaction, chem_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results)
+/datum/reagents/proc/FermiReact(selected_reaction, chem_temp, pH, reactedVol, targetVol, cached_required_reagents, cached_results, multiplier)
var/datum/chemical_reaction/fermi/C = selected_reaction
var/deltaT = 0
var/deltapH = 0
@@ -616,6 +617,8 @@ im
message_admins("Loop beginning")
//Begin Parse
+
+
//Check extremes first
if (chem_temp > C.ExplodeTemp)
//go to explode proc
@@ -652,7 +655,7 @@ im
else
deltapH = (((- pH + (C.OptimalpHMax + C.ReactpHLim))**C.CurveSharppH)/(C.ReactpHLim**C.CurveSharppH))//Reverse - to + to prevent math operation failures.
//Within mid range
- else if (pH >= C.OptimalpHMin && pH <= C.OptimalpHMax)
+ if (pH >= C.OptimalpHMin && pH <= C.OptimalpHMax)
deltapH = 1
//This should never proc:
else
@@ -671,12 +674,12 @@ im
message_admins("calculating temperature factor, min: [C.OptimalTempMin], max: [C.OptimalTempMax], Exponential: [C.CurveSharpT], deltaT: [deltaT]")
- stepChemAmmount = targetVol * deltaT
+ stepChemAmmount = multiplier * deltaT
if (stepChemAmmount > C.RateUpLim)
stepChemAmmount = C.RateUpLim
else if (stepChemAmmount <= 0.01)
message_admins("stepChem underflow [stepChemAmmount]")
- stepChemAmmount = 0.02
+ stepChemAmmount = 0.01
if ((reactedVol + stepChemAmmount) > targetVol)
stepChemAmmount = targetVol - reactedVol
@@ -709,7 +712,7 @@ im
message_admins("purity: [purity], purity of beaker")
message_admins("Temp before change: [chem_temp], pH after change: [pH]")
//Apply pH changes and thermal output of reaction to beaker
- chem_temp += (C.ThermicConstant * stepChemAmmount)
+ chem_temp = round(chem_temp + (C.ThermicConstant * stepChemAmmount)) //Why won't you update!!!
pH += (C.HIonRelease * stepChemAmmount)
message_admins("Temp after change: [chem_temp], pH after change: [pH]")
@@ -826,7 +829,7 @@ im
if (D.id == "water") //Do like an otter, add acid to water.
if (pH <= 2)
var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
- s.set_up("fermiAcid", total_volume, pH*10, src)
+ s.set_up(/datum/reagent/fermi/fermiAcid, total_volume, pH*10, src)
s.start()
remove_any(amount/10)
return
@@ -898,7 +901,7 @@ im
R.on_new(data)
if(istype(D, /datum/reagent/fermi))//Is this a fermichem?
var/datum/reagent/fermi/Ferm = D //It's Fermi time!
- Ferm.FermiNew(src) //Seriously what is "data" ????
+ Ferm.FermiNew(my_atom) //Seriously what is "data" ????
//This is how I keep myself sane.
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 cc6b4ca0b7..d7d7fc45a9 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -233,8 +233,8 @@
to_chat(M, "You feel your eigenstate settle, snapping an alternative version of yourself into reality. All your previous memories are lost and replaced with the alternative version of yourself. This version of you feels more [pick("affectionate", "happy", "lusty", "radical", "shy", "ambitious", "frank", "voracious", "sensible", "witty")] than your previous self, sent to god knows what universe.")
M.emote("me",1,"flashes into reality suddenly, gasping as they gaze around in a bewildered and highly confused fashion!",TRUE)
M.reagents.remove_all_type(/datum/reagent, 100, 0, 1)
- for (var/datum/mood_event/i in M)
- SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, i) //Why does this not work?
+ for(var/datum/mood_event/Me in M)
+ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, Me) //Why does this not work?
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "Alternative dimension", /datum/mood_event/eigenstate)
@@ -816,8 +816,8 @@ Buginess level: works as intended - except teleport makes sparks for some reason
//var/Svol = volume
/datum/reagent/fermi/astral/on_mob_life(mob/living/M) // Gives you the ability to astral project for a moment!
- M.alpha = 255//Reset addiction
- antiGenetics = 255
+ //M.alpha = 255//Reset addiction
+ //antiGenetics = 255// DOesn't work for some reason?
switch(current_cycle)
if(0)//Require a minimum
origin = M
@@ -854,7 +854,10 @@ Buginess level: works as intended - except teleport makes sparks for some reason
//Okay so, this might seem a bit too good, but my counterargument is that it'll likely take all round to eventually kill you this way, then you have to be revived without a body. It takes approximately 60-80 minutes to die from this.
/datum/reagent/fermi/astral/addiction_act_stage1(mob/living/carbon/M)
- if(prob(65))
+ if(M.reagents.has_reagent("astral")
+ antiGenetics = 255//Doesn't reset when you take more, which is weird for me, it should.
+ M.alpha = 255 //Antigenetics is to do with stopping geneticists from turning people invisible to kill them.
+ if(prob(60))
M.alpha--
antiGenetics--
switch(antiGenetics)
@@ -867,7 +870,7 @@ Buginess level: works as intended - except teleport makes sparks for some reason
M.alpha--
antiGenetics--
if(180)
- to_chat(M, "You're starting to get scared as more and more of your body and consciousness begins to fade.")
+ to_chat(M, "You feel fear build up in yourself as more and more of your body and consciousness begins to fade.")
M.alpha--
antiGenetics--
if(120)
@@ -880,7 +883,7 @@ Buginess level: works as intended - except teleport makes sparks for some reason
antiGenetics--
M.add_trait(TRAIT_NOCLONE) //So you can't scan yourself, then die, to metacomm. You can only use your memories if you come back as something else.
if(80)
- to_chat(M, "You feel a thrill shoot through your body as what's left of your mind contemplates the forthcoming oblivion.")
+ to_chat(M, "You feel a thrill shoot through your body as what's left of your mind contemplates your forthcoming oblivion.")
M.alpha--
antiGenetics--
if(45)
@@ -890,9 +893,9 @@ Buginess level: works as intended - except teleport makes sparks for some reason
if(0 to 30)
to_chat(M, "Your body disperses from existence, as you become one with the universe.")
to_chat(M, "As your body disappears, your consciousness doesn't. Should you find a way back into the mortal coil, your memories of your previous life and afterlife remain with you. (At the cost of staying in character while dead. Failure to do this may get you banned from this chem. You are still obligated to follow your directives if you play a midround antag)")//Legalised IC OOK? I have a suspicion this won't make it past the review. At least it'll be presented as a neat idea! If this is unacceptable how about the player can retain living memories across lives if they die in this way only.
+ deadchat_broadcast("[M] has become one with the universe, meaning that their IC conciousness is continuous throughout death. If they find a way back to life, they are allowed to remember what was said in deadchat and their previous life. Be careful what you say. If they don't act IC while dead, bwoink the FUCK outta them.")
M.visible_message("[M] suddenly disappears, their body evaporating from existence, freeing [M] from their mortal coil.")
- deadchat_broadcast("[M] has become one with the universe, meaning that their IC conciousness is continuous throughout death. If they find a way back to life, they are allowed to remember what was said in deadchat and their previous life. Be careful what you say. If they don't act IC while dead, bwoink the FUCK otta them.")
- message_admins("[M] has become one with the universe, and have continuous memories thoughout death should they find a way to come back to life (such as an inteligence potion, midround antag). They MUST stay within characer while dead.")
+ message_admins("[M] (ckey: [M.ckey]) has become one with the universe, and have continuous memories thoughout death should they find a way to come back to life (such as an inteligence potion, midround antag, ghost role). They MUST stay within characer while dead.")
qdel(M) //Approx 60minutes till death from initial addiction
..()
@@ -1052,18 +1055,16 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
var/mob/living/creator
-/datum/reagent/fermi/enthrall/FermiNew(holder)
+/datum/reagent/fermi/enthrall/FermiNew(var/atom/my_atom)
message_admins("FermiNew for enthral proc'd")
- var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
+ var/datum/reagent/blood/B = locate(/datum/reagent/blood) in my_atom.reagents.reagent_list
//var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
- if (B.["gender"] == "female")
- creatorGender = "Mistress"
+ if (B.data.["gender"] == "female")
+ creatorGender = "Mistress"d
else
creatorGender = "Master"
- creatorName = B.["real_name"]
- creatorID = B.["ckey"]
- var/mob/living/creatore = holder
- creator = creatore
+ creatorName = B.data.["real_name"]
+ creatorID = B.data.["ckey"]
message_admins("name: [creatorName], ID: [creatorID], gender: [creatorGender], creator:[creator]")
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
@@ -1199,7 +1200,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
description = "A strange substance that draws in a hat from the hat dimention, "
color = "#A080H4" // rgb: , 0, 255
taste_description = "like jerky, whiskey and an off aftertaste of a crypt"
- overdose_threshold = 100
+ overdose_threshold = 25
var/obj/item/clothing/head/hattip/hat
DoNotSplit = TRUE
@@ -1209,14 +1210,17 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
var/items = M.get_contents()
for(var/obj/item/W in items)
if(W == M.head)
- M.dropItemToGround(W, TRUE)
+ if(W = /obj/item/clothing/head/hattip)
+ qdel(W)
+ else
+ M.dropItemToGround(W, TRUE)
hat = new /obj/item/clothing/head/hattip()
M.equip_to_slot(hat, SLOT_HEAD, 1, 1)
/datum/reagent/fermi/hatmium/on_mob_life(mob/living/carbon/human/M)
//hat.armor = list("melee" = (1+(current_cycle/20)), "bullet" = (1+(current_cycle/20)), "laser" = (1+(current_cycle/20)), "energy" = (1+(current_cycle/20)), "bomb" = (1+(current_cycle/20)), "bio" = (1+(current_cycle/20)), "rad" = (1+(current_cycle/20)), "fire" = (1+(current_cycle/20)), "acid" = (1+(current_cycle/20)))
- var/hatArmor = (1+(current_cycle/10))*purity
+ var/hatArmor = (1+(current_cycle/100))*purity
if(!overdosed)
hat.armor = list("melee" = hatArmor, "bullet" = hatArmor, "laser" = hatArmor, "energy" = hatArmor, "bomb" = hatArmor, "bio" = hatArmor, "rad" = hatArmor, "fire" = hatArmor)
else
@@ -1255,7 +1259,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
if(prob(10))
to_chat(M, "You find yourself unable to supress the desire to howl!")
M.emote("awoo")
- if(prob(10))
+ if(prob(20))
var/list/seen = viewers(5, get_turf(M))//Sound and sight checkers
for(var/victim in seen)
if((victim != /mob/living/simple_animal/pet/) || (victim == M))
@@ -1275,10 +1279,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
if(prob(10))
to_chat(M, "You find yourself unable to supress the desire to howl!")
M.emote("awoo")
- if(prob(10))
+ if(prob(20))
var/list/seen = viewers(5, get_turf(M))//Sound and sight checkers
for(var/victim in seen)
- if((victim != /mob/living/simple_animal/pet/) || (victim == M))
+ if((victim = /mob/living/simple_animal/pet/) || (victim == M))
seen = seen - victim
if(seen)
to_chat(M, "You notice [pick(seen)]'s bulge [pick("OwO!", "uwu!")]")
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 031f34c6bf..6074cbf70c 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -26,11 +26,11 @@
var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
if(pH < 2.5)
- s.set_up("fermiAcid", (volume/3), pH*10, T)
+ s.set_up(/datum/reagent/fermi/fermiAcid, (volume/3), pH*10, T)
volume /=3
for (var/reagent in holder.reagent_list)
var/datum/reagent/R = reagent
- s.set_up(R.id, R.volume/3, pH*10, T)
+ s.set_up(R, R.volume/3, pH*10, T)
//R.on_reaction(T, volume/10) //Uneeded, I think (hope)
s.start()
@@ -223,8 +223,7 @@
E.creatorGender = "Master"
E.creatorName = B.["real_name"]
E.creatorID = B.["ckey"]
- var/mob/living/creator = holder
- E.creator = creator
+ message_admins("name: [creatorName], ID: [creatorID], gender: [creatorGender], creator:[creator]")
..()
//var/enthrallID = B.get_blood_data()
diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm
index 40372bd6b4..4334c5d846 100644
--- a/modular_citadel/code/modules/reagents/objects/items.dm
+++ b/modular_citadel/code/modules/reagents/objects/items.dm
@@ -42,3 +42,42 @@
resistance_flags = FLAMMABLE
w_class = WEIGHT_CLASS_TINY
//set flammable somehow
+
+/obj/item/pHpaper/afterattack(obj/item/reagent_containers/glass/glass, mob/user, proximity)
+ if(!istype(glass))
+ return
+ if(used == TRUE)
+ to_chat(user, "[user] has already been used!")
+ return
+ switch(glass.reagents.pH)
+ if(14 to INFINITY)
+ color = "#462c83"
+ if(13 to 14)
+ color = "#63459b"
+ if(12 to 13)
+ color = "#5a51a2"
+ if(11 to 12)
+ color = "#3853a4"
+ if(10 to 11)
+ color = "#3f93cf"
+ if(9 to 10)
+ color = "#0bb9b7"
+ if(8 to 9)
+ color = "#23b36e"
+ if(7 to 8)
+ color = "#3aa651"
+ if(6 to 7)
+ color = "#4cb849"
+ if(5 to 6)
+ color = "#b5d335"
+ if(4 to 5)
+ color = "#b5d333"
+ if(3 to 4)
+ color = "#f7ec1e"
+ if(2 to 3)
+ color = "#fbc314"
+ if(1 to 2)
+ color = "#f26724"
+ if(-INFINITY to 1)
+ color = "#ef1d26"
+ used = TRUE