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))