Winding down to the final commits.

This commit is contained in:
Fermi
2019-05-25 01:04:00 +01:00
parent 05aaeb4d70
commit faf6585b69
13 changed files with 401 additions and 184 deletions
@@ -24,8 +24,8 @@
/obj/item/organ/genital/breasts/Initialize()
. = ..()
reagents.add_reagent(fluid_id, fluid_max_volume)
prev_size = size
cached_size = breast_values[size]
//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
@@ -56,7 +56,7 @@
else
desc = "You see some breasts, they seem to be quite exotic."
if(isnum(size))
desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "two big old tonhongerekoogers", "a couple of giant bonkhonagahoogs", "a pair of humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [size]cm in diameter."
desc = "You see [pick("some serious honkers", "a real set of badonkers", "some dobonhonkeros", "massive dohoonkabhankoloos", "two big old tonhongerekoogers", "a couple of giant bonkhonagahoogs", "a pair of humongous hungolomghnonoloughongous")]. Their volume is way beyond cupsize now, measuring in about [round(size)]cm in diameter."
else if (!isnum(size))
if (size == "flat")
desc += " They're very small and flatchested, however."
@@ -93,6 +93,7 @@
//var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
if (cached_size == null)
prev_size = size
cached_size = breast_values[size]
return
//message_admins("Breast size at start: [size], [cached_size], [owner]")
if(!isnum(cached_size))
@@ -23,13 +23,18 @@
/obj/item/organ/genital/penis/Initialize()
. = ..()
/* I hate genitals.
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
*/
/obj/item/organ/genital/penis/update_size()
var/mob/living/carbon/human/o = owner
if(!cached_length)
prev_size = length
cached_length = length
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, "<span class='warning'>You feel your tallywacker shrinking away from your body as your groin flattens out!</b></span>")
@@ -42,23 +47,30 @@
//message_admins("Attempting to remove.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = FALSE
if(5 to 8) //If modest size
if(5 to 10) //If modest size
length = cached_length
size = 2
if(statuscheck == TRUE)
//message_admins("Attempting to remove.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = FALSE
if(9 to INFINITY) //If massive
if(11 to 20) //If massive
length = cached_length
size = 3 //no new sprites for anything larger yet
size = 3
if(statuscheck == FALSE)
//message_admins("Attempting to apply.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = TRUE
if(15 to INFINITY)
if(21 to 29)
length = cached_length
size = 3 //no new sprites for anything larger yet
size = 3
if(statuscheck == FALSE)
//message_admins("Attempting to apply.")
o.apply_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = TRUE
if(30 to INFINITY)
length = cached_length
size = 4 //no new sprites for anything larger yet
if(statuscheck == FALSE)
//message_admins("Attempting to apply.")
o.apply_status_effect(/datum/status_effect/chem/PElarger)
@@ -66,9 +78,9 @@
//message_admins("Pinas size: [length], [cached_length], [o]")
//message_admins("2. size vs prev_size")
if (round(length) > round(prev_size))
to_chat(o, "<span class='warning'>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.</b></span>")
to_chat(o, "<span class='warning'>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(round(length))] inch penis.</b></span>")
else if (round(length) < round(prev_size))
to_chat(o, "<span class='warning'>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.</b></span>")
to_chat(o, "<span class='warning'>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(round(length))] inch penis.</b></span>")
prev_size = length
icon_state = sanitize_text("penis_[shape]_[size]")
//update_body()
@@ -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/OnMobMergeCheck = FALSE
//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)
@@ -130,6 +131,7 @@
var/mob/living/fermi_Tclone = null
var/teleBool = FALSE
mob/living/carbon/purgeBody
pH = 3.7
/*
/datum/reagent/fermi/eigenstate/on_new()
@@ -1084,26 +1086,29 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
color = "#2C051A" // 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
InverseChemVal = 0.5
InverseChem = "enthrallInverse" //At really impure vols, it just becomes 100% inverse
//DoNotSplit = TRUE
data = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
var/creatorID //ckey
var/creatorGender
var/creatorName
var/mob/living/creator
pH = 10
OnMobMergeCheck = TRUE //Procs on_mob_add when merging into a human
/datum/reagent/fermi/enthrall/test
name = "MKUltraTest"
id = "enthrallTest"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of pleasure, 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 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."
color = "#2C051A" // rgb: , 0, 255
//ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth
//InverseChemVal = 0.25
//InverseChemVal = 0.5
//InverseChem = "enthrall" //At really impure vols, it just becomes 100% inverse
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Isabelle Foster")
creatorID = "honkatonkbramblesnatch"//ckey
creatorGender = "Mistress"
creatorName = "Isabelle Foster"
creatorName = "Fermis Yakumo"
purity = 1
/datum/reagent/fermi/enthrall/test/on_new()
@@ -1128,12 +1133,15 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
creatorName = B.data.["real_name"]
creatorID = B.data.["ckey"]
*/
//FERMICHEM2 split into different chems
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
if(!creatorID)
message_admins("Something went wrong in enthral creation THIS SHOULD NOT APPEAR")
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
if(E)
return
message_admins("key: [M.ckey] vs [creatorID], ")
if(purity < 0.5)//Impure chems don't function as you expect
return
@@ -1157,33 +1165,17 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
if(purity < 0.5)//Placeholder for now. I'd like to get this done.
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
return
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
for(var/victim in seen)
if((victim == /mob/living/simple_animal/pet/) || (victim == M))
seen = seen - victim
if(!seen)
return
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(M, pick(seen))
return
else // If someone else drinks it, the creator falls in love with them!
var/mob/living/carbon/C = get_mob_by_key(creatorID)
if(C.has_status_effect(STATUS_EFFECT_INLOVE))
return
if(C in viewers(7, get_turf(M)))
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(C, M)
return
if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it does nothing.
return
if(!M.client)
metabolization_rate = 0 //Stops powergamers from quitting to avoid affects.
return
if(metabolization_rate == 0)
metabolization_rate = 0.5
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)//If purity is over 5, works as intended
if(!E)
M.reagents.remove_reagent(src.id, 10)
M.apply_status_effect(/datum/status_effect/chem/enthrall)
M.reagents.remove_reagent(src.id, 1)
//M.apply_status_effect(/datum/status_effect/chem/enthrall)
message_admins("No enthrall status found in [M]!")
else
E.enthrallTally += 1
@@ -1193,7 +1185,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly. I made it so the creator is set to gain the status for someone random.
. = ..()
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks 150u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.)
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks 100u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.)
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
for(var/mob/living/carbon/victim in seen)
if(victim == M)//as much as I want you to fall for beepsky, he doesn't have a ckey
@@ -1229,6 +1221,39 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
M.adjustBrainLoss(0.1)//should be 15 in total
..()
/datum/reagent/fermi/enthrall/Inverse
name = "MKUltra"
id = "enthrall"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of pleasure, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it."
color = "#2C051A" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
DoNotSplit = TRUE
/datum/reagent/fermi/enthrall/Inverse/on_mob_life(mob/living/carbon/M)
if(purity < 0.5)//Placeholder for now. I'd like to get this done.
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
return
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
for(var/victim in seen)
if((victim == /mob/living/simple_animal/pet/) || (victim == M))
seen = seen - victim
if(!seen)
return
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(M, pick(seen))
return
else // If someone else drinks it, the creator falls in love with them!
var/mob/living/carbon/C = get_mob_by_key(creatorID)
if(C.has_status_effect(STATUS_EFFECT_INLOVE))
return
if(C in viewers(7, get_turf(M)))
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(C, M)
return
if(volume < 1)//You don't get to escape that easily
FallInLove(pick(GLOB.player_list), M)
//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"
@@ -1236,7 +1261,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of pleasure, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it."
color = "#2C051A" // rgb: , 0, 255
metabolization_rate = 0.1
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses."
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.
@@ -1274,7 +1300,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove")
..()
/datum/reagent/fermi/enthrall/proc/FallInLove(mob/living/carbon/Lover, mob/living/carbon/Love)
/datum/reagent/fermi/proc/FallInLove(mob/living/carbon/Lover, mob/living/carbon/Love)
if(Lover.has_status_effect(STATUS_EFFECT_INLOVE))
to_chat(Lover, "<span class='warning'>You are already fully devoted to someone else!</span>")
return
@@ -1462,11 +1488,12 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
name = "Acid vapour"
id = "fermiAcid"
description = "Someone didn't do like an otter, and add acid to water."
taste_description = "acid burns, ow!!"
pH = 0
/datum/reagent/fermi/fermiAcid/on_mob_life(mob/living/carbon/C, method)
var/target = C.get_bodypart(BODY_ZONE_CHEST)
var/acidstr = (5-C.reagents.pH)
var/acidstr = ((5-C.reagents.pH)*2)
C.adjustFireLoss(acidstr, 0)
if(method==VAPOR)
if(prob(20))
@@ -1545,10 +1572,13 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
name = "Acidic buffer"//defined on setup
id = "fermiABuffer"
description = "This reagent will consume itself and move the pH of a beaker towards 3 when added to another."
addProc = TRUE
taste_description = "an acidy sort of taste, blech."
addProc = FALSE
pH = 3
/datum/reagent/fermi/fermiABuffer/on_new()
if(addProc == FALSE)//This is so it doesn't react when made.
addProc = TRUE
if(LAZYLEN(holder.reagent_list) == 1)
return
pH = ((holder.pH * holder.total_volume)+(3 * src.volume))/(holder.total_volume + src.volume)
@@ -1559,10 +1589,13 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
name = "Basic buffer"//defined on setup
id = "fermiBBuffer"
description = "This reagent will consume itself and move the pH of a beaker towards 11 when added to another."
addProc = TRUE
taste_description = "an soapy sort of taste, blech."
addProc = FALSE
pH = 11
/datum/reagent/fermi/fermiBBuffer/on_new()
if(addProc == FALSE)//This is so it doesn't react when made.
addProc = TRUE
if(LAZYLEN(holder.reagent_list) == 1)
return
pH = ((holder.pH * holder.total_volume)+(11 * src.volume))/(holder.total_volume + src.volume)
@@ -1,7 +1,7 @@
//TO TWEAK:
/datum/chemical_reaction/fermi
mix_sound = 'modular_citadel/sound/voice/merowr.ogg'
mix_sound = 'sound/effects/bubbles.ogg'
//Called for every reaction step
/datum/chemical_reaction/fermi/proc/FermiCreate(holder) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
@@ -22,6 +22,24 @@
var/ImpureTot = 0
var/pHmod = 1
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(3000)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
if(pH < 4) //if acidic, make acid spray
//s.set_up(/datum/reagent/fermi/fermiAcid, (volume/3), pH*10, T)
R.add_reagent("fermiAcid", ((volume/3)/pH))
pHmod = 2
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list) //make gas for reagents
if (istype(reagent, /datum/reagent/fermi))
continue //Don't allow fermichems into the mix (fermi explosions are handled elsewhere and it's a huge pain)
R.add_reagent(reagent, reagent.volume)
if (reagent.purity < 0.6)
ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
if(R.reagent_list)
s.set_up(R, (volume/10)*pHmod, 10, T)
s.start()
if(temp>500)//if hot, start a fire
switch(temp)
if (500 to 750)
@@ -37,32 +55,16 @@
new /obj/effect/hotspot(turf)
//volume /= 5
//var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new
var/datum/reagents/R = new/datum/reagents(3000)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
if(pH < 4)
//s.set_up(/datum/reagent/fermi/fermiAcid, (volume/3), pH*10, T)
R.add_reagent("fermiAcid", ((volume/3)/pH))
pHmod = 2
if (pH > 10)
if(!ImpureTot == 0) //If impure, v.small emp
ImpureTot *= volume
empulse(T, volume/10, ImpureTot/10, 1)
if (pH > 10) //if alkaline, small explosion.
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round((volume/30)*(pH-9)), T, 0, 0)
e.start()
pHmod = 1.5
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list)
if (istype(reagent, /datum/reagent/fermi))
//var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
//Ferm.FermiExplode(src, my_atom, volume, temp, pH, Exploding = TRUE)
continue //Don't allow fermichems into the mix (fermi explosions are handled elsewhere and it's a huge pain)
R.add_reagent(reagent, reagent.volume)
if (reagent.purity < 0.6)
ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
if(R.reagent_list)
s.set_up(R, (volume/10)*pHmod, 10, T)
s.start()
if(!ImpureTot == 0)
ImpureTot *= volume
empulse(T, volume/10, ImpureTot/10, 1)
message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot], containing [my_atom.reagents.reagent_list]")
my_atom.reagents.clear_reagents()
return
@@ -75,47 +77,46 @@
mix_message = "the reaction zaps suddenly!"
//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)
OptimalTempMax = 600 // Upper end for above
ExplodeTemp = 750 //Temperature at which reaction explodes
OptimalpHMin = 6 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
OptimalpHMax = 8 // Higest value for above
ReactpHLim = 4 // 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)
CurveSharpT = 0.6 // 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 = -2.5 //Temperature change per 1u produced
HIonRelease = 0.08 //pH change per 1u reaction
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
ThermicConstant = 5 //Temperature change per 1u produced
HIonRelease = -0.1 //pH change per 1u reaction
RateUpLim = 5.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
/datum/chemical_reaction/fermi/eigenstate/FermiFinish(datum/reagents/holder, var/atom/my_atom)//Strange how this doesn't work but the other does.
var/location = get_turf(holder.my_atom)
var/location = get_turf(my_atom)
var/datum/reagent/fermi/eigenstate/E = locate(/datum/reagent/fermi/eigenstate) in my_atom.reagents.reagent_list
E.location_created = location
//add on_new() handling of vars
//serum
/datum/chemical_reaction/fermi/SDGF
/datum/chemical_reaction/fermi/SDGF //DONE
name = "Synthetic-derived growth factor"
id = "SDGF"
results = list("SDGF" = 0.3)
//required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
required_reagents = list("stable_plasma" = 0.5, "slimejelly" = 0.5, "synthflesh" = 1, "blood" = 1)
mix_message = "the reaction gives off a blorble!"
//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
OptimalTempMin = 600 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 630 // Upper end for above
ExplodeTemp = 635 // Temperature at which reaction explodes
OptimalpHMin = 3 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
OptimalpHMax = 3.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
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 = 5 // 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
@@ -129,8 +130,10 @@
S.real_name = "Living teratoma"//horrifying!!
S.rabid = 1//Make them an angery boi, grr grr
S.color = "#810010"
to_chat("<span class='warning'>The cells clump up into a horrifying tumour!</span>")
my_atom.reagents.clear_reagents()
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The cells clump up into a horrifying tumour!</span>")
/datum/chemical_reaction/fermi/BElarger //done
name = "Sucubus milk"
@@ -156,21 +159,20 @@
PurityMin = 0.1
/datum/chemical_reaction/fermi/BElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
//var/obj/item/organ/genital/breasts/B =
new /obj/item/organ/genital/breasts(get_turf(my_atom))
var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(get_turf(my_atom))
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a pair of breasts!</b></span>")//OwO
var/datum/reagent/fermi/BElarger/BE = locate(/datum/reagent/fermi/BElarger) in my_atom.reagents.reagent_list
B.size = ((BE.volume * BE.purity) / 10) //half as effective.
my_atom.reagents.clear_reagents()
..()
/datum/chemical_reaction/fermi/PElarger //done
name = "Incubus draft"
id = "PElarger"
results = list("PElarger" = 0.3)
required_reagents = list("plasma" = 0.1, "stable_plasma" = 0.1, "sugar" = 0.1)
required_reagents = list("blood" = 0.5, "synthflesh" = 0.2, "carbon" = 0.2, "aphro" = 0.2, "salglu_solution" = 0.1,)
mix_message = ""
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMax = 800
@@ -189,31 +191,32 @@
PurityMin = 0.1
/datum/chemical_reaction/fermi/PElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
//var/obj/item/organ/genital/penis/nP =
new /obj/item/organ/genital/penis(get_turf(my_atom))
var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(get_turf(my_atom))
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a penis!</b></span>")//OwO
var/datum/reagent/fermi/PElarger/PE = locate(/datum/reagent/fermi/PElarger) in my_atom.reagents.reagent_list
P.length = ((PE.volume * PE.purity) / 10)//half as effective.
my_atom.reagents.clear_reagents()
..()
//..()
/datum/chemical_reaction/fermi/astral //done //BORKEN
name = "Astrogen"
id = "astral"
results = list("astral" = 0.3)
required_reagents = list("eigenstate" = 0.1, "plasma" = 0.1, "synaptizine" = 0.1, "aluminium" = 0.5)
results = list("astral" = 0.5)
required_reagents = list("eigenstate" = 0.1, "plasma" = 0.2, "synaptizine" = 0.1, "aluminium" = 0.5)
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMin = 700
OptimalTempMax = 800
ExplodeTemp = 900
OptimalpHMin = 12
ExplodeTemp = 1150
OptimalpHMin = 10
OptimalpHMax = 13
ReactpHLim = 2
CatalystFact = 0
CurveSharpT = 4
CurveSharppH = 2
ThermicConstant = 10
HIonRelease = 0.5
CurveSharpT = 1
CurveSharppH = 1
ThermicConstant = 20
HIonRelease = -0.5
RateUpLim = 10
FermiChem = TRUE
FermiExplode = TRUE
@@ -238,12 +241,12 @@
//CatalystFact = 0
CurveSharpT = 0.5
CurveSharppH = 4
ThermicConstant = 20
ThermicConstant = 10
HIonRelease = -0.1
RateUpLim = 5
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.15
PurityMin = 0.2
@@ -255,7 +258,7 @@
var/list/seen = viewers(5, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction splutters and fails to react.</span>")
E.purity = 0
//E.purity = 0
if (B.data.["gender"] == "female")
E.data.["creatorGender"] = "Mistress"
E.creatorGender = "Mistress"
@@ -288,8 +291,8 @@
OptimalTempMin = 500
OptimalTempMax = 650
ExplodeTemp = 750
OptimalpHMin = 10
OptimalpHMax = 14
OptimalpHMin = 2
OptimalpHMax = 5
ReactpHLim = 1
//CatalystFact = 0 //To do 1
CurveSharpT = 4
@@ -298,8 +301,8 @@
HIonRelease = -0.05
RateUpLim = 5
FermiChem = TRUE
//FermiExplode = FALSE
//PurityMin = 0.15
FermiExplode = TRUE
PurityMin = 0.5
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH)
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom))
@@ -308,7 +311,6 @@
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The makes an off sounding pop, as a hat suddenly climbs out of the beaker!</b></span>")
my_atom.reagents.clear_reagents()
..()
/datum/chemical_reaction/fermi/furranium //low temp and medium pH - done
name = "Furranium"
@@ -326,33 +328,77 @@
//CatalystFact = 0 //To do 1
CurveSharpT = 2
CurveSharppH = 0.5
ThermicConstant = -2
ThermicConstant = -10
HIonRelease = -0.1
RateUpLim = 10
FermiChem = TRUE
//FermiExplode = FALSE
//PurityMin = 0.15
PurityMin = 0.30
//Nano-b-gone
/datum/chemical_reaction/fermi/naninte_b_gone//done
/datum/chemical_reaction/fermi/naninte_b_gone//done test
name = "Naninte bain"
id = "naninte_b_gone"
results = list("naninte_b_gone" = 0.5)
required_reagents = list("synthflesh" = 0.5, "uranium" = 0.1, "iron" = 0.1, "salglu_solution" = 0.3)
mix_message = "the reaction gurgles, encapsulating the reagents in flesh."
results = list("naninte_b_gone" = 20)
required_reagents = list("synthflesh" = 5, "uranium" = 5, "iron" = 5, "salglu_solution" = 5)
mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off."
required_temp = 499//To force fermireactions before EMP.
//FermiChem vars:
OptimalTempMin = 450
OptimalTempMin = 500
OptimalTempMax = 600
ExplodeTemp = 700
OptimalpHMin = 6
OptimalpHMax = 8
ReactpHLim = 1
OptimalpHMax = 6.25
ReactpHLim = 3
//CatalystFact = 0 //To do 1
CurveSharpT = 4
CurveSharppH = 2
ThermicConstant = 1
CurveSharpT = 0
CurveSharppH = 1
ThermicConstant = 5
HIonRelease = 0.01
RateUpLim = 100
FermiChem = TRUE
//FermiExplode = FALSE
//PurityMin = 0.15
PurityMin = 0.15
/datum/chemical_reaction/fermi/fermiABuffer//done test
name = "Acetic acid buffer"
id = "fermiABuffer"
results = list("fermiABuffer" = 20) //acetic acid
required_reagents = list("salglu_solution" = 2, "ethanol" = 6, "oxygen" = 6, "water" = 6)
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
ExplodeTemp = 9999 //check to see overflow doesn't happen!
OptimalpHMin = 2.5
OptimalpHMax = 3.5
ReactpHLim = 0
//CatalystFact = 0 //To do 1
CurveSharpT = 1
CurveSharppH = 0
ThermicConstant = 0
HIonRelease = -0.01
RateUpLim = 20
FermiChem = TRUE
//datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
/datum/chemical_reaction/fermi/fermiBBuffer//done test
name = "Ethyl Ethanoate buffer"
id = "fermiBBuffer"
results = list("fermiBBuffer" = 15)
required_reagents = list("fermiABuffer" = 5, "ethanol" = 5, "salglu_solution" = 1, "water" = 5)
required_catalysts = list("sacid" = 5) //vagely acetic
//FermiChem vars:
OptimalTempMin = 250
OptimalTempMax = 500
ExplodeTemp = 9999 //check to see overflow doesn't happen!
OptimalpHMin = 10.5
OptimalpHMax = 11.5
ReactpHLim = 0
//CatalystFact = 0 //To do 1
CurveSharpT = 1
CurveSharppH = 0
ThermicConstant = 0
HIonRelease = 0.01
RateUpLim = 20
FermiChem = TRUE
///datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this