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"