diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index bcd08b1853..e34f34675c 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -528,6 +528,16 @@ /datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume) chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life") // Lol. +//This is missing, I'm adding it back (see tgwiki). Not sure why we don't have it. +/datum/chemical_reaction/life_friendly + name = "Life (Friendly)" + id = "life_friendly" + required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1) + required_temp = 374 + +/datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) + chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (friendly)", FRIENDLY_SPAWN) //Pray for cute cats + /datum/chemical_reaction/corgium name = "corgium" id = "corgium" diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index df51df8ead..54fbea8ba1 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -120,6 +120,10 @@ /datum/status_effect/chem/PElarger/tick(mob/living/carbon/M) var/mob/living/carbon/human/o = owner var/obj/item/organ/genital/penis/P = o.getorganslot("penis") + if(!P) + o.remove_movespeed_modifier("hugedick") + o.next_move_modifier = 1 + owner.remove_status_effect(src) message_admins("PElarge tick!") var/items = o.get_contents() for(var/obj/item/W in items) @@ -140,6 +144,42 @@ o.next_move_modifier = (round(P.length) - 11) ..() + +/*////////////////////////////////////////// + Mind control functions +/////////////////////////////////////////// +*/ + +/datum/status_effect/chem/enthral + id = "enthral" + var/mob/living/E //E for enchanter + //var/mob/living/V = list() //V for victims + var/resistance = 0 + var/phase = 0 + var/enthralID + +/datum/status_effect/chem/enthra/on_apply(mob/living/carbon/M) + if(M.ID == ) + + +/datum/status_effect/chem/enthral/tick(mob/living/carbon/M) + redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) + switch(phase) + if(0) + return + if(1) + + + + +/datum/status_effect/chem/enthral/proc/owner_resist(mob/living/carbon/M) + to_chat(owner, "You attempt to shake the mental cobwebs from your mind!") + if (M.canbearoused) + resistance += ((100 - M.arousalloss/100)/100) + else + resistance += 0.2 + +/* /datum/status_effect/chem/OwO id = "OwO" @@ -159,7 +199,7 @@ else if(prob(30)) message = replacetext(message, ".", "uwu.") message = lowertext(message) - +*/ /*Doesn't work /datum/status_effect/chem/SDGF/candidates id = "SGDFCandi" 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 0541d6ce71..b296bd293a 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -211,7 +211,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING 5. If people are being arses when they're a clone, slap them for it, they are told to NOT bugger around with someone else character, if it gets bad I'll add a blacklist, or do a check to see if you've played X amount of hours. 5.1 Another solution I'm okay with is to rename the clone to [M]'s clone, so it's obvious, this obviously ruins anyone trying to clone themselves to get an alibi however. I'd prefer this to not be the case. 5.2 Additionally, this chem is a soft buff to changelings, which apparently need a buff! - 5.3 Other similar things exist though; impostors, split personalites, abductors, ect. + 5.3 Other similar things exist already though in the codebase; impostors, split personalites, abductors, ect. 6. Giving this to someone without concent is against space law and gets you sent to gulag. */ @@ -268,6 +268,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.mind.enslave_mind_to_creator(M) //If they're a zombie, they can try to negate it with this. + //I seriously wonder if anyone will ever use this function. if(M.getorganslot(ORGAN_SLOT_ZOMBIE))//sure, it "treats" it, but "you've" still got it. Doesn't always work as well; needs a ghost. var/obj/item/organ/zombie_infection/ZI = M.getorganslot(ORGAN_SLOT_ZOMBIE) ZI.Remove(M) @@ -402,6 +403,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustCloneLoss(-2, 0) M.setBrainLoss(-1) M.nutrition += 10 + ..() //Unobtainable, used if SDGF is impure but not too impure /datum/reagent/fermi/SDGFtox @@ -410,7 +412,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING description = "A chem that makes Fermis angry at you if you're reading this, how did you get this???" metabolization_rate = 1 -/datum/reagent/fermi/SDGFtox/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting - the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated) +/datum/reagent/fermi/SDGFtox/on_mob_life(mob/living/carbon/M)//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) M.blood_volume -= 10 M.adjustCloneLoss(2, 0) ..() @@ -722,17 +724,27 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING qdel(M) //Approx 60minutes till death from initial addiction ..() -/datum/reagent/fermi/mindControl - name = "Astrogen" - id = "" - description = "An opalescent murky liquid that is said to distort your soul from your being." +/datum/reagent/fermi/enthral + name = "Need a name" + id = "enthral" + description = "Need a description." color = "#A080H4" // rgb: , 0, 255 taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses" metabolization_rate = 0 overdose_threshold = 20 addiction_threshold = 30 addiction_stage1_end = 9999//Should never end. - creatorID = //add here + var/creatorID //add here + +/datum/reagent/fermi/enthral/on_mob_life(mob/living/carbon/M) + if(!creatorID) + CRASH("Something went wrong in enthral creation") + if(M.ID == creatorID) + var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE) + var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/silver + T.Remove(M) + nT.Insert(M) + qdel(T) //Requires player to be within vicinity of creator //bonuses to mood @@ -740,6 +752,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Addiction is applied when creator is out of viewer // +/////////////////////////////////////////////////////////////////////////////////////////////////// + /datum/reagent/fermi/furranium name = "Furranium" id = "furranium" diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index a4dd17914a..23ad696d46 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -101,3 +101,35 @@ FermiChem = TRUE FermiExplode = FALSE ImpureChem = "carpotoxin" + +/datum/chemical_reaction/enthral + name = "need a name" + id = "enthral" + results = list("enthral" = 3) + required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1) + //required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10) + //FermiChem vars: + OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions + OptimalTempMax = 500 // Upper end for above + ExplodeTemp = 550 // Temperature at which reaction explodes + OptimalpHMin = 4 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) + OptimalpHMax = 9.5 // Higest value for above + ReactpHLim = 2 // How far out pH wil react, giving impurity place (Exponential phase) + CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst) + CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value) + CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value) + ThermicConstant = 20 // Temperature change per 1u produced + HIonRelease = 0.01 // pH change per 1u reaction + RateUpLim = 5 // Optimal/max rate possible if all conditions are perfect + FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics + FermiExplode = FALSE // If the chemical explodes in a special way + //ImpureChem = "SDGFTox" // What chemical is metabolised with an inpure reaction + //InverseChemVal = 0.5 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising + //InverseChem = "SDZF" // What chem is metabolised when purity is below InverseChemVal + + +/datum/chemical_reaction/enthral/on_reaction(datum/reagents/holder) + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + var/enthralID = B.get_blood_id() + var/datum/reagent/fermi/enthral/E = locate(/datum/reagent/fermi/enthral) in holder.reagent_list + E.enthralID = enthralID