From a0073295e1c9bf6727dabd61ea4ff003bf5e0fc0 Mon Sep 17 00:00:00 2001 From: Fermi Date: Sun, 26 May 2019 01:49:58 +0100 Subject: [PATCH] Updating from Cit, pre PR. --- .../living/simple_animal/hostile/zombie.dm | 26 ++++++- code/modules/reagents/chemistry/holder.dm | 73 +++++++++---------- .../reagents/reagent_containers/glass.dm | 10 +-- .../code/datums/status_effects/chems.dm | 26 ++++--- .../code/datums/traits/positive.dm | 4 +- .../code/modules/arousal/organs/breasts.dm | 16 ++-- .../code/modules/arousal/organs/penis.dm | 2 + .../chemistry/reagents/fermi_reagents.dm | 50 ++++++------- .../reagents/chemistry/recipes/fermi.dm | 51 +++++++------ .../code/modules/reagents/objects/items.dm | 4 +- 10 files changed, 143 insertions(+), 119 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index 21c2d4804a..7d89941687 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -55,4 +55,28 @@ /mob/living/simple_animal/hostile/zombie/drop_loot() . = ..() corpse.forceMove(drop_location()) - corpse.create() \ No newline at end of file + corpse.create() + +/mob/living/simple_animal/hostile/unemployedclone + name = "Failed clone" + desc = "Somebody failed chemistry." + icon = 'icons/mob/human.dmi' + icon_state = "husk" + icon_living = "husk" + icon_dead = "husk" + mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID) + speak_chance = 0 + stat_attack = UNCONSCIOUS //braains + maxHealth = 100 + health = 100 + harm_intent_damage = 5 + melee_damage_lower = 21 + melee_damage_upper = 21 + attacktext = "bites" + attack_sound = 'sound/hallucinations/growl1.ogg' + a_intent = INTENT_HARM + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + spacewalk = FALSE + status_flags = CANPUSH + del_on_death = 0 diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 96e8c5fa1b..fc0b15804f 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -347,7 +347,7 @@ im /datum/reagents/proc/beaker_check(atom/A) if(istype(A, /obj/item/reagent_containers/glass/beaker/meta)) return - else if(istype(A, /obj/item/reagent_containers/glass/beaker/plastic)) + if((A.type == /obj/item/reagent_containers/glass/beaker/plastic)) if(chem_temp > 444)//assuming polypropylene var/list/seen = viewers(5, get_turf(A)) var/iconhtml = icon2html(A, seen) @@ -471,9 +471,6 @@ im var/special_react_result = selected_reaction.check_special_react(src) var/list/multiplier = INFINITY //Wat - for(var/B in cached_required_reagents) // - //multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup) - multiplier = min(multiplier, (get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup) //Splits reactions into two types; FermiChem is advanced reaction mechanics, Other is default reaction. //FermiChem relies on two additional properties; pH and impurity //Temperature plays into a larger role too. @@ -483,28 +480,28 @@ im if (C.FermiChem == TRUE && !continue_reacting) message_admins("FermiChem Proc'd") - + for(var/B in cached_required_reagents) + multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01)) for(var/P in selected_reaction.results) targetVol = cached_results[P]*multiplier + //message_admins("FermiChem target volume: [targetVol]") - if ((chem_temp > C.OptimalTempMin) && (pH > (C.OptimalpHMin - C.ReactpHLim)) && (pH < (C.OptimalpHMax + C.ReactpHLim)))//To prevent pointless reactions - //if (reactedVol < targetVol) - if (fermiIsReacting == TRUE) - return 0 - else - //reactedVol = FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results) - //selected_reaction.on_reaction(src, my_atom, multiplier) - START_PROCESSING(SSprocessing, src) - //message_admins("FermiChem processing started") - selected_reaction.on_reaction(src, my_atom, multiplier) - fermiIsReacting = TRUE - fermiReactID = selected_reaction - reaction_occurred = 1 - //else - // fermiIsReacting = FALSE - // STOP_PROCESSING(SSfastprocess, src) - else if (chem_temp > C.ExplodeTemp) + if( (chem_temp <= C.ExplodeTemp) && (chem_temp >= C.OptimalTempMin)) + if( (pH >= (C.OptimalpHMin - C.ReactpHLim)) && (pH <= (C.OptimalpHMax + C.ReactpHLim)) )//To prevent pointless reactions + //if (reactedVol < targetVol) + if (fermiIsReacting == TRUE) + return 0 + else + //reactedVol = FermiReact(selected_reaction, chem_temp, pH, multiplier, reactedVol, targetVol, cached_required_reagents, cached_results) + //selected_reaction.on_reaction(src, my_atom, multiplier) + START_PROCESSING(SSprocessing, src) + //message_admins("FermiChem processing started") + selected_reaction.on_reaction(src, my_atom, multiplier) + fermiIsReacting = TRUE + fermiReactID = selected_reaction + reaction_occurred = 1 + if (chem_temp > C.ExplodeTemp) var/datum/chemical_reaction/fermi/Ferm = selected_reaction Ferm.FermiExplode(src, my_atom, volume = total_volume, temp = chem_temp, pH = pH) return 0 @@ -518,7 +515,7 @@ im else for(var/B in cached_required_reagents) // - multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B]))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup) + multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01))//a simple one over the other? (Is this for multiplying end product? Useful for toxinsludge buildup) for(var/B in cached_required_reagents) remove_reagent(B, (multiplier * cached_required_reagents[B]), safety = 1)//safety? removes reagents from beaker using remove function. @@ -566,8 +563,9 @@ im //message_admins("updating targetVol from [targetVol]") for(var/B in cached_required_reagents) // - multiplier = min(multiplier, round(get_reagent_amount(B) / cached_required_reagents[B])) - multiplier*=10 + multiplier = min(multiplier, round((get_reagent_amount(B) / cached_required_reagents[B]), 0.01)) + message_admins("Multi:[multiplier],( reag ammount:[get_reagent_amount(B)] / req reag:[cached_required_reagents[B]]") + //multiplier*=10 if (multiplier == 0) STOP_PROCESSING(SSprocessing, src) fermiIsReacting = FALSE @@ -671,10 +669,6 @@ 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)//If purity is below the min, blow it up. - C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH) - return - //For now, purity is handled elsewhere //Calculate DeltapH (Deviation of pH from optimal) @@ -738,8 +732,6 @@ im */ //message_admins("cached_results: [cached_results], reactedVol: [reactedVol], stepChemAmmount [stepChemAmmount]") - - for(var/B in cached_required_reagents) //message_admins("cached_required_reagents(B): [cached_required_reagents[B]], reactedVol: [reactedVol], base stepChemAmmount [stepChemAmmount]") remove_reagent(B, (stepChemAmmount * cached_required_reagents[B]), safety = 1)//safety? removes reagents from beaker using remove function. @@ -749,20 +741,21 @@ im SSblackbox.record_feedback("tally", "chemical_reaction", cached_results[P]*stepChemAmmount, P)//log add_reagent(P, cached_results[P]*(stepChemAmmount), null, cached_temp, purity)//add reagent function!! I THINK I can do this: //Above should reduce yeild based on holder purity. + //Purity Check + for(var/datum/reagent/R in my_atom.reagents.reagent_list) + if(P == R.id) + if (R.purity < C.PurityMin)//If purity is below the min, blow it up. + C.FermiExplode(src, my_atom, (reactedVol+targetVol), cached_temp, pH) + return + + C.FermiCreate(src)//proc that calls when step is done - C.FermiCreate(src) - //message_admins("purity: [purity], purity of beaker") - //message_admins("Temp before change: [chem_temp], pH after change: [pH]") //Apply pH changes and thermal output of reaction to beaker chem_temp = round(cached_temp + (C.ThermicConstant * stepChemAmmount)) //Why won't you update!!! - //adjust_thermal_energy((cached_temp*(C.ThermicConstant * stepChemAmmount *100)), 0, 1500) //(J, min_temp = 2.7, max_temp = 1000) pH += (C.HIonRelease * stepChemAmmount) - //message_admins("Temp after change: [chem_temp], pH after change: [pH]") - - + //keep track of the current reacted amount reactedVol = reactedVol + stepChemAmmount - - + //return said amount to compare for next step. return (reactedVol) /datum/reagents/proc/reactant_purity(var/datum/chemical_reaction/fermi/C, holder) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 73b221866d..14323c405f 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -108,7 +108,7 @@ /obj/item/reagent_containers/glass/beaker name = "beaker" - desc = "A beaker. It can hold up to 50 units." + desc = "A beaker. It can hold up to 50 units. Unable to withstand extreme pHes" icon = 'icons/obj/chemical.dmi' icon_state = "beaker" item_state = "beaker" @@ -152,13 +152,13 @@ /obj/item/reagent_containers/glass/beaker/jar name = "honey jar" - desc = "A jar for honey. It can hold up to 50 units of sweet delight." + desc = "A jar for honey. It can hold up to 50 units of sweet delight. Unable to withstand reagents of an extreme pH." icon = 'icons/obj/chemical.dmi' icon_state = "vapour" /obj/item/reagent_containers/glass/beaker/large name = "large beaker" - desc = "A large beaker. Can hold up to 100 units." + desc = "A large beaker. Can hold up to 100 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerlarge" materials = list(MAT_GLASS=2500) volume = 100 @@ -181,7 +181,7 @@ /obj/item/reagent_containers/glass/beaker/meta name = "metamaterial beaker" - desc = "A large beaker. Can hold up to 200 units." + desc = "A large beaker. Can hold up to 200 units. Is able to withstand all chemical situations." icon_state = "beakergold" materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000) volume = 200 @@ -205,7 +205,7 @@ name = "bluespace beaker" desc = "A bluespace beaker, powered by experimental bluespace technology \ and Element Cuban combined with the Compound Pete. Can hold up to \ - 300 units." + 300 units. Unable to withstand reagents of an extreme pH." icon_state = "beakerbluespace" materials = list(MAT_GLASS=3000) volume = 300 diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 8008c4a422..999b345caa 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -45,6 +45,7 @@ id = "BElarger" alert_type = null var/moveCalc = 1 + var/cachedmoveCalc = 1 //var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) //var/list/items = list() //var/items = o.get_contents() @@ -71,7 +72,7 @@ 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 + sizeMoveMod(1) owner.remove_status_effect(src) var/items = o.get_contents() for(var/obj/item/W in items) @@ -86,14 +87,14 @@ o.apply_damage(0.1, BRUTE, target) if(!B.cached_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 + sizeMoveMod(moveCalc) return ..() 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 + sizeMoveMod(moveCalc) 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 + sizeMoveMod(moveCalc) if((B.cached_size) < 16) switch(round(B.cached_size)) if(9) @@ -108,7 +109,14 @@ /datum/status_effect/chem/BElarger/on_remove(mob/living/carbon/M) owner.remove_movespeed_modifier("megamilk") - owner.next_move_modifier /= moveCalc + sizeMoveMod(1) + +/datum/status_effect/chem/BElarger/proc/sizeMoveMod(var/value) + if(cachedmoveCalc == value) + return + owner.next_move_modifier /= cachedmoveCalc + owner.next_move_modifier *= value + cachedmoveCalc = value /datum/status_effect/chem/PElarger @@ -152,17 +160,17 @@ if(21) to_chat(o, "Your rascally willy has become a more managable size, liberating your movements.") o.remove_movespeed_modifier("hugedick") - o.AdjustBloodVol(bloodCalc) + o.AdjustBloodVol(bloodCalc/2) if(22 to INFINITY) if(prob(2)) 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.AdjustBloodVol(bloodCalc) + o.AdjustBloodVol(bloodCalc/2) ..() /datum/status_effect/chem/PElarger/on_remove(mob/living/carbon/human/o) owner.remove_movespeed_modifier("hugedick") - o.ResetBloodVol() + owner.ResetBloodVol() /*////////////////////////////////////////// @@ -485,8 +493,6 @@ //Truth serum? //adrenals? - //M.next_move_modifier *= 0.5 - //M.adjustStaminaLoss(-5*REM) //final tidying resistanceTally += deltaResist diff --git a/modular_citadel/code/datums/traits/positive.dm b/modular_citadel/code/datums/traits/positive.dm index a0a8f2b020..59bb98d09c 100644 --- a/modular_citadel/code/datums/traits/positive.dm +++ b/modular_citadel/code/datums/traits/positive.dm @@ -3,7 +3,7 @@ /datum/quirk/BloodPressure name = "Synthetic blood" desc = "You've got a new form of synthetic blood that increases the total blood volume inside of you!" - value = 1 + value = 0 //I honeslty dunno if this is a good trait? I just means you use more of medbays blood and make janitors madder. mob_trait = TRAIT_HIGH_BLOOD gain_text = "You feel full of blood!" lose_text = "You feel like your blood pressure went down." @@ -11,4 +11,4 @@ /datum/quirk/BloodPressure/add() var/mob/living/M = quirk_holder M.blood_ratio = 1.2 - M.blood_volume += 100 + M.blood_volume += 150 diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 17eb332485..138e8bcf73 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -84,15 +84,15 @@ //Allows breasts to grow and change size, with sprite changes too. //maximum wah //Comical sizes slow you down in movement and actions. -//Rediculous sizes remove hands. +//Rediculous sizes makes you more cumberson. //Should I turn someone with meter wide... assets into a blob? //this is far too lewd wah /obj/item/organ/genital/breasts/update_size()//wah - //var/mob/living/carbon/human/o = owner - //var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") - //message_admins("Breast size at start: [size], [cached_size], [owner]") - if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??) + + if(!ishuman(owner) || !owner) + return + if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??) - fixed to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.") src.Remove(owner) switch(round(cached_size)) @@ -113,8 +113,7 @@ statuscheck = TRUE if(16 to INFINITY) //if Rediculous size = cached_size - //message_admins("1. [breast_values[size]] vs [breast_values[prev_size]] || [size] vs [prev_size]") - //message_admins("1. [prev_size] vs [breast_values[size]]") + if(round(cached_size) < 16)//Because byond doesn't count from 0, I have to do this. if (prev_size == 0) prev_size = "flat" @@ -133,8 +132,9 @@ var/mob/living/carbon/human/H = owner H.Force_update_genitals() prev_size = size - + /* for future use: else if (cached_size >= 16) if(size != "huge") to_chat(owner, "Your breasts [pick("swell up to", "flourish into", "expand into", "burst forth into", "grow eagerly into", "amplify into")] a hefty [uppertext(size)]cm diameter bosom.")// taking both of your hands to hold!.") size = "huge" + */ diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm index fb5f7739f0..553b7983f0 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/modular_citadel/code/modules/arousal/organs/penis.dm @@ -26,6 +26,8 @@ /obj/item/organ/genital/penis/update_size() var/mob/living/carbon/human/o = owner + if(!ishuman(o) || !o) + return if(cached_length < 0)//I don't actually know what round() does to negative numbers, so to be safe!! var/obj/item/organ/genital/penis/P = o.getorganslot("penis") to_chat(o, "You feel your tallywacker shrinking away from your body as your groin flattens out!") 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 0a1e32eda7..5273022c2a 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -379,28 +379,20 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING playerClone = TRUE M.next_move_modifier = 1 M.nutrition -= 500 - //reaction_mob(SM, )I forget what this is for + //Damage the clone SM.blood_volume = (BLOOD_VOLUME_NORMAL*SM.blood_ratio)/2 SM.adjustCloneLoss(60, 0) SM.setBrainLoss(40) SM.nutrition = startHunger/2 - //var/datum/reagents/SMR = SM - ///datum/reagents - //var/mob/living/carbon/human has a holder, carbon does not - // You need to add to a holder. - // reagentS not reagent (?) - //SM.create_reagents() - //Really hacky way to deal with this stupid problem I have + //Really hacky way to deal with this stupid problem I have, and heal the clone. I think around 30u will make a healthy clone. SM.reagents.add_reagent("SDGFheal", volume) - //holder.add_reagent("SDGFheal", volume) M.reagents.remove_reagent(src.id, 999) - //SMR = locate(/datum/reagents in SM) - //holder.trans_to(SMR, volume) //Give the new clone an idea of their character //SHOULD print last 5 messages said by the original to the clones chatbox + //I don't think it works however. var/list/say_log = M.logging[LOG_SAY] var/recent_speech if(LAZYLEN(say_log) > 5) @@ -567,12 +559,11 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.visible_message("[M] suddenly shudders, and splits into a funky smelling copy of themselves!") M.emote("scream") M.adjustToxLoss(30, 0) - var/mob/living/simple_animal/hostile/zombie/ZI = new(get_turf(M.loc)) + var/mob/living/simple_animal/hostile/unemployedclone/ZI = new(get_turf(M.loc)) ZI.damage_coeff = list(BRUTE = ((1 / volume)**0.25) , BURN = ((1 / volume)**0.1), TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) ZI.real_name = M.real_name//Give your offspring a big old kiss. ZI.name = M.real_name ZI.desc = "[M]'s clone, gone horribly wrong." - ZI.zombiejob = FALSE //ZI.updateappearance(mutcolor_update=1) M.reagents.remove_reagent(src.id, 20) else//easier to deal with @@ -631,7 +622,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M) . = ..() if(!ishuman(M)) //The monkey clause - if(volume >= 10) + if(volume >= 15) //To prevent monkey breast farms var/turf/T = get_turf(M) var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T) var/list/seen = viewers(8, T) @@ -649,12 +640,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") if(!B) H.emergent_genital_call() - message_admins("No breasts found on init!") + //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] - message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big! + //message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big! /datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size if(!ishuman(M))//Just in case @@ -662,7 +653,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/mob/living/carbon/human/H = M var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") if(!B) //If they don't have breasts, give them breasts. - message_admins("No breasts found!") + //message_admins("No breasts found!") var/obj/item/organ/genital/breasts/nB = new nB.Insert(M) if(nB) @@ -703,7 +694,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING if(P) P.cached_length = P.cached_length - 0.1 - message_admins("lewdsnek size: [P.size], [P.cached_length], [holder]") + //message_admins("lewdsnek size: [P.size], [P.cached_length], [holder]") P.update() if(T) T.Remove(M) @@ -758,7 +749,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING /datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M) . = ..() if(!ishuman(M)) //Just monkeying around. - if(volume >= 10) + if(volume >= 15) //to prevent monkey penis farms var/turf/T = get_turf(M) var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T) var/list/seen = viewers(8, T) @@ -1133,7 +1124,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y //ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth //InverseChemVal = 0.5 //InverseChem = "enthrall" //At really impure vols, it just becomes 100% inverse - data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Isabelle Foster") + data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo") creatorID = "honkatonkbramblesnatch"//ckey creatorGender = "Mistress" creatorName = "Fermis Yakumo" @@ -1284,7 +1275,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y DoNotSplit = TRUE var/mob/living/carbon/love -/datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system. +/datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system,Gives a positive moodlet if close, gives brain damagea and a negative moodlet if not close enough. if(!M.has_status_effect(STATUS_EFFECT_INLOVE)) var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers for(var/victim in seen) @@ -1310,7 +1301,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y M.Stun(10) M.emote("whimper")//does this exist? to_chat(M, " You're overcome with a desire to see [love].") - M.adjustBrainLoss(5) + M.adjustBrainLoss(1)//I found out why everyone was so damaged! ..() /datum/reagent/fermi/enthrallExplo/on_mob_delete(mob/living/carbon/M) @@ -1458,6 +1449,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y ImpureChem = "naninte_b_goneTox" //If you make an inpure chem, it stalls growth InverseChemVal = 0.25 InverseChem = "naninte_b_goneTox" //At really impure vols, it just becomes 100% inverse + taste_description = "what can only be described as licking a battery." pH = 9 /datum/reagent/fermi/naninte_b_gone/on_mob_life(mob/living/carbon/C) @@ -1465,13 +1457,13 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y GET_COMPONENT_FROM(N, /datum/component/nanites, C) if(isnull(N)) return ..() - N.regen_rate = -0.25//This seems really high + N.nanite_volume = -0.55//0.5 seems to be the default to me, so it'll neuter them. ..() /datum/reagent/fermi/naninte_b_gone/overdose_process(mob/living/carbon/C) //var/component/nanites/N = M.GetComponent(/datum/component/nanites) GET_COMPONENT_FROM(N, /datum/component/nanites, C) - if(prob(20)) + if(prob(5)) to_chat(C, "The residual voltage from the nanites causes you to seize up!") C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) if(prob(10)) @@ -1481,7 +1473,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y to_chat(C, "The nanintes short circuit within your system!") if(isnull(N)) return ..() - N.regen_rate = -1//12.5 seems crazy high? + N.nanite_volume = -2//12.5 seems crazy high? ..() //Unobtainable, used if SDGF is impure but not too impure @@ -1493,10 +1485,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y //Increases shock events. /datum/reagent/fermi/naninte_b_goneTox/on_mob_life(mob/living/carbon/C)//Damages the taker if their purity is low. Extended use of impure chemicals will make the original die. (thus can't be spammed unless you've very good) - if(prob(10)) + if(prob(5)) to_chat(C, "The residual voltage in your system causes you to seize up!") C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE) - if(prob(10)) + if(prob(50)) //empulse((get_turf(C)), 2, 1, 1)//So the nanites randomize var/atom/T = C T.emp_act(EMP_HEAVY) @@ -1605,7 +1597,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y /datum/reagent/fermi/fermiABuffer/on_new() if(LAZYLEN(holder.reagent_list) == 1) return - pH = ((holder.pH * holder.total_volume)+(3 * src.volume))/(holder.total_volume + src.volume) + pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume) holder.remove_reagent(src.id, 1000) ..() @@ -1621,7 +1613,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y /datum/reagent/fermi/fermiBBuffer/on_new() if(LAZYLEN(holder.reagent_list) == 1) return - pH = ((holder.pH * holder.total_volume)+(11 * src.volume))/(holder.total_volume + src.volume) + pH = ((holder.pH * holder.total_volume)+(pH * src.volume))/(holder.total_volume + src.volume) holder.remove_reagent(src.id, 1000) ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index f9655777c7..654f7f6073 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -101,7 +101,7 @@ name = "Synthetic-derived growth factor" id = "SDGF" results = list("SDGF" = 0.3) - required_reagents = list("stable_plasma" = 0.5, "slimejelly" = 0.5, "synthflesh" = 1, "blood" = 1) + required_reagents = list("stable_plasma" = 0.5, "slimejelly" = 0.5, "synthflesh" = 0.1, "blood" = 0.1) mix_message = "the reaction gives off a blorble!" //FermiChem vars: OptimalTempMin = 600 // Lower area of bell curve for determining heat based rate reactions @@ -115,7 +115,7 @@ CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value) ThermicConstant = -5 // Temperature change per 1u produced HIonRelease = 0.05 // pH change per 1u reaction - RateUpLim = 20 // Optimal/max rate possible if all conditions are perfect + RateUpLim = 2 // Optimal/max rate possible if all conditions are perfect FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics FermiExplode = TRUE // If the chemical explodes in a special way PurityMin = 0.25 @@ -151,7 +151,7 @@ CurveSharppH = 2 ThermicConstant = 1 HIonRelease = 0.5 - RateUpLim = 50 + RateUpLim = 5 FermiChem = TRUE FermiExplode = TRUE PurityMin = 0.1 @@ -183,7 +183,7 @@ CurveSharppH = 2 ThermicConstant = 1 HIonRelease = -0.5 - RateUpLim = 50 + RateUpLim = 5 FermiChem = TRUE FermiExplode = TRUE PurityMin = 0.1 @@ -201,8 +201,8 @@ /datum/chemical_reaction/fermi/astral //done //BORKEN name = "Astrogen" id = "astral" - results = list("astral" = 0.5) - required_reagents = list("eigenstate" = 0.1, "plasma" = 0.2, "synaptizine" = 0.1, "aluminium" = 0.5) + results = list("astral" = 5) + required_reagents = list("eigenstate" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5) //FermiChem vars: OptimalTempMin = 700 OptimalTempMax = 800 @@ -213,9 +213,9 @@ CatalystFact = 0 CurveSharpT = 1 CurveSharppH = 1 - ThermicConstant = 20 + ThermicConstant = 25 HIonRelease = -0.5 - RateUpLim = 20 + RateUpLim = 10 FermiChem = TRUE FermiExplode = TRUE PurityMin = 0.25 // explode purity! @@ -225,7 +225,7 @@ name = "MKUltra" id = "enthrall" results = list("enthrall" = 0.3) - required_reagents = list("iron" = 0.1, "iodine" = 0.1) + required_reagents = list("iron" = 1, "iodine" = 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!" @@ -241,7 +241,7 @@ CurveSharppH = 4 ThermicConstant = 10 HIonRelease = -0.1 - RateUpLim = 5 + RateUpLim = 2 FermiChem = TRUE FermiExplode = TRUE PurityMin = 0.2 @@ -291,13 +291,13 @@ ExplodeTemp = 750 OptimalpHMin = 2 OptimalpHMax = 5 - ReactpHLim = 1 + ReactpHLim = 3 //CatalystFact = 0 //To do 1 - CurveSharpT = 4 + CurveSharpT = 8 CurveSharppH = 0.5 ThermicConstant = -2 HIonRelease = -0.05 - RateUpLim = 50 + RateUpLim = 5 FermiChem = TRUE FermiExplode = TRUE PurityMin = 0.5 @@ -314,7 +314,7 @@ name = "Furranium" id = "furranium" results = list("furranium" = 0.5) - required_reagents = list("aphro" = 0.1, "moonsugar" = 0.1, "silver" = 0.2, "salglu_solution" = 0.1) + required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1) //mix_message = "" //FermiChem vars: OptimalTempMin = 350 @@ -328,10 +328,13 @@ CurveSharppH = 0.5 ThermicConstant = -10 HIonRelease = -0.1 - RateUpLim = 20 + RateUpLim = 2 FermiChem = TRUE PurityMin = 0.30 +//FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. +//There's a weird rounding error or something ugh. + //Nano-b-gone /datum/chemical_reaction/fermi/naninte_b_gone//done test name = "Naninte bain" @@ -352,7 +355,7 @@ CurveSharppH = 1 ThermicConstant = 5 HIonRelease = 0.01 - RateUpLim = 200 + RateUpLim = 20 FermiChem = TRUE PurityMin = 0.15 @@ -365,19 +368,21 @@ OptimalTempMin = 250 OptimalTempMax = 500 ExplodeTemp = 9999 //check to see overflow doesn't happen! - OptimalpHMin = 2.5 - OptimalpHMax = 3.5 + OptimalpHMin = 2 + OptimalpHMax = 6 ReactpHLim = 0 //CatalystFact = 0 //To do 1 CurveSharpT = 1 CurveSharppH = 0 ThermicConstant = 0 HIonRelease = -0.01 - RateUpLim = 200 + RateUpLim = 20 FermiChem = TRUE +//This reaction bugs and turns everything in it to FermiABuffer - but now it's a feature instead! /datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this var/datum/reagent/fermi/fermiABuffer/Fa = locate(/datum/reagent/fermi/fermiABuffer) in my_atom.reagents.reagent_list + Fa.pH = my_atom.reagents.pH Fa.data = "merge" /datum/chemical_reaction/fermi/fermiBBuffer//done test @@ -390,17 +395,19 @@ OptimalTempMin = 250 OptimalTempMax = 500 ExplodeTemp = 9999 //check to see overflow doesn't happen! - OptimalpHMin = 10.5 - OptimalpHMax = 11.5 + OptimalpHMin = 8 + OptimalpHMax = 12 ReactpHLim = 0 //CatalystFact = 0 //To do 1 CurveSharpT = 1 CurveSharppH = 0 ThermicConstant = 0 HIonRelease = 0.01 - RateUpLim = 200 + RateUpLim = 15 FermiChem = TRUE +//This reaction bugs and turns everything in it to FermiBBuffer - but now it's a feature instead! /datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this var/datum/reagent/fermi/fermiBBuffer/Fb = locate(/datum/reagent/fermi/fermiBBuffer) in my_atom.reagents.reagent_list + Fb.pH = my_atom.reagents.pH Fb.data = "merge" diff --git a/modular_citadel/code/modules/reagents/objects/items.dm b/modular_citadel/code/modules/reagents/objects/items.dm index b9adf8f7c3..26636f049a 100644 --- a/modular_citadel/code/modules/reagents/objects/items.dm +++ b/modular_citadel/code/modules/reagents/objects/items.dm @@ -51,7 +51,7 @@ if(used == TRUE) to_chat(user, "[user] has already been used!") return - switch(cont.reagents.pH) + switch(round(cont.reagents.pH, 1)) if(14 to INFINITY) color = "#462c83" if(13 to 14) @@ -82,5 +82,5 @@ color = "#ef1d26" if(-INFINITY to 1) color = "#c6040c" - desc += " The paper looks to be around a pH of [round(cont.reagents.pH)]" + desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]" used = TRUE