From d90b4769f1d9b67c1a07c4433511b17a5f0acf65 Mon Sep 17 00:00:00 2001
From: Fermi <>
Date: Thu, 5 Sep 2019 22:30:53 +0100
Subject: [PATCH] MK, SDGF, Astrogen, Eigen, BE, furranium, hattmium tweaks and
fixes.
---
code/modules/surgery/organs/vocal_cords.dm | 16 ++++++++----
.../code/datums/status_effects/chems.dm | 26 ++++++++++++++++++-
.../code/modules/arousal/organs/breasts.dm | 7 +++++
.../reagents/chemistry/reagents/MKUltra.dm | 6 ++---
.../reagents/chemistry/reagents/SDGF.dm | 3 ---
.../reagents/chemistry/reagents/astrogen.dm | 11 ++++++--
.../chemistry/reagents/fermi_reagents.dm | 12 ++++-----
.../reagents/chemistry/recipes/fermi.dm | 17 +++++++++---
8 files changed, 75 insertions(+), 23 deletions(-)
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 3819015465..e2e2b4429a 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -769,10 +769,10 @@
var/static/regex/awoo_words = regex("howl|awoo|bark")
var/static/regex/nya_words = regex("nya|meow|mewl")
var/static/regex/sleep_words = regex("sleep|slumber|rest")
- var/static/regex/strip_words = regex("strip|derobe|nude")
+ var/static/regex/strip_words = regex("strip|derobe|nude|at east|suit off")
var/static/regex/walk_words = regex("slow down|walk")
var/static/regex/run_words = regex("run|speed up")
- var/static/regex/liedown_words = regex("lie down")
+ var/static/regex/liedown_words = regex("lie down")
var/static/regex/knockdown_words = regex("drop|fall|trip|knockdown|kneel")
//phase 3
var/static/regex/statecustom_words = regex("state triggers|state your triggers")
@@ -782,7 +782,7 @@
var/static/regex/instill_words = regex("feel|entice|overwhel")
var/static/regex/recognise_words = regex("recognise me|did you miss me?")
var/static/regex/objective_words = regex("new objective|obey this command|unable to resist|compulsed|word from HQ")
- var/static/regex/heal_words = regex("live|heal|survive|mend|life|pets never die")
+ var/static/regex/heal_words = regex("live|heal|survive|mend|life|pets never die|heroes never die")
var/static/regex/stun_words = regex("stop|wait|stand still|hold on|halt")
var/static/regex/hallucinate_words = regex("get high|hallucinate|trip balls")
var/static/regex/hot_words = regex("heat|hot|hell")
@@ -1014,7 +1014,7 @@
speaktrigger += "I'm really, really horny, "
//collar
- if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar))
+ if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar) && H.client?.prefs.lewdchem)
speaktrigger += "I love the collar you gave me, "
//End
if(H.client?.prefs.lewdchem)
@@ -1250,6 +1250,9 @@
if (get_dist(user, H) > 1)//Requires user to be next to their pet.
to_chat(user, "You need to be next to your pet to give them a new trigger!")
continue
+ if(H.client?.prefs.lewdchem)
+ to_chat(user, "[H] seems incapable of being implanted with triggers.")
+ continue
else
user.emote("me", 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.")
user.SetStun(1000)//Hands are handy, so you have to stay still
@@ -1288,6 +1291,9 @@
if (get_dist(user, H) > 1)//Requires user to be next to their pet.
to_chat(user, "You need to be next to your pet to give them a new echophrase!")
continue
+ if(H.client?.prefs.lewdchem)
+ to_chat(user, "[H] seems incapable of being implanted with an echoing phrase.")
+ continue
else
user.emote("me", 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.")
user.SetStun(1000)//Hands are handy, so you have to stay still
@@ -1344,7 +1350,7 @@
var/mob/living/carbon/human/H = V
var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
if(E.phase == 3 && H.client?.prefs.lewdchem)
- var/instill = stripped_input(user, "Instill an emotion in your [(user.client?.prefs.lewdchem?"Your pet":"listener")].", MAX_MESSAGE_LEN)
+ var/instill = stripped_input(user, "Instill an emotion in [H].", MAX_MESSAGE_LEN)
to_chat(H, "[instill]")
to_chat(user, "You sucessfully instill a feeling in [H]")
log_game("FERMICHEM: [H] has been instilled by [user] with [instill] via MKUltra.")
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 613cabee10..869cfd9cbb 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -161,9 +161,33 @@
owner.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
owner.ResetBloodVol()
+///////////////////////////////////////////////
+// Astral INSURANCE
+///////////////////////////////////////////////
+//Makes sure people can't get trapped in each other's bodies if lag causes a deync between proc calls.
+
+
+/datum/status_effect/chem/astral_insurance
+ id = "astral_insurance"
+ var/mob/living/original
+ var/datum/mind/originalmind
+
+/datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M)
+ . = ..()
+ if(M.has_reagent("astral"))
+ return
+ if(M.mind == originalmind) //If they're home, let the chem deal with deletion.
+ return
+ if(M.mind)
+ var/mob/living/simple_animal/astral/G = new(get_turf(M.loc))
+ M.mind.transfer_to(G)//Just in case someone else is inside of you, it makes them a ghost and should hopefully bring them home at the end.
+ to_chat(G, "[M]'s conciousness snaps back to them as their astrogen runs out, kicking your projected mind out!'")
+ log_game("FERMICHEM: [M]'s possesser has been booted out into a astral ghost!")
+ originalmind.transfer_to(original)
+
/*//////////////////////////////////////////
- Mind control functions
+ Political functions!
///////////////////////////////////////////
*/
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index 3df2218766..291e84fdfd 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -41,9 +41,16 @@
/obj/item/organ/genital/breasts/proc/generate_milk()
if(owner.stat == DEAD)
return FALSE
+ consider_size()
reagents.isolate_reagent(fluid_id)
reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))
+/obj/item/organ/genital/breasts/proc/consider_size()
+ if(!cached_size || cached_size < 1)
+ return
+ fluid_max_volume = cached_size*5
+ fluid_rate = cached_size*0.1
+
/obj/item/organ/genital/breasts/update_appearance()
var/lowershape = lowertext(shape)
switch(lowershape)
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index 1b3efffc9f..d7bdd7adc0 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -131,7 +131,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/enthrall
name = "enthrall"
- id = "enthrall"
+ id = "enthrall_base"
description = "A forbidden deep purple mixture that aids the political influence of creator upon the subject. When taken by the creator, it will enhance the power of their words to those affected by it."
color = "#660055"
taste_description = "politics"
@@ -189,8 +189,8 @@ Creating a chem with a low purity will make you permanently fall in love with so
..()
/datum/reagent/fermi/enthrall/politi
- name = "Politi-aid"
- id = "politi-aid"
+ name = "Politic-aid"
+ id = "politic-aid"
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
index 3c387bee10..0ef96063ec 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm
@@ -47,10 +47,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
metabolization_rate = 0.5 * REAGENTS_METABOLISM
taste_description = "a weird chemical fleshy flavour"
var/list/candies = list()
- var/list/result = list()
- var/list/group = null
var/pollStarted = FALSE
- var/location_created
var/startHunger
ImpureChem = "SDGFtox"
InverseChemVal = 0.5
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
index d05cfb552e..accdec4e44 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm
@@ -8,7 +8,7 @@ This ghost moves pretty quickly and is mostly invisible, but is still visible fo
When it's out of your system, you return back to yourself. It doesn't last long and metabolism of the chem is exponential.
Addiction is particularlly brutal, it slowly turns you invisible with flavour text, then kills you at a low enough alpha. (i've also added something to prevent geneticists speeding this up)
There's afairly major catch regarding the death though. I'm not gonna say here, go read the code, it explains it and puts my comments on it in context. I know that anyone reading it without understanding it is going to freak out so, this is my attempt to get you to read it and understand it.
-I'd like to point out from my calculations it'll take about 60-80 minutes to die this way too. Plenty of time to visit me and ask for some pills to quench your addiction.
+I'd like to point out from my calculations it'll take about 60-80 minutes to die this way too. Plenty of time to visit chem and ask for some pills to quench your addiction.
*/
@@ -67,6 +67,12 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(M.mind)
M.mind.transfer_to(G)
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Astral projections")
+ //INSURANCE
+ C.apply_status_effect(/datum/status_effect/chem/astral_insurance)
+ var/datum/status_effect/chem/astral_insurance/AI = C.has_status_effect(/datum/status_effect/chem/astral_insurance)
+ AI.original = M
+ AI.originalmind = M.mind
+
if(overdosed)
if(prob(50))
to_chat(G, "The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!")
@@ -98,6 +104,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(G)//just in case
qdel(G)
log_game("FERMICHEM: [M] has astrally returned to their body!")
+ M.remove_status_effect(/datum/status_effect/chem/astral_insurance)
..()
//Okay so, this might seem a bit too good, but my counterargument is that it'll likely take all round to eventually kill you this way, then you have to be revived without a body. It takes approximately 50-80 minutes to die from this.
@@ -105,7 +112,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
if(addiction_stage < 2)
antiGenetics = 255
M.alpha = 255 //Antigenetics is to do with stopping geneticists from turning people invisible to kill them.
- if(prob(70))
+ if(prob(75))
M.alpha--
antiGenetics--
switch(antiGenetics)
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index 9e2cc84ada..4b2a344122 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -104,10 +104,10 @@
return ..()
var/hatArmor = 0
if(!overdosed)
- hatArmor = (cached_purity/10)
+ hatArmor = 10+((cached_purity/10)*current_cycle)
else
- hatArmor = - (cached_purity/10)
- if(hatArmor > 90)
+ hatArmor = -10+((cached_purity/10)*current_cycle)
+ if(hatArmor > 100)
return ..()
var/obj/item/W = M.head
W.armor = W.armor.modifyAllRatings(hatArmor)
@@ -195,7 +195,7 @@
..()
/datum/reagent/fermi/furranium/on_mob_delete(mob/living/carbon/M)
- if(purity < 1)//Only permanent if you're a good chemist.
+ if(cached_purity < 0.95)//Only permanent if you're a good chemist.
nT = M.getorganslot(ORGAN_SLOT_TONGUE)
nT.Remove(M)
qdel(nT)
@@ -227,7 +227,7 @@
GET_COMPONENT_FROM(N, /datum/component/nanites, C)
if(isnull(N))
return ..()
- N.nanite_volume = -cached_purity*2//0.5 seems to be the default to me, so it'll neuter them.
+ N.nanite_volume += -cached_purity*2//0.5 seems to be the default to me, so it'll neuter them.
..()
/datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C)
@@ -242,7 +242,7 @@
to_chat(C, "The nanites short circuit within your system!")
if(isnull(N))
return ..()
- N.nanite_volume = -4*cached_purity
+ N.nanite_volume += -4*cached_purity
..()
/datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 078e1c8a71..77a24ad335 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -254,9 +254,7 @@
name = "MKUltra"
id = "enthrall"
results = list("enthrall" = 0.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" = 0.1, "neurine" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1)
required_catalysts = list("blood" = 1)
mix_message = "the reaction gives off a burgundy plume of smoke!"
//FermiChem vars:
@@ -297,10 +295,23 @@
E.data.["creatorID"] = B.data.["ckey"]
E.creatorID = B.data.["ckey"]
+//Politic-aid split
+/datum/chemical_reaction/fermi/enthrall/politi
+ name = "Politic-aid"
+ id = "politic-aid"
+ required_reagents = list("cocoa" = 0.1, "astral" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1)
+ results = list("politic-aid" = 0.5)
+
//So slimes can play too.
/datum/chemical_reaction/fermi/enthrall/slime
required_catalysts = list("slimejelly" = 1)
+/datum/chemical_reaction/fermi/enthrall/slime/politi
+ name = "Politic-aid"
+ id = "politic-aid"
+ required_reagents = list("cocoa" = 0.1, "astral" = 0.1, "mindbreaker" = 0.1, "psicodine" = 0.1, "happiness" = 0.1)
+ results = list("politic-aid" = 0.5)
+
/datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom)
var/datum/reagent/toxin/slimejelly/B = locate(/datum/reagent/toxin/slimejelly) in my_atom.reagents.reagent_list//The one line change.
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list