diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index 78bfe1fc9d..e5fa98e681 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -343,6 +343,29 @@ im
R.on_update (A)
update_total()
+//beaker check proc,
+/datum/reagents/proc/beaker_check(atom/A)
+ message_admins("beaker check proc'd")
+ if(istype(A, /obj/item/reagent_containers/glass/beaker/meta))
+ return
+ if(istype(A, /obj/item/reagent_containers/glass/beaker/plastic))
+ if(chem_temp > 444)//assuming polypropylene
+ var/list/seen = viewers(5, get_turf(my_atom))
+ var/iconhtml = icon2html(A, seen)
+ for(var/mob/M in seen)
+ to_chat(M, "[iconhtml] \The [my_atom]'s beak melts from the temperature!")
+ qdel(A)
+ return
+ if ((pH < 0.5) || (pH > 13.5))//maybe make it higher? Though..Hmm!
+ var/list/seen = viewers(5, get_turf(my_atom))
+ var/iconhtml = icon2html(A, seen)
+ for(var/mob/M in seen)
+ to_chat(M, "[iconhtml] \The [my_atom]'s beak melts from the extreme pH!")
+ qdel(A)
+ return
+
+
+
/datum/reagents/proc/handle_reactions()//HERE EDIT HERE THE MAIN REACTION FERMICHEMS ASSEMBLE! I hope rp is similar
if(fermiIsReacting == TRUE)
//reagents_holder_flags |= REAGENT_NOREACT unsure if this is needed
@@ -356,7 +379,7 @@ im
var/reaction_occurred = 0 // checks if reaction, binary variable
var/continue_reacting = FALSE //Helps keep track what kind of reaction is occuring; standard or fermi.
-
+ beaker_check(my_atom) //Beaker resilience test
do //What does do do in byond? It sounds very redundant? is it a while loop?
var/list/possible_reactions = list() //init list
@@ -627,7 +650,9 @@ im
//message_admins("Loop beginning")
//Begin Parse
- //update_holder_purity(C)//updates holder's purity
+ message_admins("Purity precalc: [overallPurity]")
+ update_holder_purity(C)//updates holder's purity
+ message_admins("Purity postcalc: [overallPurity]")
//Check extremes first
if (cached_temp > C.ExplodeTemp)
@@ -645,7 +670,7 @@ im
//TODO Strong acids eat glass, make it so you NEED plastic beakers for superacids(for some reactions)
//message_admins("pH is lover limit, cur pH: [pH]")
- if ((purity < C.PurityMin) && (!C.PurityMin == 0))//If purity is below the min, blow it up.
+ if (purity < C.PurityMin)//If purity is below the min, blow it up.
C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH)
return
@@ -704,6 +729,7 @@ im
//TODO: Check overall beaker purity with proc
//Then adjust purity of result AND yeild ammount with said purity.
+ stepChemAmmount *= overallPurity
// End.
/*
@@ -838,6 +864,8 @@ im
chem_temp = CLAMP(chem_temp + (J / (S * total_volume)), min_temp, max_temp)
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, other_purity = 1, other_pH, no_react = 0)//EDIT HERE TOO ~FERMICHEM~
+ //beaker_check(my_atom)
+
if(!isnum(amount) || !amount)
return FALSE
@@ -852,11 +880,15 @@ 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(/datum/reagent/fermi/fermiAcid, total_volume, pH*10, src)
+ var/turf/T = get_turf(my_atom)
+ var/datum/reagents/R = new/datum/reagents(3000)//I don't want to hold it back..!
+ R.add_reagent("fermiAcid", amount)
+ for (var/datum/reagent/reagentgas in reagent_list)
+ R.add_reagent(reagentgas, amount/5)
+ remove_reagent(reagentgas, amount/5)
+ s.set_up(R, amount, T)
s.start()
- remove_any(amount/10)
- return
-
+ return FALSE
if(!pH)
other_pH = D.pH
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index 1fb1759865..aa5fbfa596 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -44,49 +44,6 @@
/obj/item/reagent_containers/attack(mob/M, mob/user, def_zone)
if(user.a_intent == INTENT_HARM)
return ..()
-/*Checking to see if I can delete this
-/obj/item/reagent_containers/attack(obj/item/W, mob/user, params)
- ..()
- if(!istype(W, /obj/item/pHpaper))
- return
- var/obj/item/pHpaper/P = W
- if(P.used == TRUE)
- to_chat(user, "[src] has already been used!")
- return
- switch(src.reagents.pH)
- if(14 to INFINITY)
- P.color = "#462c83"
- if(13 to 14)
- P.color = "#63459b"
- if(12 to 13)
- P.color = "#5a51a2"
- if(11 to 12)
- P.color = "#3853a4"
- if(10 to 11)
- P.color = "#3f93cf"
- if(9 to 10)
- P.color = "#0bb9b7"
- if(8 to 9)
- P.color = "#23b36e"
- if(7 to 8)
- P.color = "#3aa651"
- if(6 to 7)
- P.color = "#4cb849"
- if(5 to 6)
- P.color = "#b5d335"
- if(4 to 5)
- P.color = "#b5d333"
- if(3 to 4)
- P.color = "#f7ec1e"
- if(2 to 3)
- P.color = "#fbc314"
- if(1 to 2)
- P.color = "#f26724"
- if(-INFINITY to 1)
- P.color = "#ef1d26"
- P.used = TRUE
-*/
-
/obj/item/reagent_containers/proc/canconsume(mob/eater, mob/user)
if(!iscarbon(eater))
diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm
index 14ff377523..a31b5394e0 100644
--- a/code/modules/spells/spell_types/shapeshift.dm
+++ b/code/modules/spells/spell_types/shapeshift.dm
@@ -16,7 +16,7 @@
var/convert_damage = FALSE //If you want to convert the caster's health to the shift, and vice versa.
var/convert_damage_type = BRUTE //Since simplemobs don't have advanced damagetypes, what to convert damage back into.
- var/shapeshift_type //Incase I ever get lucky enough to be a wizard. Also why can you be a dog but not a cat!! Racist
+ var/shapeshift_type //Incase I ever get lucky enough to be a wizard. Also why can you be a dog but not a cat!! I know this isn't fermichem related, but this is really important!!!
var/list/possible_shapes = list(/mob/living/simple_animal/mouse,\
/mob/living/simple_animal/pet/cat,\
/mob/living/simple_animal/pet/dog/corgi,\
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index c4ea994650..ea6e4deca8 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -68,7 +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.
+ moveCalc = 1+((round(B.cached_size) - 9)/5) //Afffects how fast you move, and how often you can click.
if(!B)
o.remove_movespeed_modifier("megamilk")
o.next_move_modifier /= moveCalc
@@ -94,7 +94,7 @@
else 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
- if((B.size) < 16)
+ if((B.cached_size) < 16)
switch(round(B.cached_size))
if(9)
if (!(B.breast_sizes[B.prev_size] == B.size))
diff --git a/modular_citadel/code/datums/traits/negative.dm b/modular_citadel/code/datums/traits/negative.dm
index d999f719a0..b5102f19b9 100644
--- a/modular_citadel/code/datums/traits/negative.dm
+++ b/modular_citadel/code/datums/traits/negative.dm
@@ -10,7 +10,7 @@
/datum/quirk/Hypno/add()
//You caught me, it's not actually based off a trigger, stop spoiling the effect! Code diving ruins the magic!
- addtimer(CALLBACK(src, /datum/quirk/Hypno.proc/triggered, quirk_holder), rand(1200, 3600))//increase by 10, it's lower so I can test it.
+ addtimer(CALLBACK(src, /datum/quirk/Hypno.proc/triggered, quirk_holder), rand(120, 360))//increase by 100, it's lower so I can test it.
/datum/quirk/Hypno/proc/triggered(quirk_holder)//I figured I might as well make a trait of code I added.
var/mob/living/carbon/human/H = quirk_holder
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index d49447dd8e..823763d898 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -130,7 +130,7 @@
//proc to give a player their genitals and stuff when they log in
/mob/living/carbon/human/proc/give_genitals(clean=0)//clean will remove all pre-existing genitals. proc will then give them any genitals that are enabled in their DNA
- if ((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if (NOGENITALS in dna.species.species_traits)
return
if(clean)
var/obj/item/organ/genital/GtoClean
@@ -155,7 +155,7 @@
/mob/living/carbon/human/proc/give_penis()
if(!dna)
return FALSE
- if((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if(NOGENITALS in dna.species.species_traits)
return FALSE
if(!getorganslot("penis"))
var/obj/item/organ/genital/penis/P = new
@@ -173,7 +173,7 @@
/mob/living/carbon/human/proc/give_balls()
if(!dna)
return FALSE
- if((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if(NOGENITALS in dna.species.species_traits)
return FALSE
if(!getorganslot("testicles"))
var/obj/item/organ/genital/testicles/T = new
@@ -194,7 +194,7 @@
/mob/living/carbon/human/proc/give_breasts()
if(!dna)
return FALSE
- if((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if(NOGENITALS in dna.species.species_traits)
return FALSE
if(!getorganslot("breasts"))
var/obj/item/organ/genital/breasts/B = new
@@ -217,7 +217,7 @@
/mob/living/carbon/human/proc/give_vagina()
if(!dna)
return FALSE
- if((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if(NOGENITALS in dna.species.species_traits)
return FALSE
if(!getorganslot("vagina"))
var/obj/item/organ/genital/vagina/V = new
@@ -233,7 +233,7 @@
/mob/living/carbon/human/proc/give_womb()
if(!dna)
return FALSE
- if((NOGENITALS in dna.species.species_traits) && (genital_override = FALSE))
+ if(NOGENITALS in dna.species.species_traits)
return FALSE
if(!getorganslot("womb"))
var/obj/item/organ/genital/womb/W = new
@@ -269,12 +269,22 @@
if(src && !QDELETED(src))
dna.species.handle_genitals(src)
+//fermichem procs
/mob/living/carbon/human/proc/Force_update_genitals(mob/living/carbon/human/H) //called in fermiChem
dna.species.handle_genitals(src)
//dna.species.handle_breasts(src)
//H.update_body()
//species_traits = list(NOTRANSSTING,NOGENITALS)
+/mob/living/carbon/human/proc/emergent_genital_call()
+ var/organCheck = FALSE
+ for(var/obj/item/organ/O in internal_organs)
+ if(istype(O, /obj/item/organ/genital))
+ organCheck = TRUE
+ if (organCheck == FALSE)
+ dna.features["genitals_use_skintone"] = TRUE
+ dna.species.use_skintones = TRUE
+ return
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)
//message_admins("attempting to update sprite")
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index 7da4b0c3db..76ac802371 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -64,14 +64,14 @@
//message_admins("Pinas size: [length], [cached_length], [o]")
//message_admins("2. size vs prev_size")
if (round(length) > round(prev_size))
- to_chat(o, "Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(length)] inch penis.")
+ to_chat(o, "Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "Chase Redtail", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(length)] inch penis.")
else if (round(length) < round(prev_size))
- to_chat(o, "Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(length)] inch penis.")
+ to_chat(o, "Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "Chase Redtail", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("shrinks down to", "decreases into", "diminishes into", "deflates into", "shrivels regretfully into", "contracts into")] a [uppertext(length)] inch penis.")
prev_size = length
icon_state = sanitize_text("penis_[shape]_[size]")
//update_body()
//P.update_icon() //Either of these don't work, why???
- girth = (length * girth_ratio)
+ girth = (length * girth_ratio)//Is it just me or is this ludicous, why not make it exponentially decay?
//var/mob/living/carbon/human/H = owner
//H.update_genitals()
//owner.update_genitals()
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 f9abd06ab9..571a798957 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -631,6 +631,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
H.genital_override = TRUE
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
if(!B)
+ H.emergent_genital_call()
message_admins("No breasts found on init!")
return
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
@@ -735,13 +736,14 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
InverseChem = "PEsmaller" //At really impure vols, it just becomes 100% inverse
//var/mob/living/carbon/human/H
-/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M)
+/datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M)
. = ..()
var/mob/living/carbon/human/H = M
H.genital_override = TRUE
var/obj/item/organ/genital/penis/P = H.getorganslot("penis")
if(!P)
message_admins("No penis found on init!")
+ H.emergent_genital_call()
return
P.prev_size = P.length
P.cached_length = P.length
@@ -785,7 +787,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(B)
B.cached_size = B.cached_size - 0.1
- message_admins("Breast size: [B.size], [B.cached_size], [holder]")
+ //message_admins("Breast size: [B.size], [B.cached_size], [holder]")
B.update()
if(V)
V.Remove(M)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index a88c615e11..e26c86a804 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -135,9 +135,9 @@
/datum/chemical_reaction/fermi/BElarger //done
name = "Sucubus milk"
id = "BElarger"
- results = list("BElarger" = 6)
+ results = list("BElarger" = 0.6)
required_reagents = list("salglu_solution" = 0.1, "milk" = 0.5, "synthflesh" = 0.2, "silicon" = 0.2, "aphro" = 0.2)
- mix_message = "the reaction gives off a sent of milkshakes!"
+ mix_message = "the reaction gives off a mist of milk."
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMax = 800
@@ -169,6 +169,7 @@
id = "PElarger"
results = list("PElarger" = 0.3)
required_reagents = list("plasma" = 0.1, "stable_plasma" = 0.1, "sugar" = 0.1)
+ mix_message = ""
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 200
@@ -226,6 +227,7 @@
required_reagents = list("iron" = 0.1, "iodine" = 0.1)
//required_reagents = list("cocoa" = 1, "astral" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1)
required_catalysts = list("blood" = 0.1)
+ mix_message = "the reaction gives off a burgundy plume of smoke!"
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 780
@@ -265,7 +267,7 @@
E.creatorName = B.data.["real_name"]
E.data.["creatorID"] = B.data.["ckey"]
E.creatorID = B.data.["ckey"]
- message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
+ message_admins("MKUltra made name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
//Apprently works..?Negative
/*
@@ -293,7 +295,7 @@
s.set_up(R, volume, T)
s.start()
my_atom.reagents.clear_reagents()
- //..() //Please don't kill everyone too.
+ ..(volume = 0, pH = 7, purity = 1) //Just a lil fire.
/datum/chemical_reaction/fermi/hatmium // done
name = "Hat growth serum"