diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm
index f93e1d8236..65507043bb 100644
--- a/code/modules/surgery/organs/lungs.dm
+++ b/code/modules/surgery/organs/lungs.dm
@@ -159,7 +159,7 @@
else
H.failed_last_breath = FALSE
if(H.health >= H.crit_threshold)
- H.adjustOxyLoss(breathModifier) //More damaged lungs = slower oxy rate up to a factor of half
+ H.adjustOxyLoss(-breathModifier) //More damaged lungs = slower oxy rate up to a factor of half
gas_breathed = breath_gases[/datum/gas/oxygen][MOLES]
H.clear_alert("not_enough_oxy")
@@ -188,7 +188,7 @@
else
H.failed_last_breath = FALSE
if(H.health >= H.crit_threshold)
- H.adjustOxyLoss(breathModifier)
+ H.adjustOxyLoss(-breathModifier)
gas_breathed = breath_gases[/datum/gas/nitrogen][MOLES]
H.clear_alert("nitro")
@@ -225,7 +225,7 @@
else
H.failed_last_breath = FALSE
if(H.health >= H.crit_threshold)
- H.adjustOxyLoss(breathModifier)
+ H.adjustOxyLoss(-breathModifier)
gas_breathed = breath_gases[/datum/gas/carbon_dioxide][MOLES]
H.clear_alert("not_enough_co2")
@@ -255,7 +255,7 @@
else
H.failed_last_breath = FALSE
if(H.health >= H.crit_threshold)
- H.adjustOxyLoss(breathModifier)
+ H.adjustOxyLoss(-breathModifier)
gas_breathed = breath_gases[/datum/gas/plasma][MOLES]
H.clear_alert("not_enough_tox")
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 7753fd9eab..90c8dc774a 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -68,6 +68,7 @@
/datum/status_effect/chem/BElarger/tick(mob/living/carbon/human/H)//If you try to wear clothes, you fail. Slows you down if you're comically huge
var/mob/living/carbon/human/o = owner
var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
+ moveCalc = 1+((round(B.cached_size) - 9)/10) //Afffects how fast you move, and how often you can click.
if(!B)
o.remove_movespeed_modifier("megamilk")
o.next_move_modifier /= moveCalc
@@ -78,7 +79,6 @@
o.dropItemToGround(W, TRUE)
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
to_chat(owner, "Your enormous breasts are way too large to fit anything over them!")
- moveCalc = (round(B.cached_size) - 9)/5
if (B.breast_values[B.size] > B.breast_values[B.prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.next_move_modifier *= moveCalc
@@ -105,6 +105,8 @@
/datum/status_effect/chem/PElarger
id = "PElarger"
alert_type = null
+ var/bloodCalc
+ var/moveCalc
/datum/status_effect/chem/PElarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now.
message_admins("PElarge started!")
@@ -125,9 +127,11 @@
/datum/status_effect/chem/PElarger/tick(mob/living/carbon/M)
var/mob/living/carbon/human/o = owner
var/obj/item/organ/genital/penis/P = o.getorganslot("penis")
+ moveCalc = 1+((round(P.length) - 21)/10) //effects how fast you can move
+ bloodCalc = 1+((round(P.length) - 21)/10) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.)
if(!P)
o.remove_movespeed_modifier("hugedick")
- o.next_move_modifier = 1
+ o.blood_ratio /= bloodCalc //If someone else uses blood_ratio, turn this into a multiplier(I should make a handler huh)
owner.remove_status_effect(src)
message_admins("PElarge tick!")
var/items = o.get_contents()
@@ -138,20 +142,21 @@
to_chat(owner, "Your enormous package is way to large to fit anything over!")
switch(round(P.cached_length))
if(21)
- if (!(P.prev_size == P.size))
+ if (P.prev_size > P.size)
to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.")
o.remove_movespeed_modifier("hugedick")
- o.next_move_modifier = 1
+ o.blood_ratio /= bloodCalc
if(22 to INFINITY)
if (!(P.prev_size == P.size))
- to_chat(o, "Your indulgent johnson is so substantial, it's affecting your movements!")
- o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = (P.length - 21.1))
- o.next_move_modifier = (round(P.length) - 21)
+ to_chat(o, "Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!")
+ o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
+ o.blood_ratio *= bloodCalc
..()
-/datum/status_effect/chem/PElarger/on_remove(mob/living/carbon/M)
+/datum/status_effect/chem/PElarger/on_remove(mob/living/carbon/human/o)
owner.remove_movespeed_modifier("hugedick")
- owner.next_move_modifier = 1
+ o.blood_ratio /= bloodCalc
+
/*//////////////////////////////////////////
Mind control functions
diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm
index 264dbfef0a..fd713660c3 100644
--- a/modular_citadel/code/datums/traits/neutral.dm
+++ b/modular_citadel/code/datums/traits/neutral.dm
@@ -1,5 +1,6 @@
// Citadel-specific Neutral Traits
+//For reviewers: If you think it's a bad idea, feel free to remove it. I won't be upset :blobcat:
/datum/quirk/libido
name = "Nymphomania"
desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual."
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 7194e15752..ea95d125a5 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -13,9 +13,9 @@
name = "Fermi" //Why did I putthis here?
id = "fermi" //It's meeee
taste_description = "affection and love!"
- var/ImpureChem = "toxin" // What chemical is metabolised with an inpure reaction
+ var/ImpureChem = "fermiTox" // What chemical is metabolised with an inpure reaction
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
- var/InverseChem = "toxin" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
+ var/InverseChem = "fermiTox" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/DoNotSplit = FALSE // If impurity is handled within the main chem itself
///datum/reagent/fermi/on_mob_life(mob/living/carbon/M)
@@ -67,6 +67,9 @@
else if (src.InverseChemVal > purity)
M.reagents.remove_reagent(src.id, amount, FALSE)
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
+ for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
+ if(R.name == "")
+ R.name = src.name//Negative effects are hidden
message_admins("all convered to [src.InverseChem]")
return
else
@@ -75,6 +78,9 @@
message_admins("splitting [src] [amount] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src.id, impureVol, FALSE)
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
+ for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
+ if(R.name == "")
+ R.name = src.name//Negative effects are hidden
return
@@ -1510,6 +1516,49 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
to_chat(M, "The solution reacts dramatically, with a meow!")
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
holder.clear_reagents()
+
+/datum/reagent/fermi/fermiTox
+ name = ""//defined on setup
+ id = "fermiTox"
+ description = "You should be really careful with this...! Also, how did you get this?"
+
+/datum/reagent/fermi/fermiTox/on_mob_life(mob/living/carbon/C, method)
+ if(C.dna && istype(C.dna.species, /datum/species/jelly))
+ C.adjustToxLoss(-1)
+ else
+ C.adjustToxLoss(1)
+ ..()
+
+/datum/reagent/fermi/fermiABuffer
+ name = "Acidic buffer"//defined on setup
+ id = "fermiABuffer"
+ description = "This reagent will consume itself and move the pH of a beaker towards 3 when added to another."
+ addProc = TRUE
+
+/datum/reagent/fermi/fermiABuffer/on_new()
+ if(LAZYLEN(holder.reagent_list) == 1)
+ return
+ if(holder.pH < 3)
+ return
+ pH = ((holder.pH * holder.total_volume)+(3 * src.volume))/(holder.total_volume + src.volume)
+ holder.remove_reagent(src.id, 1000)
+ ..()
+
+/datum/reagent/fermi/fermiBBuffer
+ name = "Basic buffer"//defined on setup
+ id = "fermiBBuffer"
+ description = "This reagent will consume itself and move the pH of a beaker towards 11 when added to another."
+ addProc = TRUE
+
+/datum/reagent/fermi/fermiBBuffer/on_new()
+ if(LAZYLEN(holder.reagent_list) == 1)
+ return
+ if(holder.pH > 11)
+ return
+ pH = ((holder.pH * holder.total_volume)+(11 * src.volume))/(holder.total_volume + src.volume)
+ holder.remove_reagent(src.id, 1000)
+ ..()
+
/*
/datum/reagent/fermi/fermiTest/on_merge()
..()
diff --git a/modular_citadel/code/modules/reagents/objects/fermiclothes.dm b/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
index 908016d371..2c0df581c4 100644
--- a/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
+++ b/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
@@ -37,6 +37,7 @@
return message
if(prob(0.01))
message += "\" and tips their hat. \"Spy's sappin' my Sentry!"
+ message_admins("I really appreciate all the hard work you put into adminning citadel, I hope you're all having a good day and I hope this hidden and rare message admins brightens up your day.")
return message
message += "\" and tips their hat. \"[pick("Yeehaw!", "Boy howdy.", "Darn tootin'.", "Well don't that beat all.", "Whoooowee, would ya look at that!", "Whoooowee! Makin' bacon!", "Cream Gravy!", "Yippekeeyah-heeyapeeah-kayoh!", "Move 'em out!", "Giddy up!")]"
return message