diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index e8e833890b..c4f8290845 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -273,7 +273,7 @@
chemholder = null
return ..()
-/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, radius = 1, loca, silent = FALSE)
+/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, radius = 1, loca, silent = FALSE, skip_finger = FALSE)
if(isturf(loca))
location = loca
else
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 6b0e4fb318..5afeb22c1c 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -298,7 +298,7 @@
phase = -1
to_chat(owner, "You break free of the influence in your mind, your thoughts suddenly turning lucid!")
if(DistApart < 10)
- to_chat(master, "[(H.lewd?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!")
+ to_chat(master, "[(master.lewd?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!")
owner.remove_status_effect(src) //If resisted in phase 1, effect is removed.
if(prob(10))
if(owner.lewd)
diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm
index a9804545d7..4a332a72c3 100644
--- a/modular_citadel/code/modules/arousal/organs/genitals.dm
+++ b/modular_citadel/code/modules/arousal/organs/genitals.dm
@@ -295,14 +295,18 @@
//Checks to see if organs are new on the mob, and changes their colours so that they don't get crazy colours.
/mob/living/carbon/human/proc/emergent_genital_call()
+ if((dna.features["has_breasts"]) && (dna.features["has_breasts"]))
+ return
var/organCheck = FALSE
for(var/obj/item/organ/O in internal_organs)
if(istype(O, /obj/item/organ/genital))
organCheck = TRUE
if(/obj/item/organ/genital/penis)
- dna.features["has_cock"] = TRUE
+ if(!dna.features["has_cock"])
+ dna.features["has_cock"] = TRUE
if(/obj/item/organ/genital/breasts)
- dna.features["has_breasts"] = TRUE//Goddamnit get in there.
+ if(!dna.features["has_breasts"])
+ dna.features["has_breasts"] = TRUE//Goddamnit get in there.
if (organCheck == FALSE)
if(ishuman(src) && dna.species.id == "human")
dna.features["genitals_use_skintone"] = TRUE
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 8a235bb6bb..4aa2771cef 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -759,12 +759,11 @@ Buginess level: works as intended - except teleport makes sparks for some reason
taste_description = "velvety brambles"
metabolization_rate = 0//Removal is exponential, see code
overdose_threshold = 20
- addiction_threshold = 25
+ addiction_threshold = 24.5
addiction_stage1_end = 9999//Should never end. There is no escape make your time
var/mob/living/carbon/origin
var/mob/living/simple_animal/hostile/retaliate/ghost/G = null
var/antiGenetics = 255
- var/resetAddiction = FALSE //to get around this weird problem I'm having.
var/sleepytime = 0
InverseChemVal = 0.25
@@ -807,10 +806,9 @@ Buginess level: works as intended - except teleport makes sparks for some reason
//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 60-80 minutes to die from this.
/datum/reagent/fermi/astral/addiction_act_stage1(mob/living/carbon/M)
- if(resetAddiction == TRUE)
+ if(addiction_stage < 0)
antiGenetics = 255//Doesn't reset when you take more, which is weird for me, it should.
M.alpha = 255 //Antigenetics is to do with stopping geneticists from turning people invisible to kill them.
- resetAddiction = FALSE
if(prob(65))
M.alpha--
antiGenetics--
@@ -1048,6 +1046,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
qdel(Vc)
to_chat(M, "You feel your vocal chords tingle as your voice comes out in a more sultry tone.")
else
+ message_admins("MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]")
M.apply_status_effect(/datum/status_effect/chem/enthrall)
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 1f86c613bd..24820b7db8 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -12,7 +12,6 @@
return
//Called when temperature is above a certain threshold
-//....Is this too much?
/datum/chemical_reaction/fermi/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
if (Exploding == TRUE)
return
@@ -40,7 +39,7 @@
message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot].")
var/datum/reagents/R = new/datum/reagents(3000)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
- //Endless loop hell?
+
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list) //make gas for reagents
if (istype(reagent, /datum/reagent/fermi))
R.add_reagent(reagent.id, reagent.volume)
@@ -93,12 +92,11 @@
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
-//I can never get this to work, please pitch in if you can figure it out. Runtime: Cannot modify null.location_created.
/datum/chemical_reaction/fermi/eigenstate/FermiFinish(datum/reagents/holder, var/atom/my_atom)//Strange how this doesn't work but the other does.
var/turf/open/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 //DONE
@@ -126,10 +124,10 @@
/datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
var/turf/T = get_turf(my_atom)
- var/mob/living/simple_animal/slime/S = new(T,"grey")//should work, in theory
- S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)//I dunno how slimes work cause fire is burny
+ var/mob/living/simple_animal/slime/S = new(T,"grey")
+ S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
S.name = "Living teratoma"
- S.real_name = "Living teratoma"//horrifying!!
+ S.real_name = "Living teratoma"
S.rabid = 1//Make them an angery boi, grr grr
S.color = "#810010"
my_atom.reagents.clear_reagents()
@@ -137,7 +135,7 @@
for(var/mob/M in seen)
to_chat(M, "The cells clump up into a horrifying tumour!")
-/datum/chemical_reaction/fermi/BElarger //done
+/datum/chemical_reaction/fermi/BElarger
name = "Sucubus milk"
id = "BElarger"
results = list("BElarger" = 0.6)
@@ -169,12 +167,12 @@
B.size = ((BE.volume * BE.purity) / 10) //half as effective.
my_atom.reagents.clear_reagents()
-/datum/chemical_reaction/fermi/PElarger //done
+/datum/chemical_reaction/fermi/PElarger
name = "Incubus draft"
id = "PElarger"
results = list("PElarger" = 0.3)
required_reagents = list("blood" = 0.5, "synthflesh" = 0.2, "carbon" = 0.2, "aphro" = 0.2, "salglu_solution" = 0.1,)
- mix_message = ""
+ mix_message = "the reaction gives off a spicy mist."
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMax = 800
@@ -200,9 +198,8 @@
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
+/datum/chemical_reaction/fermi/astral
name = "Astrogen"
id = "astral"
results = list("astral" = 0.5)
@@ -222,10 +219,10 @@
RateUpLim = 15
FermiChem = TRUE
FermiExplode = TRUE
- PurityMin = 0.25 // explode purity!
+ PurityMin = 0.25
-/datum/chemical_reaction/fermi/enthrall//done
+/datum/chemical_reaction/fermi/enthrall/
name = "MKUltra"
id = "enthrall"
results = list("enthrall" = 0.5)
@@ -271,7 +268,6 @@
E.creatorName = B.data.["real_name"]
E.data.["creatorID"] = B.data.["ckey"]
E.creatorID = B.data.["ckey"]
- message_admins("MKUltra made name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
/datum/chemical_reaction/fermi/enthrall/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
var/turf/T = get_turf(my_atom)
@@ -313,12 +309,12 @@
to_chat(M, "The makes an off sounding pop, as a hat suddenly climbs out of the beaker!")
my_atom.reagents.clear_reagents()
-/datum/chemical_reaction/fermi/furranium //low temp and medium pH - done
+/datum/chemical_reaction/fermi/furranium
name = "Furranium"
id = "furranium"
results = list("furranium" = 0.5)
required_reagents = list("aphro" = 0.1, "moonsugar" = 0.1, "silver" = 0.2, "salglu_solution" = 0.1)
- //mix_message = ""
+ mix_message = "You think you can hear a howl come from the beaker."
//FermiChem vars:
OptimalTempMin = 350
OptimalTempMax = 600
diff --git a/modular_citadel/code/modules/reagents/objects/fermiclothes.dm b/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
index 9e3852eff3..4a601d4d67 100644
--- a/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
+++ b/modular_citadel/code/modules/reagents/objects/fermiclothes.dm
@@ -9,11 +9,6 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
//item_flags = NODROP //Tips their hat!
-/*
-/obj/item/clothing/head/hattip/equipped(mob/living/carbon/human/user, slot)
- C = user //grumble grumble loc
-*/
-
/obj/item/clothing/head/hattip/attack_hand(mob/user)
if(iscarbon(user))
var/mob/living/carbon/C = user
@@ -27,7 +22,6 @@
/obj/item/clothing/head/hattip/speechModification(message, /mob/living/carbon/C)
..()
var/mob/living/carbon/C = get_wearer()//user
- //if(istype(C, /mob/living/carbon/C))
var/obj/item/organ/tongue/T = C.getorganslot(ORGAN_SLOT_TONGUE)
if (T.name == "fluffy tongue")
if(prob(0.01))