Winding down to the final commits.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user