diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index e5fa98e681..fb17b47300 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -345,24 +345,25 @@ im
//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))
+ else 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/list/seen = viewers(5, get_turf(A))
var/iconhtml = icon2html(A, seen)
for(var/mob/M in seen)
- to_chat(M, "[iconhtml] \The [my_atom]'s beak melts from the temperature!")
+ to_chat(M, "[iconhtml] \The [my_atom]'s melts from the temperature!")
+ playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1)
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))
+ else if(istype(A, /obj/item/reagent_containers/glass) && ((pH < 0.5) || (pH > 13.5)))//maybe make it higher? Though..Hmm!
+ var/list/seen = viewers(5, get_turf(A))
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!")
+ to_chat(M, "[iconhtml] \The [my_atom]'s melts from the extreme pH!")
+ playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1)
qdel(A)
- return
+ return
@@ -379,8 +380,6 @@ 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
reaction_occurred = 0 // sets it back to 0?
@@ -650,9 +649,9 @@ im
//message_admins("Loop beginning")
//Begin Parse
- message_admins("Purity precalc: [overallPurity]")
+ WARNING("Purity precalc: [overallPurity]")
update_holder_purity(C)//updates holder's purity
- message_admins("Purity postcalc: [overallPurity]")
+ WARNING("Purity postcalc: [overallPurity]")
//Check extremes first
if (cached_temp > C.ExplodeTemp)
@@ -765,14 +764,15 @@ im
return (reactedVol)
-/datum/reagents/proc/update_holder_purity(var/datum/chemical_reaction/fermi/C)
+/datum/reagents/proc/update_holder_purity(var/datum/chemical_reaction/fermi/C, holder)
var/list/cached_reagents = reagent_list
var/i
var/cachedPurity
//var/fermiChem
- for(var/reagent in C.required_reagents)
- cachedPurity += cached_reagents[reagent].purity
- i++
+ for(var/datum/reagent/R in my_atom.reagents.reagent_list)
+ if (R in cached_reagents)
+ cachedPurity += R.purity
+ i++
overallPurity = cachedPurity/i
/datum/reagents/proc/isolate_reagent(reagent)
@@ -879,17 +879,19 @@ 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
+ var/datum/effect_system/smoke_spread/chem/s = new
var/turf/T = get_turf(my_atom)
- var/datum/reagents/R = new/datum/reagents(3000)//I don't want to hold it back..!
+ var/datum/reagents/R = new/datum/re agents(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.set_up(R, CLAMP(amount/10, 0, 3), T)
s.start()
return FALSE
+ beaker_check(my_atom) //Beaker resilience test
+
if(!pH)
other_pH = D.pH
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 3046649170..40654ae60b 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -35,8 +35,7 @@
var/self_consuming = FALSE
//Fermichem vars:
var/purity = 1
- var/addProc = FALSE //When this reagent is added to a new beaker, it does something.
- //var/ImpureChem = "toxin"
+ var/addProc = FALSE
var/loc = null //Should be the creation location!
var/pH = 7
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 302113c4fb..4d0f7a24e3 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -1022,7 +1022,7 @@
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
switch(E.phase)
if(2 to INFINITY)
- C.Sleeping(30 * power_multiplier)
+ C.Sleeping(40 * power_multiplier)
E.cooldown += 10
//STRIP
@@ -1032,7 +1032,6 @@
var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
switch(E.phase)
if(2 to INFINITY)//Tier 2 only
- E.phase = 1
var/items = H.get_contents()
for(var/obj/item/W in items)
if(W == H.w_uniform || W == H.wear_suit)
diff --git a/modular_citadel/code/datums/traits/negative.dm b/modular_citadel/code/datums/traits/negative.dm
index b5102f19b9..45c3b0b6ba 100644
--- a/modular_citadel/code/datums/traits/negative.dm
+++ b/modular_citadel/code/datums/traits/negative.dm
@@ -10,14 +10,16 @@
/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(120, 360))//increase by 100, it's lower so I can test it.
+ addtimer(CALLBACK(src, /datum/quirk/Hypno.proc/triggered, quirk_holder), rand(12000, 36000))//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
var/list/seen = viewers(8, get_turf(H))
+ seen - quirk_holder
if(LAZYLEN(seen) == 0)
to_chat(H, "That object accidentally sets off your implanted trigger, sending you into a hypnotic daze!")
else
to_chat(H, "[pick(seen)] accidentally sets off your implanted trigger, sending you into a hypnotic daze!")
H.apply_status_effect(/datum/status_effect/trance, 200, TRUE)
+ message_admins("Trance applied")
qdel(src)
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index 820b9cde66..512a98c50b 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -6,7 +6,7 @@
zone = "chest"
slot = "breasts"
w_class = 3
- size = BREASTS_SIZE_DEF //SHOULD BE A LETTER
+ size = BREASTS_SIZE_DEF //SHOULD BE A LETTER, starts as a number...???
var/cached_size = null//for enlargement SHOULD BE A NUMBER
var/prev_size //For flavour texts SHOULD BE A LETTER
var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat")
@@ -26,8 +26,10 @@
reagents.add_reagent(fluid_id, fluid_max_volume)
prev_size = size
cached_size = breast_values[size]
+ /* This breaks the character creation sceen. for some reason sizes are set to numbers there.
if (cached_size == "c")//fix for a weird bug that has something to do with how they're set up on the character create screen.
cached_size = 3
+ */
/obj/item/organ/genital/breasts/on_life()
if(QDELETED(src))
@@ -93,6 +95,8 @@
prev_size = size
return
//message_admins("Breast size at start: [size], [cached_size], [owner]")
+ if(!isnum(cached_size))
+ cached_size = breast_values[cached_size]
if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??)
to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.")
src.Remove(owner)
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index 76ac802371..1af3a5417f 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -23,6 +23,8 @@
/obj/item/organ/genital/penis/Initialize()
. = ..()
+ var/mob/living/carbon/human/o = owner
+ length = o.dna.features["cock_length"] //for whatever reason, this doesn't set up correctly.
prev_size = length
cached_length = length
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 571a798957..35f266f80e 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -17,6 +17,7 @@
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
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
+ //var/addProc = FALSE //When this reagent is added to a new beaker, it does something.
///datum/reagent/fermi/on_mob_life(mob/living/carbon/M)
//current_cycle++
@@ -634,6 +635,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
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)
B.prev_size = B.size
B.cached_size = sizeConv[B.size]
@@ -740,14 +742,14 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
. = ..()
var/mob/living/carbon/human/H = M
H.genital_override = TRUE
- var/obj/item/organ/genital/penis/P = H.getorganslot("penis")
+ var/obj/item/organ/genital/penis/P = M.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
- message_admins("init P len: [P.length], prev: [P.prev_size], cache = [P.cached_length]")
+ message_admins("init P len chem: [P.length], prev: [P.prev_size], cache = [P.cached_length]")
/datum/reagent/fermi/PElarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch.
var/mob/living/carbon/human/H = M
@@ -757,10 +759,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/obj/item/organ/genital/penis/nP = new
nP.Insert(M)
if(nP)
- nP.length = 0.2
+ nP.length = 1
to_chat(M, "Your groin feels warm, as you feel a newly forming bulge down below.")//OwO
- nP.cached_length = 0.2
- nP.prev_size = 0.2
+ nP.cached_length = 1
+ nP.prev_size = 1
M.reagents.remove_reagent(src.id, 5)
P = nP
@@ -780,7 +782,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/obj/item/organ/genital/vagina/V = M.getorganslot("vagina")
var/obj/item/organ/genital/womb/W = M.getorganslot("womb")
- message_admins("PE Breast status: [B]")
if(M.gender == FEMALE)
M.gender = MALE
M.visible_message("[M] suddenly looks more masculine!", "You suddenly feel more masculine!")
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index e26c86a804..d3d8586531 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -58,7 +58,7 @@
if (reagent.purity < 0.6)
ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
if(R.reagent_list)
- s.set_up(R, (volume/10)*pHmod, T)
+ s.set_up(R, (volume/10)*pHmod, 10, T)
s.start()
if(!ImpureTot == 0)
ImpureTot *= volume
@@ -225,10 +225,9 @@
id = "enthrall"
results = list("enthrall" = 0.3)
required_reagents = list("iron" = 0.1, "iodine" = 0.1)
- //required_reagents = list("cocoa" = 1, "astral" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1)
+ //required_reagents = list("cocoa" = 0.1, "astral" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.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
OptimalTempMax = 800
@@ -269,24 +268,6 @@
E.creatorID = B.data.["ckey"]
message_admins("MKUltra made name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
-//Apprently works..?Negative
-/*
-/datum/chemical_reaction/fermi/enthrall/on_reaction(datum/reagents/holder)
- message_admins("On reaction for enthral proc'd")
- var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
- var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
- if (B.data.["gender"] == "female")
- E.data.["creatorGender"] = "Mistress"
- else
- E.data.["creatorGender"] = "Master"
- E.data["creatorName"] = B.data.["real_name"]
- E.data.["creatorID"] = B.data.["ckey"]
- message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
- ..()
-
- //var/enthrallID = B.get_blood_data()
-*/
-
/datum/chemical_reaction/fermi/enthrall/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(1000)