Jfc that's a lot of work!

This commit is contained in:
Ghommie
2019-12-23 04:24:13 +01:00
parent c87bdef944
commit e74339ce8b
217 changed files with 1329 additions and 1288 deletions
@@ -179,7 +179,7 @@
/datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M)
. = ..()
if(owner.reagents.has_reagent("astral"))
if(owner.reagents.has_reagent(/datum/reagent/fermi/astral))
return
if(owner.mind == originalmind) //If they're home, let the chem deal with deletion.
return
@@ -281,15 +281,15 @@
var/mob/living/carbon/M = owner
//chem calculations
if(!owner.reagents.has_reagent("enthrall") && !owner.reagents.has_reagent("enthrallTest"))
if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test))
if (phase < 3 && phase != 0)
deltaResist += 3//If you've no chem, then you break out quickly
if(prob(5))
to_chat(owner, "<span class='notice'><i>Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.</i></span>")
if (mental_capacity <= 500 || phase == 4)
if (owner.reagents.has_reagent("mannitol"))
if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol))
mental_capacity += 5
if (owner.reagents.has_reagent("neurine"))
if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine))
mental_capacity += 10
//mindshield check
@@ -368,7 +368,7 @@
if(owner.client?.prefs.lewdchem && !customEcho)
to_chat(owner, "<span class='love'><i>[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if (4) //mindbroken
if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra"))
if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall))
phase = 2
mental_capacity = 500
customTriggers = list()
@@ -738,18 +738,18 @@
deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5)
//chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
if (owner.reagents.has_reagent("mannitol"))
if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol))
deltaResist *= 1.25
if (owner.reagents.has_reagent("neurine"))
if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine))
deltaResist *= 1.5
if (!HAS_TRAIT(owner, TRAIT_CROCRIN_IMMUNE) && M.canbearoused && owner.client?.prefs.lewdchem)
if (owner.reagents.has_reagent("anaphro"))
if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac))
deltaResist *= 1.5
if (owner.reagents.has_reagent("anaphro+"))
if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus))
deltaResist *= 2
if (owner.reagents.has_reagent("aphro"))
if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac))
deltaResist *= 0.75
if (owner.reagents.has_reagent("aphro+"))
if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus))
deltaResist *= 0.5
//Antag resistance
//cultists are already brainwashed by their god
@@ -8,7 +8,7 @@
var/orgasm_verb = "cumming" //present continous
var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this?
var/size = 2 //can vary between num or text, just used in icon_state strings
var/fluid_id = null
var/datum/reagent/fluid_id = null
var/fluid_max_volume = 50
var/fluid_efficiency = 1
var/fluid_rate = CUM_RATE
@@ -6,7 +6,7 @@
zone = BODY_ZONE_CHEST
slot = ORGAN_SLOT_BREASTS
size = "c" //refer to the breast_values static list below for the cups associated number values
fluid_id = "milk"
fluid_id = /datum/reagent/consumable/milk
fluid_rate = MILK_RATE
shape = "pair"
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION
@@ -44,7 +44,7 @@
desc += " You estimate that they're [uppertext(size)]-cups."
if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state)
desc += " They're leaking [fluid_id]."
desc += " They're leaking [initial(fluid_id.name)]."
var/string
if(owner)
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
@@ -11,7 +11,7 @@
var/size_name = "average"
shape = "Single"
var/sack_size = BALLS_SACK_SIZE_DEF
fluid_id = "semen"
fluid_id = /datum/reagent/consumable/semen
masturbation_verb = "massage"
layer_index = TESTICLES_LAYER_INDEX
@@ -6,5 +6,5 @@
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_WOMB
genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION
fluid_id = "femcum"
fluid_id = /datum/reagent/consumable/femcum
linked_organ_slot = ORGAN_SLOT_VAGINA
@@ -218,7 +218,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(LAZYLEN(seen))
return
M.reagents.remove_reagent(id, volume)
M.reagents.del_reagent(type)
FallInLove(M, pick(seen))
return
@@ -49,9 +49,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/list/candies = list()
var/pollStarted = FALSE
var/startHunger
impure_chem = "SDGFtox"
impure_chem = /datum/reagent/impure/SDGFtox
inverse_chem_val = 0.5
inverse_chem = "SDZF"
inverse_chem = /datum/reagent/impure/SDZF
can_synth = TRUE
@@ -122,7 +122,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
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.
SM.reagents.add_reagent("SDGFheal", volume)
SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume)
M.reagents.remove_reagent(id, volume)
log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made")
@@ -265,7 +265,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
SM.set_species(mutation)
//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.
SM.reagents.add_reagent("SDGFheal", volume)
SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume)
M.reagents.remove_reagent(id, volume)
SM.updatehealth()
@@ -338,7 +338,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.adjustToxLoss(1, 0)// the warning!
if(86)//mean clone time!
if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.)
if (!M.reagents.has_reagent(/datum/reagent/medicine/pen_acid))//Counterplay is pent.)
message_admins("(non-infectious) SDZF: Zombie spawned at [M] [COORD(M)]!")
M.nutrition = startHunger - 500//YOU BEST BE RUNNING AWAY AFTER THIS YOU BADDIE
M.next_move_modifier = 1
@@ -41,7 +41,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(origin.mind && origin.mind != originalmind)
to_chat(originalmind.current, "<span class='warning'><b><i>There's a foreign presence in your body blocking your return!</b></i></span>")
return ..()
if(origin.reagents.has_reagent("astral") )
if(origin.reagents.has_reagent(/datum/reagent/fermi/astral) )
var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list
if(As.current_cycle < 10)
to_chat(originalmind.current, "<span class='warning'><b><i>The intensity of the astrogen in your body is too much allow you to return to yourself yet!</b></i></span>")
@@ -90,7 +90,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(prob(50))
to_chat(G, "<span class='warning'>The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!</b></span>")
do_teleport(G, M.loc)
M.reagents.remove_reagent(id, current_cycle/10, FALSE)//exponent
metabolization_rate = current_cycle/10 //exponential
sleepytime+=5
if(G)//This is a mess because of how slow qdel is, so this is all to stop runtimes.
if(G.mind)
@@ -69,7 +69,7 @@
/datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location
do_sparks(5,FALSE,M)
to_chat(M, "<span class='userdanger'>You feel your wavefunction collapse!</span>")
if(!M.reagents.has_reagent("stabilizing_agent"))
if(!M.reagents.has_reagent(/datum/reagent/stabilizing_agent))
do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home
do_sparks(5,FALSE,M)
qdel(Eigenstate)
@@ -26,9 +26,9 @@
taste_description = "a milky ice cream like flavour."
overdose_threshold = 17
metabolization_rate = 0.25
impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth
impure_chem = /datum/reagent/fermi/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
inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse
can_synth = FALSE
var/message_spam = FALSE
@@ -44,7 +44,7 @@
M.Knockdown(50)
M.Stun(50)
B.throw_at(T2, 8, 1)
M.reagents.remove_reagent(id, volume)
M.reagents.del_reagent(type)
return
var/mob/living/carbon/human/H = M
if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call())
@@ -78,7 +78,7 @@
B.cached_size = 0
B.prev_size = 0
to_chat(H, "<span class='warning'>Your chest feels warm, tingling with newfound sensitivity.</b></span>")
H.reagents.remove_reagent(id, 5)
H.reagents.remove_reagent(type, 5)
B.Insert(H)
//If they have them, increase size. If size is comically big, limit movement and rip clothes.
@@ -192,9 +192,9 @@
taste_description = "chinese dragon powder"
overdose_threshold = 17 //ODing makes you male and removes female genitals
metabolization_rate = 0.5
impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth
impure_chem = /datum/reagent/fermi/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.
inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead.
can_synth = FALSE
var/message_spam = FALSE
@@ -210,7 +210,7 @@
M.Knockdown(50)
M.Stun(50)
P.throw_at(T2, 8, 1)
M.reagents.remove_reagent(id, volume)
M.reagents.del_reagent(id)
return
var/mob/living/carbon/human/H = M
if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call())
@@ -236,7 +236,7 @@
P.length = 1
to_chat(H, "<span class='warning'>Your groin feels warm, as you feel a newly forming bulge down below.</b></span>")
P.prev_length = 1
H.reagents.remove_reagent(id, 5)
H.reagents.remove_reagent(type, 5)
P.Insert(H)
P.modify_size(0.1)
@@ -7,9 +7,9 @@
taste_description = "affection and love!"
can_synth = FALSE
value = 20
impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction
impure_chem = /datum/reagent/impure/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"
inverse_chem = /datum/reagent/impure/fermiTox
//This should process fermichems to find out how pure they are and what effect to do.
@@ -174,9 +174,9 @@
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
impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth
impure_chem = /datum/reagent/fermi/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
inverse_chem = /datum/reagent/fermi/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
value = 90
@@ -290,7 +290,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
if(LAZYLEN(holder.reagent_list) == 1)
return
else
holder.remove_reagent("fermiTest", volume)//Avoiding recurrsion
holder.del_reagent(type)//Avoiding recurrsion
var/location = get_turf(holder.my_atom)
if(cached_purity < 0.34 || cached_purity == 1)
var/datum/effect_system/foam_spread/s = new()
@@ -323,7 +323,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
//Consumes self on addition and shifts pH
/datum/reagent/fermi/acidic_buffer/on_new(datapH)
if(holder.has_reagent("stabilizing_agent"))
if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
@@ -333,7 +333,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The beaker fizzes as the pH changes!</b></span>")
playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1)
holder.remove_reagent(id, volume, ignore_pH = TRUE)
holder.remove_reagent(type, volume, ignore_pH = TRUE)
..()
/datum/reagent/fermi/basic_buffer
@@ -345,7 +345,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
can_synth = TRUE
/datum/reagent/fermi/basic_buffer/on_new(datapH)
if(holder.has_reagent("stabilizing_agent"))
if(holder.has_reagent(/datum/reagent/stabilizing_agent))
return ..()
data = datapH
if(LAZYLEN(holder.reagent_list) == 1)
@@ -355,7 +355,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The beaker froths as the pH changes!</b></span>")
playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1)
holder.remove_reagent(id, volume, ignore_pH = TRUE)
holder.remove_reagent(type, volume, ignore_pH = TRUE)
..()
//Turns you into a cute catto while it's in your system.
@@ -6,9 +6,9 @@
color = "#68e83a"
pH = 8.6
overdose_threshold = 35
impure_chem = "yamerol_tox"
impure_chem = /datum/reagent/impure/yamerol_tox
inverse_chem_val = 0.4
inverse_chem = "yamerol_tox"
inverse_chem = /datum/reagent/impure/yamerol_tox
can_synth = TRUE
/datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C)
@@ -34,7 +34,7 @@
qdel(T)
nT.Insert(C)
to_chat(C, "<span class='notice'>You feel your tongue.... unfluffify...?</span>")
holder.remove_reagent(src.id, "10")
holder.remove_reagent(type, 10)
..()
/datum/reagent/fermi/yamerol/overdose_process(mob/living/carbon/C)
@@ -50,7 +50,7 @@
T = new()
T.Insert(C)
to_chat(C, "<span class='notice'>You feel your tongue reform in your mouth.</span>")
holder.remove_reagent(src.id, "10")
holder.remove_reagent(type, 10)
else
if((oT.name == "fluffy tongue") && (purity == 1))
var/obj/item/organ/tongue/T
@@ -62,13 +62,13 @@
qdel(oT)
T.Insert(C)
to_chat(C, "<span class='notice'>You feel your tongue.... unfluffify...?</span>")
holder.remove_reagent(src.id, "10")
holder.remove_reagent(type, 10)
if(!C.getorganslot(ORGAN_SLOT_LUNGS))
var/obj/item/organ/lungs/yamerol/L = new()
L.Insert(C)
to_chat(C, "<span class='notice'>You feel the yamerol merge in your chest.</span>")
holder.remove_reagent(src.id, "10")
holder.remove_reagent(type, 10)
C.adjustOxyLoss(-3)
..()
@@ -143,7 +143,7 @@
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)
C.reagents.remove_reagent(type, 15)
to_chat(C, "<span class='notice'>You feel something reform inside of you!</span>")
data["injected_vol"] -= metabolization_rate
@@ -9,19 +9,19 @@
/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]")
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.remove_reagent(R.type, 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.remove_reagent(R.type, (impureVol), FALSE)
my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1)
R.cached_purity = R.purity
R.purity = 1
@@ -76,14 +76,15 @@
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 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.
for (var/A in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding
var/datum/reagent/R2 = A
R.add_reagent(R2.type, R2.volume/3) //Seems fine? I think I fixed the infinite explosion bug.
if (reagent.purity < 0.6)
ImpureTot = (ImpureTot + (1-reagent.purity)) / 2
if (R2.purity < 0.6)
ImpureTot = (ImpureTot + (1-R2.purity)) / 2
if(pH < 4) //if acidic, make acid spray
R.add_reagent("fermiAcid", (volume/3))
R.add_reagent(/datum/reagent/impure/fermiTox, (volume/3))
if(R.reagent_list)
s.set_up(R, (volume/5), my_atom)
s.start()
@@ -203,8 +204,8 @@
var/datum/reagent/fermi/breast_enlarger/BE = locate(/datum/reagent/fermi/breast_enlarger) in my_atom.reagents.reagent_list
var/cached_volume = BE.volume
if(BE.purity < 0.35)
holder.remove_reagent(src.id, cached_volume)
holder.add_reagent("BEsmaller", cached_volume)
holder.remove_reagent(type, cached_volume)
holder.add_reagent(/datum/reagent/fermi/BEsmaller, cached_volume)
/datum/chemical_reaction/fermi/breast_enlarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
@@ -252,8 +253,8 @@
var/datum/reagent/fermi/penis_enlarger/PE = locate(/datum/reagent/fermi/penis_enlarger) in my_atom.reagents.reagent_list
var/cached_volume = PE.volume
if(PE.purity < 0.35)
holder.remove_reagent(src.id, cached_volume)
holder.add_reagent("PEsmaller", cached_volume)
holder.remove_reagent(type, cached_volume)
holder.add_reagent(/datum/reagent/fermi/PEsmaller, cached_volume)
/datum/chemical_reaction/fermi/astral
name = "Astrogen"
@@ -350,7 +351,7 @@
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(1000)
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent("enthrallExplo", volume)
R.add_reagent(/datum/reagent/fermi/enthrallExplo, volume)
s.set_up(R, volume/2, T)
s.start()
my_atom.reagents.clear_reagents()