This commit is contained in:
Ghommie
2019-10-17 00:50:30 +02:00
539 changed files with 63595 additions and 58228 deletions
@@ -136,7 +136,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
color = "#660015" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please.
DoNotSplit = TRUE
metabolization_rate = 0.1//It has to be slow, so there's time for the effect.
data = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
var/creatorID //ckey
@@ -144,20 +143,19 @@ Creating a chem with a low purity will make you permanently fall in love with so
var/creatorName
var/mob/living/creator
pH = 10
OnMobMergeCheck = TRUE //Procs on_mob_add when merging into a human
chemical_flags = REAGENT_ONMOBMERGE | REAGENT_DONOTSPLIT //Procs on_mob_add when merging into a human
can_synth = FALSE
/datum/reagent/fermi/enthrall/test
name = "MKUltraTest"
id = "enthrallTest"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of joy, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it."
description = "A forbidden deep red mixture that makes you like Fermis a little too much. Unobtainable and due to be removed from the wiki."
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
creatorID = "honkatonkbramblesnatch"//ckey
creatorGender = "Mistress"
creatorName = "Fermis Yakumo"
purity = 1
DoNotSplit = TRUE
/datum/reagent/fermi/enthrall/test/on_new()
id = "enthrall"
@@ -295,18 +293,18 @@ Creating a chem with a low purity will make you permanently fall in love with so
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Thralls mindbroken")
/datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M)
M.adjustBrainLoss(0.2)//should be ~30 in total
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2)//should be ~30 in total
..()
//Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system.
/datum/reagent/fermi/enthrallExplo//Created in a gas cloud when it explodes
name = "MKUltra"
name = "Gaseous MKUltra"
id = "enthrallExplo"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of desire, inducing a chemial love for another. Also, how the HECC did you get this?"
description = "A forbidden deep red gas that overwhelms a foreign body, causing the person they next lay their eyes on to become more interesting. Studies have shown that people are 66% more likely to make friends with this in the air. Produced when MKUltra explodes."
color = "#2C051A" // rgb: , 0, 255
metabolization_rate = 0.1
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses."
DoNotSplit = TRUE
chemical_flags = REAGENT_DONOTSPLIT
can_synth = FALSE
var/mob/living/carbon/love
@@ -342,7 +340,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
M.Stun(10)
M.emote("whimper")//does this exist?
to_chat(M, "[(M.client?.prefs.lewdchem?"<span class='love'>":"<span class='warning'>")] You're overcome with a desire to see [love].</span>")
M.adjustBrainLoss(0.5)//I found out why everyone was so damaged!
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5)//I found out why everyone was so damaged!
..()
/datum/reagent/fermi/enthrallExplo/on_mob_delete(mob/living/carbon/M)
@@ -54,9 +54,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/pollStarted = FALSE
var/location_created
var/startHunger
ImpureChem = "SDGFtox"
InverseChemVal = 0.5
InverseChem = "SDZF"
impure_chem = "SDGFtox"
inverse_chem_val = 0.5
inverse_chem = "SDZF"
can_synth = TRUE
@@ -68,11 +68,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
startHunger = M.nutrition
if(pollStarted == FALSE)
pollStarted = TRUE
candies = pollGhostCandidates("Do you want to play as a clone of [M], and do you agree to respect their character and act in a similar manner to them? Do not engage in ERP as them unless you have LOOC permission from them, and ensure it is permission from the original, not a clone.")
candies = pollGhostCandidates("Do you want and agree to play as a clone of [M], respect their character and not engage in ERP without permission from the original?", ignore_category = POLL_IGNORE_CLONE)
log_game("FERMICHEM: [M] ckey: [M.key] has taken SDGF, and ghosts have been polled.")
if(20 to INFINITY)
if(LAZYLEN(candies) && playerClone == FALSE) //If there's candidates, clone the person and put them in there!
log_game("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [candies]")
to_chat(M, "<span class='warning'>The cells reach a critical micelle concentration, nucleating rapidly within your body!</span>")
var/typepath = M.type
var/mob/living/carbon/human/fermi_Gclone = new typepath(M.loc)
@@ -86,12 +85,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
candies = shuffle(candies)//Shake those ghosts up!
for(var/mob/dead/observer/C2 in candies)
if(C2.key && C2)
SM.key = C2.key
C2.transfer_ckey(SM, FALSE)
message_admins("Ghost candidate found! [C2] key [C2.key] is becoming a clone of [M] key: [M.key] (They agreed to respect the character they're becoming, and agreed to not ERP without express permission from the original.)")
log_game("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [C2]")
break
else
candies =- C2
candies -= C2
if(!SM.mind) //Something went wrong, use alt mechanics
return ..()
SM.mind.enslave_mind_to_creator(M)
@@ -123,7 +122,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Damage the clone
SM.blood_volume = (BLOOD_VOLUME_NORMAL*SM.blood_ratio)/2
SM.adjustCloneLoss(60, 0)
SM.setBrainLoss(40)
SM.setOrganLoss(ORGAN_SLOT_BRAIN, 40)
SM.nutrition = startHunger/2
//Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger.
@@ -249,7 +248,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.adjustToxLoss(-(bodydamage/10), 0)
SM.blood_volume = (BLOOD_VOLUME_NORMAL*SM.blood_ratio)/1.5
SM.adjustCloneLoss((bodydamage/10), 0)
SM.setBrainLoss((bodydamage/10))
SM.setOrganLoss(ORGAN_SLOT_BRAIN, (bodydamage/10))
SM.nutrition = 400
if(bodydamage>200)
SM.gain_trauma_type(BRAIN_TRAUMA_MILD)
@@ -280,8 +279,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
//Unobtainable, used in clone spawn.
/datum/reagent/fermi/SDGFheal
name = "synthetic-derived growth factor"
name = "synthetic-derived healing factor"
id = "SDGFheal"
description = "Leftover SDGF is transferred into the resulting clone, which quickly heals up the stresses from suddenly splitting. Restores blood, nutrition, and repaires brain and clone damage quickly. Only obtainable from using excess SDGF, and only enters the cloned body."
metabolization_rate = 1
can_synth = FALSE
@@ -289,34 +289,35 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 10
M.adjustCloneLoss(-2, 0)
M.setBrainLoss(-1)
M.setOrganLoss(ORGAN_SLOT_BRAIN, -1)
M.nutrition += 10
..()
//Unobtainable, used if SDGF is impure but not too impure
/datum/reagent/fermi/SDGFtox
name = "synthetic-derived growth factor"
/datum/reagent/impure/SDGFtox
name = "Synthetic-derived apoptosis factor"
id = "SDGFtox"
description = "A chem that makes a certain chemcat angry at you if you're reading this, how did you get this???"//i.e. tell me please, figure it's a good way to get pinged for bugfixes.
description = "Impure synthetic-derived growth factor causes certain cells to undergo cell death, causing clone damage, and damaging blood cells."//i.e. tell me please, figure it's a good way to get pinged for bugfixes.
metabolization_rate = 1
can_synth = FALSE
/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)
/datum/reagent/impure/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)
..()
//Fail state of SDGF
/datum/reagent/fermi/SDZF
name = "synthetic-derived growth factor"
/datum/reagent/impure/SDZF
name = "synthetic-derived zombie factor"
id = "SDZF"
description = "A horribly peverse mass of Embryonic stem cells made real by the hands of a failed chemist. This message should never appear, how did you manage to get a hold of this?"
description = "A horribly peverse mass of Embryonic stem cells made real by the hands of a failed chemist. Emulates normal synthetic-derived growth factor, but produces a hostile zombie at the end of it."
color = "#a502e0" // rgb: 96, 0, 255
metabolization_rate = 0.5 * REAGENTS_METABOLISM
var/startHunger
can_synth = TRUE
chemical_flags = REAGENT_SNEAKYNAME
/datum/reagent/fermi/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
/datum/reagent/impure/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
switch(current_cycle)//Pretends to be normal
if(20)
to_chat(M, "<span class='notice'>You feel the synethic cells rest uncomfortably within your body as they start to pulse and grow rapidly.</span>")
@@ -28,7 +28,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
var/datum/mind/originalmind
var/antiGenetics = 255
var/sleepytime = 0
InverseChemVal = 0.25
inverse_chem_val = 0.25
can_synth = FALSE
/datum/action/chem/astral
@@ -26,9 +26,9 @@
taste_description = "a milky ice cream like flavour."
overdose_threshold = 17
metabolization_rate = 0.25
ImpureChem = "BEsmaller" //If you make an inpure chem, it stalls growth
InverseChemVal = 0.35
InverseChem = "BEsmaller" //At really impure vols, it just becomes 100% inverse
impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.35
inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse
can_synth = FALSE
var/message_spam = FALSE
@@ -126,7 +126,7 @@
/datum/reagent/fermi/BEsmaller
name = "Modesty milk"
id = "BEsmaller"
description = "A volatile collodial mixture derived from milk that encourages mammary reduction via a potent estrogen mix."
description = "A volatile collodial mixture derived from milk that encourages mammary reduction via a potent estrogen mix. Produced by reacting impure Succubus milk."
color = "#E60584" // rgb: 96, 0, 255
taste_description = "a milky ice cream like flavour."
metabolization_rate = 0.25
@@ -193,9 +193,9 @@
taste_description = "chinese dragon powder"
overdose_threshold = 17 //ODing makes you male and removes female genitals
metabolization_rate = 0.5
ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth
InverseChemVal = 0.35
InverseChem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead.
impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.35
inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead.
can_synth = FALSE
var/message_spam = FALSE
@@ -283,7 +283,7 @@
/datum/reagent/fermi/PEsmaller // Due to cozmo's request...!
name = "Chastity draft"
id = "PEsmaller"
description = "A volatile collodial mixture derived from various masculine solutions that encourages a smaller gentleman's package via a potent testosterone mix, formula derived from a collaboration from Fermichem and Doctor Ronald Hyatt, who is well known for his phallus palace."
description = "A volatile collodial mixture derived from various masculine solutions that encourages a smaller gentleman's package via a potent testosterone mix. Produced by reacting impure Incubus draft."
color = "#888888" // This is greyish..?
taste_description = "chinese dragon powder"
metabolization_rate = 0.5
@@ -6,7 +6,10 @@
id = "fermi"
taste_description = "affection and love!"
can_synth = FALSE
SplitChem = TRUE
//SplitChem = TRUE
impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction
inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising
inverse_chem = "fermiTox"
//This should process fermichems to find out how pure they are and what effect to do.
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M, amount)
@@ -36,7 +39,7 @@
taste_description = "like jerky, whiskey and an off aftertaste of a crypt."
metabolization_rate = 0.2
overdose_threshold = 25
DoNotSplit = TRUE
chemical_flags = REAGENT_DONOTSPLIT
pH = 4
can_synth = TRUE
@@ -81,9 +84,9 @@
color = "#f9b9bc" // rgb: , 0, 255
taste_description = "dewicious degenyewacy"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
InverseChemVal = 0
inverse_chem_val = 0
var/obj/item/organ/tongue/nT
DoNotSplit = TRUE
chemical_flags = REAGENT_DONOTSPLIT
pH = 5
var/obj/item/organ/tongue/T
can_synth = TRUE
@@ -165,14 +168,14 @@
//Writen by Trilby!! Embellsished a little by me.
/datum/reagent/fermi/nanite_b_gone
name = "Naninte bane"
name = "Nanite bane"
id = "nanite_b_gone"
description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system."
color = "#708f8f"
overdose_threshold = 15
ImpureChem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth
InverseChemVal = 0.25
InverseChem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse
impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth
inverse_chem_val = 0.25
inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse
taste_description = "what can only be described as licking a battery."
pH = 9
can_synth = FALSE
@@ -195,7 +198,7 @@
//empulse((get_turf(C)), 3, 2)//So the nanites randomize
var/atom/T = C
T.emp_act(EMP_HEAVY)
to_chat(C, "<span class='warning'>The nanites short circuit within your system!</b></span>")
to_chat(C, "<span class='warning'>You feel a strange tingling sensation come from your core.</b></span>")
if(isnull(N))
return ..()
N.nanite_volume = -2
@@ -205,10 +208,11 @@
O.emp_act(EMP_HEAVY)
/datum/reagent/fermi/nanite_b_goneTox
name = "Naninte bain"
name = "Electromagnetic crystals"
id = "nanite_b_goneTox"
description = "Poorly made, and shocks you!"
metabolization_rate = 1
description = "Causes items upon the patient to sometimes short out, as well as causing a shock in the patient, if the residual charge between the crystals builds up to sufficient quantities"
metabolization_rate = 0.5
chemical_flags = REAGENT_INVISIBLE
//Increases shock events.
/datum/reagent/fermi/nanite_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)
@@ -246,8 +250,7 @@
if((method==VAPOR) && (!C.wear_mask))
if(prob(20))
to_chat(C, "<span class='warning'>You can feel your lungs burning!</b></span>")
var/obj/item/organ/lungs/L = C.getorganslot(ORGAN_SLOT_LUNGS)
L.adjustLungLoss(acidstr*2, C)
C.adjustOrganLoss(ORGAN_SLOT_LUNGS, acidstr*2)
C.apply_damage(acidstr/5, BURN, target)
C.acid_act(acidstr, volume)
..()
@@ -274,7 +277,7 @@
name = "Fermis Test Reagent"
id = "fermiTest"
description = "You should be really careful with this...! Also, how did you get this?"
addProc = TRUE
chemical_flags = REAGENT_FORCEONNEW
can_synth = FALSE
/datum/reagent/fermi/fermiTest/on_new(datum/reagents/holder)
@@ -305,22 +308,6 @@
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1)
holder.clear_reagents()
/datum/reagent/fermi/fermiTox
name = "FermiTox"
id = "fermiTox"
description = "You should be really careful with this...! Also, how did you get this? You shouldn't have this!"
data = "merge"
color = "FFFFFF"
can_synth = FALSE
//I'm concerned this is too weak, but I also don't want deathmixes.
/datum/reagent/fermi/fermiTox/on_mob_life(mob/living/carbon/C, method)
if(C.dna && istype(C.dna.species, /datum/species/jelly))
C.adjustToxLoss(-2)
else
C.adjustToxLoss(2)
..()
/datum/reagent/fermi/acidic_buffer
name = "Acidic buffer"
id = "acidic_buffer"
@@ -335,7 +322,7 @@
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return
return ..()
holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume))
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
@@ -357,7 +344,7 @@
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
return
return ..()
holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume))
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
@@ -6,9 +6,9 @@
color = "#68e83a"
pH = 8.6
overdose_threshold = 35
ImpureChem = "yamerol_tox"
InverseChemVal = 0.4
InverseChem = "yamerol_tox"
impure_chem = "yamerol_tox"
inverse_chem_val = 0.4
inverse_chem = "yamerol_tox"
can_synth = TRUE
/datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C)
@@ -16,9 +16,9 @@
var/obj/item/organ/lungs/L = C.getorganslot(ORGAN_SLOT_LUNGS)
if(T)
T.adjustTongueLoss(C, -2)//Fix the inputs me!
T.applyOrganDamage(-2)
if(L)
L.adjustLungLoss(-5, C)
C.adjustOrganLoss(ORGAN_SLOT_LUNGS, -5)
C.adjustOxyLoss(-2)
else
C.adjustOxyLoss(-10)
@@ -65,31 +65,87 @@
holder.remove_reagent(src.id, "10")
if(!C.getorganslot(ORGAN_SLOT_LUNGS))
var/obj/item/organ/lungs/L = new()
var/obj/item/organ/lungs/yamerol/L = new()
L.Insert(C)
to_chat(C, "<span class='notice'>You feel your lungs reform in your chest.</span>")
to_chat(C, "<span class='notice'>You feel the yamerol merge in your chest.</span>")
holder.remove_reagent(src.id, "10")
C.adjustOxyLoss(-3)
..()
/datum/reagent/fermi/yamerol_tox
name = "Yamerol"
/datum/reagent/impure/yamerol_tox
name = "Yamer oh no"
id = "yamerol_tox"
description = "For when you've trouble speaking or breathing, just yell YAMEROL! A chem that helps soothe any congestion problems and at high concentrations restores damaged lungs and tongues!"
description = "A dangerous, cloying toxin that stucks to a patients respiratory system, damaging their tongue, lungs and causing suffocation."
taste_description = "a weird, syrupy flavour, yamero"
color = "#68e83a"
pH = 8.6
/datum/reagent/fermi/yamerol_tox/on_mob_life(mob/living/carbon/C)
/datum/reagent/impure/yamerol_tox/on_mob_life(mob/living/carbon/C)
var/obj/item/organ/tongue/T = C.getorganslot(ORGAN_SLOT_TONGUE)
var/obj/item/organ/lungs/L = C.getorganslot(ORGAN_SLOT_LUNGS)
if(T)
T.adjustTongueLoss(C, 1)
T.applyOrganDamage(1)
if(L)
L.adjustLungLoss(4, C)
C.adjustOrganLoss(ORGAN_SLOT_LUNGS, 4)
C.adjustOxyLoss(3)
else
C.adjustOxyLoss(10)
..()
/datum/reagent/synthtissue
name = "Synthtissue"
id = "synthtissue"
description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties."
pH = 7.6
metabolization_rate = 0.05 //Give them time to graft
data = list("grown_volume" = 0, "injected_vol" = 0)
/datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
if(iscarbon(M))
var/target = M.zone_selected
if (M.stat == DEAD)
show_message = 0
if(method in list(PATCH, TOUCH))
M.apply_damage(reac_volume*-1.5, BRUTE, target)
M.apply_damage(reac_volume*-1.5, BURN, target)
if(show_message)
to_chat(M, "<span class='danger'>You feel your [target] heal! It stings like hell!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
if(method==INJECT)
data["injected_vol"] = reac_volume
..()
/datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C)
if(!iscarbon(C))
return ..()
if(data["injected_vol"] > 14)
if(data["grown_volume"] > 175) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u)
if(volume >= 14)
if(C.regenerate_organs(only_one = TRUE))
C.reagents.remove_reagent(id, 15)
to_chat(C, "<span class='notice'>You feel something reform inside of you!</span>")
data["injected_vol"] -= metabolization_rate
..()
/datum/reagent/synthtissue/on_merge(passed_data)
if(!passed_data)
return ..()
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
if(iscarbon(holder.my_atom))
data["injected_vol"] = data["injected_vol"] + passed_data["injected_vol"]
passed_data["injected_vol"] = 0
..()
/datum/reagent/synthtissue/on_new(passed_data)
if(!passed_data)
return ..()
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
..()
//NEEDS ON_MOB_DEAD()
@@ -2,15 +2,33 @@
mix_sound = 'sound/effects/bubbles.ogg'
//Called for every reaction step
/datum/chemical_reaction/proc/FermiCreate(holder)
/datum/chemical_reaction/proc/FermiCreate(datum/reagents/holder, added_volume, added_purity)
return
//Called when reaction STOP_PROCESSING
/datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder)
/datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder, var/atom/my_atom, reactVol)
if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE)
for(var/id in results)
var/datum/reagent/R = my_atom.reagents.has_reagent("[id]")
if(R.purity == 1)
continue
var/cached_volume = R.volume
if(clear_conversion == REACTION_CLEAR_INVERSE && R.inverse_chem)
if(R.inverse_chem_val > R.purity)
my_atom.reagents.remove_reagent(R.id, cached_volume, FALSE)
my_atom.reagents.add_reagent(R.inverse_chem, cached_volume, FALSE, other_purity = 1)
else if (clear_conversion == REACTION_CLEAR_IMPURE && R.impure_chem)
var/impureVol = cached_volume * (1 - R.purity)
my_atom.reagents.remove_reagent(R.id, (impureVol), FALSE)
my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1)
R.cached_purity = R.purity
R.purity = 1
return
//Called when temperature is above a certain threshold, or if purity is too low.
/datum/chemical_reaction/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE)
/datum/chemical_reaction/proc/FermiExplode(datum/reagents/R0, var/atom/my_atom, volume, temp, pH, Exploding = FALSE)
if (Exploding == TRUE)
return
@@ -58,7 +76,7 @@
var/datum/effect_system/smoke_spread/chem/s = new()
R.my_atom = my_atom //Give the gas a fingerprint
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding
for (var/datum/reagent/reagent in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding
R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug.
if (reagent.purity < 0.6)
@@ -86,8 +104,8 @@
/datum/chemical_reaction/fermi/eigenstate
name = "Eigenstasium"
id = "eigenstate"
results = list("eigenstate" = 0.1)
required_reagents = list("bluespace" = 0.1, "stable_plasma" = 0.1, "sugar" = 0.1)
results = list("eigenstate" = 1)
required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "sugar" = 1)
mix_message = "the reaction zaps suddenly!"
//FermiChem vars:
OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
@@ -120,8 +138,8 @@
/datum/chemical_reaction/fermi/SDGF
name = "Synthetic-derived growth factor"
id = "SDGF"
results = list("SDGF" = 0.3)
required_reagents = list("stable_plasma" = 0.15, "clonexadone" = 0.15, "uranium" = 0.15, "synthflesh" = 0.15)
results = list("SDGF" = 3)
required_reagents = list("stable_plasma" = 1.5, "clonexadone" = 1.5, "uranium" = 1.5, "synthflesh" = 1.5)
mix_message = "the reaction gives off a blorble!"
required_temp = 1
//FermiChem vars:
@@ -161,8 +179,8 @@
/datum/chemical_reaction/fermi/breast_enlarger
name = "Sucubus milk"
id = "breast_enlarger"
results = list("breast_enlarger" = 0.8)
required_reagents = list("salglu_solution" = 0.1, "milk" = 0.1, "synthflesh" = 0.2, "silicon" = 0.3, "aphro" = 0.3)
results = list("breast_enlarger" = 8)
required_reagents = list("salglu_solution" = 1, "milk" = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3)
mix_message = "the reaction gives off a mist of milk."
//FermiChem vars:
OptimalTempMin = 200
@@ -201,8 +219,8 @@
/datum/chemical_reaction/fermi/penis_enlarger
name = "Incubus draft"
id = "penis_enlarger"
results = list("penis_enlarger" = 0.8)
required_reagents = list("blood" = 0.5, "synthflesh" = 0.2, "carbon" = 0.2, "aphro" = 0.2, "salglu_solution" = 0.1,)
results = list("penis_enlarger" = 8)
required_reagents = list("blood" = 5, "synthflesh" = 2, "carbon" = 2, "aphro" = 2, "salglu_solution" = 1)
mix_message = "the reaction gives off a spicy mist."
//FermiChem vars:
OptimalTempMin = 200
@@ -240,8 +258,8 @@
/datum/chemical_reaction/fermi/astral
name = "Astrogen"
id = "astral"
results = list("astral" = 0.5)
required_reagents = list("eigenstate" = 0.1, "plasma" = 0.3, "synaptizine" = 0.1, "aluminium" = 0.5)
results = list("astral" = 5)
required_reagents = list("eigenstate" = 1, "plasma" = 3, "synaptizine" = 1, "aluminium" = 5)
//FermiChem vars:
OptimalTempMin = 700
OptimalTempMax = 800
@@ -263,10 +281,10 @@
/datum/chemical_reaction/fermi/enthrall/ //check this
name = "MKUltra"
id = "enthrall"
results = list("enthrall" = 0.5)
results = list("enthrall" = 5)
//required_reagents = list("iron" = 1, "iodine" = 1) Test vars
//required_reagents = list("cocoa" = 0.1, "astral" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1)
required_reagents = list("cocoa" = 0.1, "bluespace" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1) //TEMPORARY UNTIL HEADMINS GIVE THE OKAY FOR MK USE.
//required_reagents = list("cocoa" = 1, "astral" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1)
required_reagents = list("cocoa" = 1, "bluespace" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1) //TEMPORARY UNTIL HEADMINS GIVE THE OKAY FOR MK USE.
required_catalysts = list("blood" = 1)
mix_message = "the reaction gives off a burgundy plume of smoke!"
//FermiChem vars:
@@ -342,8 +360,8 @@
/datum/chemical_reaction/fermi/hatmium // done
name = "Hat growth serum"
id = "hatmium"
results = list("hatmium" = 0.5)
required_reagents = list("ethanol" = 0.1, "nutriment" = 0.3, "cooking_oil" = 0.2, "iron" = 0.1, "gold" = 0.3)
results = list("hatmium" = 5)
required_reagents = list("ethanol" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "gold" = 3)
//mix_message = ""
//FermiChem vars:
OptimalTempMin = 500
@@ -377,8 +395,8 @@
/datum/chemical_reaction/fermi/furranium
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)
results = list("furranium" = 5)
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1)
mix_message = "You think you can hear a howl come from the beaker."
//FermiChem vars:
OptimalTempMin = 350
@@ -397,7 +415,7 @@
PurityMin = 0.3
/datum/chemical_reaction/fermi/furranium/organic
required_reagents = list("aphro" = 0.1, "catnip" = 0.1, "silver" = 0.2, "salglu_solution" = 0.1)
required_reagents = list("aphro" = 1, "catnip" = 1, "silver" = 2, "salglu_solution" = 1)
//FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10.
//There's a weird rounding error or something ugh.
@@ -428,14 +446,14 @@
/datum/chemical_reaction/fermi/acidic_buffer//done test
name = "Acetic acid buffer"
id = "acidic_buffer"
results = list("acidic_buffer" = 2) //acetic acid
required_reagents = list("salglu_solution" = 0.2, "ethanol" = 0.6, "oxygen" = 0.6, "water" = 0.6)
results = list("acidic_buffer" = 10) //acetic acid
required_reagents = list("salglu_solution" = 1, "ethanol" = 3, "oxygen" = 3, "water" = 3)
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
ExplodeTemp = 9999 //check to see overflow doesn't happen!
OptimalpHMin = 2
OptimalpHMax = 6
OptimalpHMin = 0
OptimalpHMax = 14
ReactpHLim = 0
//CatalystFact = 0 //To do 1
CurveSharpT = 4
@@ -455,15 +473,15 @@
/datum/chemical_reaction/fermi/basic_buffer//done test
name = "Ethyl Ethanoate buffer"
id = "basic_buffer"
results = list("basic_buffer" = 1.5)
required_reagents = list("acidic_buffer" = 0.5, "ethanol" = 0.5, "water" = 0.5)
results = list("basic_buffer" = 5)
required_reagents = list("lye" = 1, "ethanol" = 2, "water" = 2)
required_catalysts = list("sacid" = 1) //vagely acetic
//FermiChem vars:x
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
ExplodeTemp = 9999 //check to see overflow doesn't happen!
OptimalpHMin = 5
OptimalpHMax = 12
OptimalpHMin = 0
OptimalpHMax = 14
ReactpHLim = 0
//CatalystFact = 0 //To do 1
CurveSharpT = 4
@@ -487,8 +505,8 @@
/datum/chemical_reaction/fermi/secretcatchem //DONE
name = "secretcatchem"
id = "secretcatchem"
results = list("secretcatchem" = 0.5)
required_reagents = list("stable_plasma" = 0.1, "sugar" = 0.1, "cream" = 0.1, "clonexadone" = 0.1)//Yes this will make a plushie if you don't lucky guess. It'll eat all your reagents too.
results = list("secretcatchem" = 5)
required_reagents = list("stable_plasma" = 1, "sugar" = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a plushie if you don't lucky guess. It'll eat all your reagents too.
required_catalysts = list("SDGF" = 1)
required_temp = 600
mix_message = "the reaction gives off a meow!"
@@ -521,7 +539,7 @@
RateUpLim += (rand(1, 1000)/100)
PurityMin += (rand(-1, 1)/10)
var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "uranium", "milk")
required_reagents[pick(additions)] = rand(0.1, 0.5)//weird
required_reagents[pick(additions)] = rand(1, 5)//weird
/datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom)
SSblackbox.record_feedback("tally", "catgirlium")//log
@@ -540,8 +558,8 @@
/datum/chemical_reaction/fermi/yamerol//done test
name = "Yamerol"
id = "yamerol"
results = list("yamerol" = 1.5)
required_reagents = list("perfluorodecalin" = 0.5, "salbutamol" = 0.5, "water" = 0.5)
results = list("yamerol" = 3)
required_reagents = list("perfluorodecalin" = 1, "salbutamol" = 1, "water" = 1)
//FermiChem vars:
OptimalTempMin = 300
OptimalTempMax = 500
@@ -96,7 +96,10 @@
/obj/item/hypospray/mkii/examine(mob/user)
. = ..()
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
if(vial)
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
else
to_chat(user, "It has no vial loaded in.")
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
@@ -138,16 +138,16 @@
/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M)
if(prob(30))
M.adjustBrainLoss(2)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2)
..()
/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M)
if(prob(30))
M.adjustBrainLoss(3)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3)
..()
/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M)
if(prob(30))
M.adjustBrainLoss(4)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4)
..()
/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M)