diff --git a/code/game/say.dm b/code/game/say.dm index 0788310038..a6cf177140 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -29,6 +29,7 @@ GLOBAL_LIST_INIT(freqtospan, list( send_speech(message, 7, src, , spans, message_language=language) /atom/movable/proc/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + //message_admins("Pre: [message], [speaker], [message_language], [raw_message], [radio_freq], [spans], [message_mode]") SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, message, speaker, message_language, raw_message, radio_freq, spans, message_mode) /atom/movable/proc/can_speak() @@ -97,7 +98,7 @@ GLOBAL_LIST_INIT(freqtospan, list( var/spanned = attach_spans(input, spans) return "[say_mod(input, message_mode)][spanned ? ", \"[spanned]\"" : ""]" // Citadel edit [spanned ? ", \"[spanned]\"" : ""]" - + /atom/movable/proc/lang_treat(atom/movable/speaker, datum/language/language, raw_message, list/spans, message_mode) if(has_language(language)) var/atom/movable/AM = speaker.GetSource() diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 42fdb36933..c3f0750273 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -6,7 +6,7 @@ var/obj/item/organ/vocal_cords/Vc = getorganslot(ORGAN_SLOT_VOICE) if(Vc) if(Vc.name == "velvet chords" ) - ..() + //..() velvetspeech(message, src) var/obj/item/organ/tongue/T = getorganslot(ORGAN_SLOT_TONGUE) diff --git a/code/modules/reagents/chemistry/Fermi_Chemistry_notes.txt b/code/modules/reagents/chemistry/Fermi_Chemistry_notes.txt index efcd9b748f..3005b81640 100644 --- a/code/modules/reagents/chemistry/Fermi_Chemistry_notes.txt +++ b/code/modules/reagents/chemistry/Fermi_Chemistry_notes.txt @@ -56,3 +56,39 @@ Where what the reactions do, the code that sets what they do. ~\ss13\Citadel-Station-13\tgui\src\interfaces~ This contains the 4 scripts for generation of the UI for operation of the various chemical equipments. + +//Mixables +var/static/regex/enthral_words = regex("relax|obey|love|serve|docile|so easy|ara ara") //enthral_words works +var/static/regex/reward_words = regex("good boy|good girl|good pet") //reward_words works +var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words works +//phase 0 +var/static/regex/saymyname_words = regex("say my name|who am i|whoami") //works I think +var/static/regex/wakeup_words = regex("revert|awaken|snap") //works +//phase1 +var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush") //works +var/static/regex/antiresist_words = regex("unable to resist|give in")//useful if you think your target is resisting a lot +var/static/regex/resist_words = regex("resist|snap out of it|fight")//useful if two enthrallers are fighting +var/static/regex/forget_words = regex("forget|muddled|awake and forget") +var/static/regex/attract_words = regex("come here|come to me|get over here|attract") +//phase 2 +var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt|heyo") //wah, lewd +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/walk_words = regex("slow down") +var/static/regex/run_words = regex("run") +var/static/regex/knockdown_words = regex("drop|fall|trip|knockdown|kneel") +//phase 3 +var/static/regex/statecustom_words = regex("state triggers|state your triggers") +var/static/regex/custom_words = regex("new trigger|listen to me") +var/static/regex/custom_words_words = regex("speak|echo|shock|cum|kneel|strip|trance")//What a descriptive name! +var/static/regex/objective_words = regex("new objective|obey this command|unable to resist|compulsed") +var/static/regex/heal_words = regex("live|heal|survive|mend|life|pets never die") +var/static/regex/stun_words = regex("stop|wait|stand still|hold on|halt") +var/static/regex/hallucinate_words = regex("trip balls|hallucinate") +var/static/regex/hot_words = regex("heat|hot|hell") +var/static/regex/cold_words = regex("cold|cool down|chill|freeze") +var/static/regex/getup_words = regex("get up") +var/static/regex/pacify_words = regex("more and more docile|complaisant|friendly|pacifist") +var/static/regex/charge_words = regex("charge|oorah|attack") diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 3027d45554..67cccedff0 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -459,7 +459,7 @@ im var/datum/chemical_reaction/C = selected_reaction if (C.FermiChem == TRUE && !continue_reacting) - //message_admins("FermiChem Proc'd") + message_admins("FermiChem Proc'd") for(var/P in selected_reaction.results) targetVol = cached_results[P]*multiplier @@ -555,6 +555,8 @@ im //var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id] C.FermiFinish(src, my_atom, multiplier) //C.on_reaction(src, multiplier, special_react_result) + for(var/mob/M in seen) + to_chat(M, "[iconhtml] [selected_reaction.mix_message]") return for(var/P in cached_results) targetVol = cached_results[P]*multiplier @@ -580,6 +582,8 @@ im //var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id] C.FermiFinish(src, my_atom, multiplier) //C.on_reaction(src, multiplier, special_react_result) + for(var/mob/M in seen) + to_chat(M, "[iconhtml] [selected_reaction.mix_message]") return else STOP_PROCESSING(SSprocessing, src) @@ -592,6 +596,8 @@ im //var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id] C.FermiFinish(src, my_atom, multiplier) //C.on_reaction(src, multiplier, special_react_result) + for(var/mob/M in seen) + to_chat(M, "[iconhtml] [selected_reaction.mix_message]") return //handle_reactions() @@ -901,6 +907,8 @@ im if(data) R.data = data R.on_new(data) + if(R.addProc == TRUE) + R.on_new() if(istype(D, /datum/reagent/fermi))//Is this a fermichem? var/datum/reagent/fermi/Ferm = D //It's Fermi time! Ferm.FermiNew(my_atom) //Seriously what is "data" ???? diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index 289896ddac..3046649170 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -35,6 +35,7 @@ var/self_consuming = FALSE //Fermichem vars: var/purity = 1 + var/addProc = FALSE //When this reagent is added to a new beaker, it does something. //var/ImpureChem = "toxin" var/loc = null //Should be the creation location! var/pH = 7 diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 7286f01623..0c0b385958 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -23,6 +23,7 @@ color = "#792300" // rgb: 121, 35, 0 toxpwr = 2.5 taste_description = "mushroom" + pH = 13 /datum/reagent/toxin/mutagen name = "Unstable mutagen" @@ -32,6 +33,7 @@ toxpwr = 0 taste_description = "slime" taste_mult = 0.9 + pH = 2 /datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume) if(!..()) @@ -61,6 +63,7 @@ taste_mult = 1.5 color = "#8228A0" toxpwr = 3 + pH = 4 /datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) if(holder.has_reagent("epinephrine")) @@ -93,6 +96,7 @@ color = "#7DC3A0" toxpwr = 0 taste_description = "acid" + pH = 1.2 /datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C) . = TRUE @@ -115,6 +119,7 @@ toxpwr = 0 taste_description = "slime" taste_mult = 1.3 + pH = 10 /datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M) if(prob(10)) @@ -133,6 +138,7 @@ color = "#CF3600" // rgb: 207, 54, 0 toxpwr = 0 taste_description = "mint" + pH = 8 /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M) if(M.has_trait(TRAIT_FAT)) @@ -146,6 +152,7 @@ color = "#003333" // rgb: 0, 51, 51 toxpwr = 2 taste_description = "fish" + pH = 12 /datum/reagent/toxin/zombiepowder name = "Zombie Powder" @@ -155,6 +162,7 @@ color = "#669900" // rgb: 102, 153, 0 toxpwr = 0.5 taste_description = "death" + pH = 13 /datum/reagent/toxin/zombiepowder/on_mob_add(mob/living/L) ..() @@ -177,6 +185,7 @@ color = "#664700" // rgb: 102, 71, 0 toxpwr = 0.8 taste_description = "death" + pH = 14.5 /datum/reagent/toxin/ghoulpowder/on_mob_add(mob/living/L) ..() @@ -198,6 +207,7 @@ color = "#B31008" // rgb: 139, 166, 233 toxpwr = 0 taste_description = "sourness" + pH = 11 /datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M) M.hallucination += 5 @@ -210,6 +220,7 @@ color = "#49002E" // rgb: 73, 0, 46 toxpwr = 1 taste_mult = 1 + pH = 2 /datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume) if(istype(O, /obj/structure/alien/weeds)) @@ -234,6 +245,7 @@ id = "weedkiller" description = "A harmful toxic mixture to kill weeds. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 + pH = 3 /datum/reagent/toxin/pestkiller name = "Pest Killer" @@ -241,6 +253,7 @@ description = "A harmful toxic mixture to kill pests. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 toxpwr = 1 + pH = 3.2 /datum/reagent/toxin/pestkiller/reaction_mob(mob/living/M, method=TOUCH, reac_volume) ..() @@ -254,6 +267,7 @@ description = "A natural toxin produced by blob spores that inhibits vision when ingested." color = "#9ACD32" toxpwr = 1 + pH = 11 /datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C) C.damageoverlaytemp = 60 @@ -268,6 +282,7 @@ color = "#9ACD32" toxpwr = 0.5 taste_description = "burning" + pH = 13 /datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M) M.adjust_fire_stacks(2) @@ -282,6 +297,7 @@ color = "#000067" // rgb: 0, 0, 103 toxpwr = 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM + pH = 11 /datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/M) switch(current_cycle) @@ -325,6 +341,7 @@ glass_icon_state = "beerglass" glass_name = "glass of beer" glass_desc = "A freezing pint of beer." + pH = 2 /datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M) switch(current_cycle) @@ -342,6 +359,7 @@ reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 toxpwr = 0.5 + pH = 4.2 /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" @@ -350,6 +368,7 @@ reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0 toxpwr = 0.5 + pH = 4.9 /datum/reagent/toxin/mutetoxin //the new zombie powder. name = "Mute Toxin" @@ -358,6 +377,7 @@ color = "#F0F8FF" // rgb: 240, 248, 255 toxpwr = 0 taste_description = "silence" + pH = 12.2 /datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/M) M.silent = max(M.silent, 3) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 943b1d2921..5737d62910 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -827,7 +827,7 @@ //CALLBACKS ARE USED FOR MESSAGES BECAUSE SAY IS HANDLED AFTER THE PROCESSING. //Tier 1 - //ENTHRAL mixable + //ENTHRAL mixable (works I think) if(findtext(message, enthral_words)) for(var/V in listeners) var/mob/living/L = V @@ -838,9 +838,11 @@ E.enthrallTally += (power_multiplier*(((length(message))/200) + 1)) //encourage players to say more than one word. else E.enthrallTally += power_multiplier*1.25 + if(L.canbearoused) + addtimer(CALLBACK(L, .proc/to_chat, "[E.master] is so nice to listen to."), 5) E.cooldown += 1 - //REWARD mixable + //REWARD mixable works if(findtext(message, reward_words)) for(var/V in listeners) var/mob/living/L = V @@ -850,12 +852,14 @@ if (L.canbearoused) //E.resistanceTally -= 1 L.adjustArousalLoss(1*power_multiplier) + addtimer(CALLBACK(L, .proc/to_chat, "[E.enthrallGender] has praised me!!"), 5) else E.resistanceTally /= 2*power_multiplier + addtimer(CALLBACK(L, .proc/to_chat, "I've been praised for doing a good job!"), 5) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallpraise", /datum/mood_event/enthrallpraise) E.cooldown += 1 - //PUNISH mixable + //PUNISH mixable works else if(findtext(message, punish_words)) for(var/V in listeners) var/mob/living/L = V @@ -865,19 +869,24 @@ if (L.canbearoused) E.resistanceTally /= 1*power_multiplier L.adjustArousalLoss(-2*power_multiplier) + addtimer(CALLBACK(L, .proc/to_chat, "I've let [E.enthrallGender] down..."), 5) else E.resistanceTally /= 3*power_multiplier //asexuals are masochists apparently (not seriously) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallscold", /datum/mood_event/enthrallscold) + addtimer(CALLBACK(L, .proc/to_chat, "I've failed [E.master]..."), 5) + SEND_SIGNAL(L, COMSIG_ADD_MOOD_tEVENT, "enthrallscold", /datum/mood_event/enthrallscold) E.cooldown += 1 //teir 0 - //SAY MY NAME + //SAY MY NAME works if((findtext(message, saymyname_words))) for(var/V in listeners) var/mob/living/carbon/C = V + var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) C.remove_trait(TRAIT_MUTE, "enthrall") - addtimer(CALLBACK(C, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here - + if(C.canbearoused) + addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.enthrallGender]"), 5) + else + addtimer(CALLBACK(C, /atom/movable/proc/say, "My director."), 5) //WAKE UP else if((findtext(message, wakeup_words))) for(var/V in listeners) @@ -888,8 +897,11 @@ if(0) E.phase = 3 E.status = null - addtimer(CALLBACK(L, /proc/to_chat, "The snapping of your Master's fingers brings you back to your enthralled state, obedient and ready to serve."), 5) - //to_chat(L, ) + if(C.canbearoused) + addtimer(CALLBACK(L, .proc/to_chat, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5) + else + addtimer(CALLBACK(L, .proc/to_chat, "The snapping of [E.master]'s fingers brings you back to being under their command."), 5) + //to_chat(L, ) //tier 1 @@ -941,6 +953,10 @@ if(3) E.phase = 0 E.cooldown = 0 + if(C.canbearoused) + addtimer(CALLBACK(L, .proc/to_chat, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5) + else + addtimer(CALLBACK(L, .proc/to_chat, "You revert to who you were before, with no memory of what happened with [E.master]."), 5) //ATTRACT else if((findtext(message, attract_words))) @@ -1052,7 +1068,7 @@ //tier3 //STATE TRIGGERS - else if((findtext(message, statecustom_words))) + else if((findtext(message, statecustom_words)))//doesn't work for(var/V in listeners) var/speaktrigger = "" var/mob/living/L = V diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 43664d1010..73f4b25016 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -31,7 +31,7 @@ //message_admins("SDGF ticking") if(owner.stat == DEAD) //message_admins("SGDF status swapping") - if(fermi_Clone && fermi_Clone.stat != DEAD) + if((fermi_Clone && fermi_Clone.stat != DEAD) || (fermi_Clone == null)) if(owner.mind) owner.mind.transfer_to(fermi_Clone) owner.visible_message("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.") @@ -44,6 +44,8 @@ /datum/status_effect/chem/BElarger id = "BElarger" alert_type = null + var/moveCalc = 1 + var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) //var/list/items = list() //var/items = o.get_contents() @@ -68,7 +70,7 @@ var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts") if(!B) o.remove_movespeed_modifier("megamilk") - o.next_move_modifier = 1 + o.next_move_modifier /= moveCalc owner.remove_status_effect(src) var/items = o.get_contents() for(var/obj/item/W in items) @@ -76,24 +78,28 @@ o.dropItemToGround(W, TRUE) playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1) to_chat(owner, "Your enormous breasts are way too large to fit anything over them!") - switch(round(B.cached_size)) - if(9) - if (!(B.breast_sizes[B.prev_size] == B.size)) - to_chat(o, "Your expansive chest has become a more managable size, liberating your movements.") - o.remove_movespeed_modifier("megamilk") - o.next_move_modifier = 1 - if(10 to INFINITY) - if (!(B.breast_sizes[B.prev_size] == B.size)) - to_chat(H, "Your indulgent busom is so substantial, it's affecting your movements!") - o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = ((round(B.cached_size) - 8))/3) - o.next_move_modifier = (round(B.cached_size) - 8)/3 - if(prob(5)) - to_chat(H, "Your back is feeling a little sore.") - ..() + moveCalc = ((round(B.cached_size) - 9))/5) + if (breast_values[size] > breast_values[prev_size]) + o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + o.next_move_modifier *= moveCalc + else if (breast_values[size] < breast_values[prev_size]) + o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc) + o.next_move_modifier /= moveCalc + if(round(B.cached_size) < 16) + switch(round(B.cached_size)) + if(9) + if (!(B.breast_sizes[B.prev_size] == B.size)) + to_chat(o, "Your expansive chest has become a more managable size, liberating your movements.") + if(10 to INFINITY) + if (!(B.breast_sizes[B.prev_size] == B.size)) + to_chat(H, "Your indulgent busom is so substantial, it's affecting your movements!") + if(prob(5)) + to_chat(H, "Your back is feeling a little sore.") + ..() /datum/status_effect/chem/BElarger/on_remove(mob/living/carbon/M) owner.remove_movespeed_modifier("megamilk") - owner.next_move_modifier = 1 + owner.next_move_modifier /= moveCalc /datum/status_effect/chem/PElarger @@ -214,8 +220,8 @@ enthrallTally += phase else if (phase < 3 && phase != 0) - deltaResist += 2//If you've no chem, then you break out quickly - if(prob(20)) + deltaResist += 3//If you've no chem, then you break out quickly + if(prob(10)) to_chat(owner, "Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.") if (mental_capacity <= 500 || phase == 4) if (owner.reagents.has_reagent("mannitol")) @@ -228,6 +234,8 @@ resistanceTally += 5 if(prob(10)) to_chat(owner, "You feel lucidity returning to your mind as the mindshield buzzes, attempting to return your brain to normal function.") + if(phase == 4) + mental_capacity += 5 //phase specific events switch(phase) @@ -251,7 +259,8 @@ to_chat(owner, "You're now free of [master]'s influence, and fully independant oncemore.'") owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. if(prob(10)) - to_chat(owner, "[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].") + if(owner.canbearoused) + to_chat(owner, "[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].") if (2) //partially enthralled if (enthrallTally > 150) phase += 1 @@ -267,15 +276,17 @@ to_chat(owner, "You manage to shake some of the entrancement from your addled mind, however you can still feel yourself drawn towards [master].") //owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment, if(prob(10)) - to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") + if(owner.canbearoused) + to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (3)//fully entranced if (resistanceTally >= 200 && withdrawalTick >= 150) enthrallTally = 0 phase -= 1 resistanceTally = 0 to_chat(owner, "The separation from you [enthrallGender] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.") - if(prob(3)) - to_chat(owner, "[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.")].") + if(prob(2)) + if(owner.canbearoused) + to_chat(owner, "[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.")].") if (4) //mindbroken if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !owner.reagents.has_reagent("MKUltra")) phase = 2 @@ -454,9 +465,11 @@ */ //Doesn't work -/datum/status_effect/chem/enthrall/proc/owner_hear(message = message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +/datum/status_effect/chem/enthrall/proc/owner_hear(var/hearer, message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + //message_admins("post: hear:[hearer], msg:[message], spk:[speaker], lng:[message_language], raw:[raw_message], freq:[radio_freq], spen:[spans], mod:[message_mode]") var/mob/living/carbon/C = owner //message_admins("[C] heard something!") + raw_message = lowertext(raw_message) for (var/trigger in customTriggers) //cached_trigger = lowertext(trigger) message_admins("[C] heard something: [message] vs [trigger] vs [raw_message]") @@ -497,7 +510,7 @@ C.Knockdown(20) //strip (some) clothes - else if (customTriggers[trigger] == "strip")//This wasn't meant to just be a lewd thing oops + else if (lowertext(customTriggers[trigger]) == "strip")//This wasn't meant to just be a lewd thing oops var/mob/living/carbon/human/o = owner var/items = o.get_contents() for(var/obj/item/W in items) @@ -506,7 +519,7 @@ C.visible_message("You feel compelled to strip your clothes.") //trance - else if (customTriggers[trigger] == "trance") + else if (lowertext(customTriggers[trigger]) == "trance") var/mob/living/carbon/human/o = owner o.apply_status_effect(/datum/status_effect/trance, 200, TRUE) diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 87d57f6452..5dfbaab64b 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -6,9 +6,9 @@ zone = "chest" slot = "breasts" w_class = 3 - size = BREASTS_SIZE_DEF - var/cached_size = null//for enlargement - var/prev_size //For flavour texts + size = BREASTS_SIZE_DEF //SHOULD BE A LETTER + var/cached_size = null//for enlargement SHOULD BE A NUMBER + var/prev_size //For flavour texts SHOULD BE A LETTER var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat") var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0) var/statuscheck = FALSE 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 366ca14302..4308ba345e 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -614,7 +614,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING overdose_threshold = 12 metabolization_rate = 0.5 ImpureChem = "BEsmaller" //If you make an inpure chem, it stalls growth - InverseChemVal = 0.25 + InverseChemVal = 0.3 InverseChem = "BEsmaller" //At really impure vols, it just becomes 100% inverse /datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M) @@ -622,6 +622,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/mob/living/carbon/human/H = M var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") if(!B) + message_admins("No breasts found on init!") return var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) B.prev_size = B.size @@ -721,7 +722,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING overdose_threshold = 12 //ODing makes you male and removes female genitals metabolization_rate = 0.5 ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth - InverseChemVal = 0.25 + InverseChemVal = 0.3 InverseChem = "PEsmaller" //At really impure vols, it just becomes 100% inverse //var/mob/living/carbon/human/H @@ -1104,7 +1105,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y /datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M) . = ..() if(!creatorID) - CRASH("Something went wrong in enthral creation") + message_admins("Something went wrong in enthral creation THIS SHOULD NOT APPEAR") + return message_admins("key: [M.ckey] vs [creatorID], ") if(purity < 0.5)//Impure chems don't function as you expect return @@ -1128,8 +1130,6 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y /datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M) - if (M.ckey == creatorID && creatorName == M.real_name) - return if(purity < 0.5)//Placeholder for now. I'd like to get this done. if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them. if(M.has_status_effect(STATUS_EFFECT_INLOVE)) @@ -1151,17 +1151,34 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y M.reagents.remove_reagent(src.id, src.volume) FallInLove(C, M) return - var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall) + if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it does nothing. + return + var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)//If purity is over 5, works as intended if(!E) M.reagents.remove_reagent(src.id, 10) M.apply_status_effect(/datum/status_effect/chem/enthrall) - CRASH("No enthrall status found in [M]!") + message_admins("No enthrall status found in [M]!") E.enthrallTally += 1 - M.adjustBrainLoss(0.1) + if(prob(50)) + M.adjustBrainLoss(0.1)//Honestly this could be removed, in testing it made everyone brain damaged, but on the other hand, we were chugging tons of it. ..() -/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly. +/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly. I made it so the creator is set to gain the status for someone random. . = ..() + if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks 150u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.) + var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers + for(var/victim in seen) + if((victim != mob/living/carbon/M) || (victim == M))//as much as I want you to fall for beepsky, he doesn't have a ckey + if(!victim.ckey) + seen = seen - victim + var/chosen = pick(seen) + creatorID = chosen.ckey + if (chosen.gender == "female") + creatorGender = "Mistress" + else + creatorGender = "Master" + creatorName = chosen.real_name + creator = get_mob_by_key(creatorID) M.add_trait(TRAIT_PACIFISM, "MKUltra") var/datum/status_effect/chem/enthrall/E if (!M.has_status_effect(/datum/status_effect/chem/enthrall)) @@ -1180,7 +1197,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y E.customTriggers = list() /datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M) - M.adjustBrainLoss(0.2) + M.adjustBrainLoss(0.1)//should be 15 in total ..() //Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system. @@ -1447,7 +1464,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y name = "Fermis Test Reagent" id = "fermiTest" description = "You should be really careful with this...! Also, how did you get this?" - data = list("Big bang" = 1, "please work" = 2) + //data = list("Big bang" = 1, "please work" = 2) + addProc = TRUE /datum/reagent/fermi/fermiTest/on_new() ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 7a9d631496..84d1947a1a 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -194,7 +194,7 @@ name = "Astrogen" id = "astral" results = list("astral" = 3) - required_reagents = list("eigenstasium" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5) + required_reagents = list("eigenstate" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5) //FermiChem vars: OptimalTempMin = 200 OptimalTempMax = 800