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)