diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 4e278d2ede..58926d0c69 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -60,6 +60,9 @@
M.SetSleeping(0, 0)
M.jitteriness = 0
M.cure_all_traumas(TRAUMA_RESILIENCE_MAGIC)
+ if(M.blood_volume < BLOOD_VOLUME_NORMAL)
+ M.blood_volume = BLOOD_VOLUME_NORMAL
+
for(var/thing in M.diseases)
var/datum/disease/D = thing
if(D.severity == DISEASE_SEVERITY_POSITIVE)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index f5f5eda104..59f4b4576c 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -35,6 +35,9 @@
var/FermiChem = FALSE //If the chemical uses the Fermichem reaction mechanics
var/FermiExplode = FALSE //If the chemical explodes in a special way as a result of
var/ImpureChem = "toxin" //What chemical is produced with an inpure reaction
+ var/InverseChemVal = 0.3
+ var/InverseChem = "toxin"
+
/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume, specialreact)
return
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 61e7c7a90c..288a3ffd5b 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -129,6 +129,25 @@
o.next_move_modifier = (round(P.length) - 11)
..()
+/datum/status_effect/chem/OwO
+ id = "OwO"
+
+/datum/status_effect/chem/PElarger/tick(message)
+ if(copytext(message, 1, 2) != "*")
+ message = replacetext(message, "ne", "nye")
+ message = replacetext(message, "nu", "nyu")
+ message = replacetext(message, "na", "nya")
+ message = replacetext(message, "no", "nyo")
+ message = replacetext(message, "ove", "uv")
+ message = replacetext(message, "ove", "uv")
+ message = replacetext(message, "th", "ff")
+ message = replacetext(message, "l", "w")
+ message = replacetext(message, "r", "w")
+ if(prob(20))
+ message = replacetext(message, ".", "OwO.")
+ else if(prob(30))
+ message = replacetext(message, ".", "uwu.")
+ message = lowertext(message)
/*Doesn't work
/datum/status_effect/chem/SDGF/candidates
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index ae4d05cc58..4095b32d29 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -7,8 +7,8 @@
slot = "breasts"
w_class = 3
size = BREASTS_SIZE_DEF
- var/cached_size = 3//for enlargement
- var/prev_size = 3//For flavour texts
+ var/cached_size = null//for enlargement
+ var/prev_size = BREASTS_SIZE_DEF//For flavour texts
var/breast_sizes = list ("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "huge", "flat")
var/breast_values = list ("A" = 1, "B" = 2, "C" = 3, "D" = 4, "E" = 5, "F" = 6, "G" = 7, "H" = 8, "I" = 9, "J" = 10, "K" = 11, "L" = 12, "M" = 13, "N" = 14, "O" = 15, "huge" = 16, "flat" = 0)
var/statuscheck = FALSE
@@ -78,6 +78,9 @@
/obj/item/organ/genital/breasts/update_size()//wah
//var/mob/living/carbon/human/o = owner
//var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
+ if (cached_size == null)
+ prev_size = size
+ return
message_admins("Breast size at start: [size], [cached_size], [owner]")
if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!
to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.")
@@ -123,6 +126,6 @@
else if (cached_size == 16.2)
to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a hefty [uppertext(size)]cm diameter bosom, taking both of your hands to hold!.")
- icon_state = sanitize_text("breasts_[shape]_[size]")
- owner.update_body()
- update_icon()
+ //icon_state = sanitize_text("breasts_[shape]_[size]")
+ //owner.update_body()
+ //update_icon()
diff --git a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
new file mode 100644
index 0000000000..80ae690ada
--- /dev/null
+++ b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
@@ -0,0 +1,16 @@
+//Fermiclothes!
+//Clothes made from FermiChem
+
+/obj/item/clothing/head/hattip //Actually the M1 Helmet
+ name = "flak helmet"
+ con = 'icons/obj/clothing/hats.dmi'
+ icon_state = "top_hat"
+ desc = "A sythesized hat, you can't seem to take it off. And tips their hat."
+
+/obj/item/clothing/head/hattip/attack_hand(mob/user)
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ if(src == C.head)
+ M.emote("me",1,"tips their hat.",TRUE)
+ return
+ return ..()
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 2b07526ae7..56015b615d 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -569,15 +569,15 @@
id = "astral"
description = "An opalescent murky liquid that is said to distort your soul from your being."
color = "#A080H4" // rgb: , 0, 255
- taste_description = "velvety brambles "
- metabolization_rate = 0
+ taste_description = "velvety brambles"
+ metabolization_rate = 0//Removal is exponential, see code
overdose_threshold = 20
addiction_threshold = 30
addiction_stage1_end = 9999//Should never end.
var/mob/living/carbon/origin
var/mob/living/simple_animal/hostile/retaliate/ghost/G = null
var/ODing = FALSE
- var/Svol = volume
+ //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
@@ -607,8 +607,8 @@
/datum/reagent/fermi/astral/on_mob_delete(mob/living/carbon/M)
G.mind.transfer_to(origin)
qdel(G)
- if(ODing = TRUE)
- M.Sleeping(10*Svol, 0)
+ if(ODing == TRUE)
+ M.Sleeping(10*volume, 0)
ODing = FALSE
..()
@@ -651,10 +651,32 @@
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 the afterlife remain with you. (At the cost of staying in character while dead.)")//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.
M.visible_message("[M] suddenly disappears, their body evaporating from existence, freeing [M] from their mortal coil.")
- qdel(M)
+ qdel(M) //Approx 60minutes till death from initial addiction
..()
+/datum/reagent/fermi/mindControl
+ name = "Astrogen"
+ id = "astral"
+ description = "An opalescent murky liquid that is said to distort your soul from your being."
+ color = "#A080H4" // rgb: , 0, 255
+ taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
+ metabolization_rate = 0
+ overdose_threshold = 20
+ addiction_threshold = 30
+ addiction_stage1_end = 9999//Should never end.
+/datum/reagent/fermi/furranium
+ name = "Furranium"
+ id = "furranium"
+ description = "OwO whats this?"
+ color = "#H04044" // rgb: , 0, 255
+ taste_description = "dewicious degenyewacy"
+
+/datum/reagent/fermi/furranium/on_mob_life(mob/living/carbon/M)
+ M.apply_status_effect(/datum/status_effect/chem/OwO)
+
+/datum/reagent/fermi/astral/on_mob_delete(mob/living/carbon/M)
+ M.remove_status_effect(/datum/status_effect/chem/OwO)
/*
/mob/living/simple_animal/hostile/retaliate/ghost
incorporeal_move = 1
@@ -686,3 +708,21 @@ reduce viewrange?
return
nane.regen_rate = -7.5
*/
+
+/*
+ _________________________________________
+||Fermichem toxic / impure chems here. ||
+|| ||
+||_______________________________________||
+*/
+
+/datum/reagent/fermi/SDGFTox
+ name = "Impure synthetic cells"
+ id = "SDGFtox"
+ description = "A chem that makes Fermis angry at you if you're reading this, how did you get this??."
+ color = "#A080H4" // rgb: , 0, 255
+ taste_description = "Forbidden chemistry" //Check to make sure this doesn't proc taste when added to mobs
+ metabolization_rate = 1 //1u = 2clone damage (too much?)
+
+/datum/reagent/fermi/SDGFTox/on_mob_life(mob/living/M)
+ M.adjustCloneLoss(2, 0)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 604faaffef..af38b5fd8b 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -35,21 +35,24 @@
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
- OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
- OptimalTempMax = 500 // Upper end for above
- ExplodeTemp = 550 //Temperature at which reaction explodes
- OptimalpHMin = 4 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
- OptimalpHMax = 9.5 // Higest value for above
- ReactpHLim = 2 // How far out pH wil react, giving impurity place (Exponential phase)
- CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
- CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
- CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
- ThermicConstant = 20 //Temperature change per 1u produced
- HIonRelease = 0.01 //pH change per 1u reaction
- 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
+ OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
+ OptimalTempMax = 500 // Upper end for above
+ ExplodeTemp = 550 // Temperature at which reaction explodes
+ OptimalpHMin = 4 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
+ OptimalpHMax = 9.5 // Higest value for above
+ ReactpHLim = 2 // How far out pH wil react, giving impurity place (Exponential phase)
+ CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
+ CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
+ CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
+ ThermicConstant = 20 // Temperature change per 1u produced
+ HIonRelease = 0.01 // pH change per 1u reaction
+ 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