diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index cc37c19b64..ef1658265a 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -1068,6 +1068,9 @@ else if((findtext(message, forget_words))) for(var/mob/living/carbon/C in listeners) var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) + if(E.phase == 4) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You're unable to forget about [(C.client?.prefs.lewdchem?"the dominating presence of [E.enthrallGender]":"[E.master]")]!"), 5) + continue addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!"), 5) C.Sleeping(50) switch(E.phase) @@ -1408,7 +1411,7 @@ L.SetKnockdown(0) L.SetUnconscious(0) //i said get up i don't care if you're being tased E.cooldown += 10 //This could be really strong - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You jump to your feel from sheer willpower!"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You jump to your feet from sheer willpower!"), 5) //PACIFY else if(findtext(message, pacify_words)) diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 93daa6149e..b63e9344f1 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 5f2c8a47cc..b0c16152a2 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -4,33 +4,40 @@ /datum/status_effect/chem/SGDF id = "SGDF" var/mob/living/fermi_Clone + var/mob/living/original + var/datum/mind/originalmind + var/status_set = FALSE alert_type = null /datum/status_effect/chem/SGDF/on_apply() log_game("FERMICHEM: SGDF status appied on [owner], ID: [owner.key]") - var/typepath = owner.type - fermi_Clone = new typepath(owner.loc) - var/mob/living/carbon/M = owner - var/mob/living/carbon/C = fermi_Clone - - if(istype(C) && istype(M)) - C.real_name = M.real_name - M.dna.transfer_identity(C, transfer_SE=1) - C.updateappearance(mutcolor_update=1) + fermi_Clone = owner return ..() /datum/status_effect/chem/SGDF/tick() - if(owner.stat == DEAD) + if(!status_set) + return ..() + if(original.stat == DEAD || original == null || !original) if((fermi_Clone && fermi_Clone.stat != DEAD) || (fermi_Clone == null)) - if(owner.mind) + if(originalmind) + owner.remove_status_effect(src) + /* log_game("FERMICHEM: SGDF mind shift applied. [owner] is now playing as their clone and should not have memories after their clone split (look up SGDF status applied). ID: [owner.key]") owner.mind.transfer_to(fermi_Clone) to_chat(owner, "Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.") to_chat(fermi_Clone, "Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.") fermi_Clone = null owner.remove_status_effect(src) + */ ..() +/datum/status_effect/chem/SGDF/on_remove(mob/living/carbon/M) + log_game("FERMICHEM: SGDF mind shift applied. [owner] is now playing as their clone and should not have memories after their clone split (look up SGDF status applied). ID: [owner.key]") + originalmind.transfer_to(fermi_Clone) + to_chat(owner, "Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.") + to_chat(M, "Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.") + fermi_Clone = null + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/status_effect/chem/breast_enlarger @@ -247,7 +254,7 @@ var/mob/living/carbon/M = owner //chem calculations - if(!owner.reagents.has_reagent("enthrall")) + if(!owner.reagents.has_reagent("enthrall") || !owner.reagents.has_reagent("enthrallTest")) if (phase < 3 && phase != 0) deltaResist += 3//If you've no chem, then you break out quickly if(prob(10)) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index b1c4bbffcc..62a78c6567 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -161,7 +161,22 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.nutrition = 15//YOU BEST BE EATTING AFTER THIS YOU CUTIE M.next_move_modifier -= 4 to_chat(M, "Your body splits away from the cell clone of yourself, leaving you with a drained and hollow feeling inside.") - M.apply_status_effect(/datum/status_effect/chem/SGDF) + + //clone + var/typepath = M.type + var/mob/living/fermi_Clone = new typepath(M.loc) + var/mob/living/carbon/C = fermi_Clone + + if(istype(C) && istype(M)) + C.real_name = M.real_name + M.dna.transfer_identity(C, transfer_SE=1) + C.updateappearance(mutcolor_update=1) + C.apply_status_effect(/datum/status_effect/chem/SGDF) + var/datum/status_effect/chem/SGDF/S = C.has_status_effect(/datum/status_effect/chem/SGDF) + S.original = M + S.originalmind = M.mind + S.status_set = TRUE + log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Braindead clones made") if(87 to INFINITY) 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 b2ede684a4..6f040ee511 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -350,18 +350,19 @@ color = "#fbc314" pH = 0 can_synth = TRUE + addProc = TRUE //Consumes self on addition and shifts pH /datum/reagent/fermi/acidic_buffer/on_new(datapH) data = datapH if(LAZYLEN(holder.reagent_list) == 1) return - holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume*3)))/(holder.total_volume + (volume*3)) + holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume)) var/list/seen = viewers(5, get_turf(holder)) for(var/mob/M in seen) to_chat(M, "The beaker fizzes as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume) + holder.remove_reagent(id, volume, ignore_pH = TRUE) ..() /datum/reagent/fermi/basic_buffer @@ -371,17 +372,18 @@ color = "#3853a4" pH = 14 can_synth = TRUE + addProc = TRUE /datum/reagent/fermi/basic_buffer/on_new(datapH) data = datapH if(LAZYLEN(holder.reagent_list) == 1) return - holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume*3)))/(holder.total_volume + (volume*3)) + holder.pH = ((holder.pH * holder.total_volume)+(pH * (volume)))/(holder.total_volume + (volume)) var/list/seen = viewers(5, get_turf(holder)) for(var/mob/M in seen) to_chat(M, "The beaker froths as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume) + holder.remove_reagent(id, volume, ignore_pH = TRUE) ..() //Turns you into a cute catto while it's in your system.