From cbac292731bb8d5fabe2c8fd87d13b0bc117a5d7 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 18 Feb 2021 21:22:43 -0800 Subject: [PATCH 1/8] Adds back aphro, nympho --- code/__DEFINES/traits.dm | 1 + code/datums/traits/neutral.dm | 16 +++ code/modules/arousal/arousal.dm | 11 +- code/modules/arousal/genitals.dm | 3 +- .../mob/living/carbon/human/species.dm | 6 +- .../chemistry/reagents/drug_reagents.dm | 125 ++++++++++++++++++ .../chemistry/reagents/other_reagents.dm | 6 + .../reagents/chemistry/recipes/drugs.dm | 32 +++++ .../reagents/chemistry/recipes/others.dm | 2 +- .../reagents/reagent_containers/bottle.dm | 20 +++ code/modules/surgery/organs/vocal_cords.dm | 2 +- code/modules/vending/kinkmate.dm | 3 + .../code/datums/status_effects/chems.dm | 17 ++- .../reagents/chemistry/recipes/fermi.dm | 10 +- 14 files changed, 240 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 3d041edfd2..8e0886a30d 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -191,6 +191,7 @@ #define TRAIT_MUSICIAN "musician" #define TRAIT_PERMABONER "permanent_arousal" #define TRAIT_NEVERBONER "never_aroused" +#define TRAIT_NYMPHO "nymphomaniac" #define TRAIT_MASO "masochism" #define TRAIT_HIGH_BLOOD "high_blood" #define TRAIT_PARA "paraplegic" diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 73813fd253..18d565ed5a 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -105,6 +105,22 @@ gain_text = "You desire to be hurt." lose_text = "Pain has become less exciting for you." +/datum/quirk/libido + name = "Nymphomaniac" + desc = "You are much more sensitive to arousal." + value = 0 + mob_trait = TRAIT_NYMPHO + gain_text = "You are feeling extra wild." + lose_text = "You don't feel that burning sensation anymore." + +/datum/quirk/libido/add() + var/mob/living/carbon/human/H = quirk_holder + H.arousal_rate = 3 * initial(H.arousal_rate) + +/datum/quirk/libido/remove() + var/mob/living/carbon/human/H = quirk_holder + H.arousal_rate = initial(H.arousal_rate) + /datum/quirk/alcohol_intolerance name = "Alcohol Intolerance" desc = "You take toxin damage from alcohol rather than getting drunk." diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index 99683f1688..d800d12501 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -9,6 +9,7 @@ var/hidden_underwear = FALSE var/hidden_undershirt = FALSE var/hidden_socks = FALSE + var/arousal_rate = 1 //Mob procs /mob/living/carbon/human/verb/underwear_toggle() @@ -36,13 +37,14 @@ update_body(TRUE) -/mob/living/carbon/human/proc/adjust_arousal(strength,aphro = FALSE,maso = FALSE) // returns all genitals that were adjust +/mob/living/carbon/human/proc/adjust_arousal(strength, cause = "manual toggle", aphro = FALSE,maso = FALSE) // returns all genitals that were adjust var/list/obj/item/organ/genital/genit_list = list() if(!client?.prefs.arousable || (aphro && (client?.prefs.cit_toggles & NO_APHRO)) || (maso && !HAS_TRAIT(src, TRAIT_MASO))) return // no adjusting made here + var/enabling = strength > 0 for(var/obj/item/organ/genital/G in internal_organs) - if(G.genital_flags & GENITAL_CAN_AROUSE && !G.aroused_state && prob(strength*G.sensitivity)) - G.set_aroused_state(strength > 0) + if(G.genital_flags & GENITAL_CAN_AROUSE && !G.aroused_state && prob(abs(strength)*G.sensitivity * arousal_rate)) + G.set_aroused_state(enabling,cause) G.update_appearance() if(G.aroused_state) genit_list += G @@ -189,7 +191,7 @@ return TRUE //Here's the main proc itself -/mob/living/carbon/human/proc/mob_climax(forced_climax=FALSE) //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints +/mob/living/carbon/human/proc/mob_climax(forced_climax=FALSE,cause = "") //Forced is instead of the other proc, makes you cum if you have the tools for it, ignoring restraints if(mb_cd_timer > world.time) if(!forced_climax) //Don't spam the message to the victim if forced to come too fast to_chat(src, "You need to wait [DisplayTimeText((mb_cd_timer - world.time), TRUE)] before you can do that again!") @@ -202,6 +204,7 @@ to_chat(src, "You can't do that while dead!") return if(forced_climax) //Something forced us to cum, this is not a masturbation thing and does not progress to the other checks + log_message("was forced to climax by [cause]",LOG_EMOTE) for(var/obj/item/organ/genital/G in internal_organs) if(!CHECK_BITFIELD(G.genital_flags, CAN_CLIMAX_WITH)) //Skip things like wombs and testicles continue diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 67de745d22..29aa62d3f4 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -27,11 +27,12 @@ if(do_update) update() -/obj/item/organ/genital/proc/set_aroused_state(new_state) +/obj/item/organ/genital/proc/set_aroused_state(new_state,cause = "manual toggle") if(!(genital_flags & GENITAL_CAN_AROUSE)) return FALSE if(!((HAS_TRAIT(owner,TRAIT_PERMABONER) && !new_state) || HAS_TRAIT(owner,TRAIT_NEVERBONER) && new_state)) aroused_state = new_state + owner.log_message("[src]'s arousal was [new_state ? "enabled" : "disabled"] due to [cause]", LOG_EMOTE) return aroused_state /obj/item/organ/genital/proc/update() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index c3cdb3354f..949902fef2 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1547,9 +1547,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(!user.UseStaminaBuffer(3, warn = TRUE)) return FALSE user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) - target.adjust_arousal(20,maso = TRUE) + target.adjust_arousal(20,"masochism", maso = TRUE) if (ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna() && prob(10)) - target.mob_climax(forced_climax=TRUE) + target.mob_climax(forced_climax=TRUE, "masochism") if (!HAS_TRAIT(target, TRAIT_PERMABONER)) stop_wagging_tail(target) playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) @@ -1931,7 +1931,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(BP.receive_damage(damage_amount, 0, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness)) H.update_damage_overlays() if(HAS_TRAIT(H, TRAIT_MASO) && prob(damage_amount)) - H.mob_climax(forced_climax=TRUE) + H.mob_climax(forced_climax=TRUE, "masochism") else//no bodypart, we deal damage with a more general method. H.adjustBruteLoss(damage_amount) diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 675502c5fb..f5f236ac81 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -563,3 +563,128 @@ var/mob/living/carbon/C = M if(!C.undergoing_cardiac_arrest()) C.set_heartattack(TRUE) + +//aphrodisiac & anaphrodisiac + +/datum/reagent/drug/aphrodisiac + name = "Crocin" + description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." + taste_description = "strawberries" + color = "#FFADFF"//PINK, rgb(255, 173, 255) + can_synth = FALSE + +/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if((prob(min(current_cycle/2,5)))) + M.emote(pick("moan","blush")) + if(prob(min(current_cycle/4,10))) + var/aroused_message = pick("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") + to_chat(M, "[aroused_message]") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(current_cycle, "crocin", aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus + name = "Hexacrocin" + description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ + Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \ + permanent increase in libido (commonly referred to as 'bimbofication')." + taste_description = "liquid desire" + color = "#FF2BFF"//dark pink + addiction_threshold = 20 + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO)) + if(prob(5)) + if(prob(current_cycle)) + M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...")) + else + M.emote(pick("moan","blush")) + if(prob(5)) + var/aroused_message + if(current_cycle>25) + aroused_message = pick("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") + else + aroused_message = pick("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") + to_chat(M, "[aroused_message]") + REMOVE_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(100, "hexacrocin", aphro = TRUE) // redundant but should still be here + for(var/g in genits) + var/obj/item/organ/genital/G = g + to_chat(M, "[G.arousal_verb]!") + ..() + +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2) + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage3(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3) + + ..() +/datum/reagent/drug/aphrodisiacplus/addiction_act_stage4(mob/living/M) + if(prob(30)) + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4) + ..() + +/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) + if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) + if(!HAS_TRAIT(M,TRAIT_PERMABONER)) + to_chat(M, "Your libido is going haywire!") + ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + ..() + +/datum/reagent/drug/anaphrodisiac + name = "Camphor" + description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ + , reducing libido and calming them. Non-habit forming and not addictive." + taste_description = "dull bitterness" + taste_mult = 2 + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiac/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable && prob(16)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, "camphor", aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + ..() + +/datum/reagent/drug/anaphrodisiacplus + name = "Hexacamphor" + description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." + taste_description = "tranquil celibacy" + color = "#D9D9D9"//rgb(217, 217, 217) + reagent_state = SOLID + overdose_threshold = 20 + can_synth = FALSE + +/datum/reagent/drug/anaphrodisiacplus/on_mob_life(mob/living/M) + if(M && M.client?.prefs.arousable) + REMOVE_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/genits = H.adjust_arousal(-100, "hexacamphor", aphro = TRUE) + if(genits.len) + to_chat(M, "You no longer feel aroused.") + + ..() + +/datum/reagent/drug/anaphrodisiacplus/overdose_process(mob/living/M) + if(M && M.client?.prefs.arousable && prob(5)) + to_chat(M, "You feel like you'll never feel aroused again...") + ADD_TRAIT(M,TRAIT_NEVERBONER,APHRO_TRAIT) + ..() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ba7f9a30d5..6552d82e95 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -2362,6 +2362,12 @@ M.emote("nya") if(prob(20)) to_chat(M, "[pick("Headpats feel nice.", "The feeling of a hairball...", "Backrubs would be nice.", "Whats behind those doors?")]") + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/list/adjusted = H.adjust_arousal(2,"catnip", aphro = TRUE) + for(var/g in adjusted) + var/obj/item/organ/genital/G = g + to_chat(M, "You feel like playing with your [G.name]!") ..() /datum/reagent/preservahyde diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 468d29c052..8de4b1248f 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -62,3 +62,35 @@ results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5) required_temp = 315 //a little above normal body temperature required_reagents = list(/datum/reagent/drug/skooma = 1) + +/datum/chemical_reaction/aphro + name = "crocin" + id = /datum/reagent/drug/aphrodisiac + results = list(/datum/reagent/drug/aphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) + required_temp = 400 + mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin + +/datum/chemical_reaction/aphroplus + name = "hexacrocin" + id = /datum/reagent/drug/aphrodisiacplus + results = list(/datum/reagent/drug/aphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) + required_temp = 400 + mix_message = "The mixture rapidly condenses and darkens in color..." + +/datum/chemical_reaction/anaphro + name = "camphor" + id = /datum/reagent/drug/anaphrodisiac + results = list(/datum/reagent/drug/anaphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) + required_temp = 400 + mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor + +/datum/chemical_reaction/anaphroplus + name = "pentacamphor" + id = /datum/reagent/drug/anaphrodisiacplus + results = list(/datum/reagent/drug/anaphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) + required_temp = 300 + mix_message = "The mixture thickens and heats up slighty..." diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 93a422e2f2..6eb0d5825c 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -718,7 +718,7 @@ name = "felinid mutation toxin" id = /datum/reagent/mutationtoxin/felinid results = list(/datum/reagent/mutationtoxin/felinid = 1) - required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/mutationtoxin = 1) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) required_temp = 450 /datum/chemical_reaction/moff diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index e0a7f7c00e..76b08c7cdf 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -417,6 +417,26 @@ name = "bromine bottle" list_reagents = list(/datum/reagent/bromine = 30) +/obj/item/reagent_containers/glass/bottle/crocin + name = "Crocin bottle" + desc = "A bottle of mild aphrodisiac. Increases libido." + list_reagents = list(/datum/reagent/drug/aphrodisiac = 30) + +/obj/item/reagent_containers/glass/bottle/hexacrocin + name = "Hexacrocin bottle" + desc = "A bottle of strong aphrodisiac. Increases libido." + list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30) + +/obj/item/reagent_containers/glass/bottle/camphor + name = "Camphor bottle" + desc = "A bottle of mild anaphrodisiac. Reduces libido." + list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30) + +/obj/item/reagent_containers/glass/bottle/hexacamphor + name = "Hexacamphor bottle" + desc = "A bottle of strong anaphrodisiac. Reduces libido." + list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) + //Ichors /obj/item/reagent_containers/glass/bottle/ichor possible_transfer_amounts = list(1) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 064abf1700..0e6456e8b0 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -829,7 +829,7 @@ if(HAS_TRAIT(L, TRAIT_MASO)) if(ishuman(L)) var/mob/living/carbon/human/H = L - H.adjust_arousal(3*power_multiplier,maso = TRUE) + H.adjust_arousal(3*power_multiplier,"velvet speech", maso = TRUE) descmessage += "And yet, it feels so good..!" //I don't really understand masco, is this the right sort of thing they like? E.enthrallTally += power_multiplier E.resistanceTally -= power_multiplier diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index 2316682e68..1276436495 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -31,6 +31,8 @@ /obj/item/autosurgeon/testicles = 3, /obj/item/storage/pill_bottle/penis_enlargement = 5, /obj/item/storage/pill_bottle/breast_enlargement = 5, + /obj/item/reagent_containers/glass/bottle/crocin = 5, + /obj/item/reagent_containers/glass/bottle/camphor = 5 /obj/item/storage/daki = 4 ) contraband = list( @@ -46,6 +48,7 @@ ) premium = list( /obj/item/clothing/accessory/skullcodpiece/fake = 3, + /obj/item/reagent_containers/glass/bottle/hexacrocin = 10, /obj/item/clothing/under/pants/chaps = 5 ) refill_canister = /obj/item/vending_refill/kink diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 8f48e90068..a39c590976 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -500,13 +500,19 @@ else if (lowertext(customTriggers[trigger]) == "shock") if (lewd && ishuman(C)) var/mob/living/carbon/human/H = C - H.adjust_arousal(5) + H.adjust_arousal(5, "MKUltra", aphro = TRUE) C.jitteriness += 100 C.stuttering += 25 C.DefaultCombatKnockdown(60) C.Stun(60) to_chat(owner, "Your muscles seize up, then start spasming wildy!") + else if (lewd && lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + if(ishuman(C)) + var/mob/living/carbon/human/H = C + H.mob_climax(forced_climax=TRUE, "MKUltra") + C.SetStun(10)//We got your stun effects in somewhere, Kev. + //kneel (knockdown) else if (lowertext(customTriggers[trigger]) == "kneel")//as close to kneeling as you can get, I suppose. to_chat(owner, "You drop to the ground unsurreptitiously.") @@ -588,6 +594,15 @@ deltaResist *= 1.25 if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) deltaResist *= 1.5 + if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && lewd) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) + deltaResist *= 1.5 + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) + deltaResist *= 2 + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac)) + deltaResist *= 0.75 + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus)) + deltaResist *= 0.5 //Antag resistance //cultists are already brainwashed by their god if(iscultist(owner)) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index c144fa9196..ab39e6f4a7 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -176,7 +176,7 @@ name = "Sucubus milk" id = /datum/reagent/fermi/breast_enlarger results = list(/datum/reagent/fermi/breast_enlarger = 8) - required_reagents = list(/datum/reagent/medicine/salglu_solution = 2, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 5) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -216,7 +216,7 @@ name = "Incubus draft" id = /datum/reagent/fermi/penis_enlarger results = list(/datum/reagent/fermi/penis_enlarger = 8) - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 5, /datum/reagent/medicine/salglu_solution = 2) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -383,7 +383,7 @@ name = "Furranium" id = /datum/reagent/fermi/furranium results = list(/datum/reagent/fermi/furranium = 5) - required_reagents = list(/datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 2) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 @@ -404,6 +404,10 @@ //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. +/datum/chemical_reaction/fermi/furranium/organic + id = "furranium_organic" + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) + //Nano-b-gone /datum/chemical_reaction/fermi/nanite_b_gone//done test name = "Naninte bain" From ecc1ff26bb5f0432fd3ecb7ea33cd64b10fec3e5 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 18 Feb 2021 21:27:59 -0800 Subject: [PATCH 2/8] Slightly more logging, whoops added pref --- code/modules/client/preferences.dm | 1 + code/modules/reagents/chemistry/reagents/drug_reagents.dm | 1 + 2 files changed, 2 insertions(+) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3b3b72b840..8109635cd3 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -968,6 +968,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" + dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"]
" dat += "" diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index f5f236ac81..45a87e690b 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -641,6 +641,7 @@ if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION)) if(!HAS_TRAIT(M,TRAIT_PERMABONER)) to_chat(M, "Your libido is going haywire!") + M.log_message("Made perma-horny by hexacrocin.",LOG_EMOTE) ADD_TRAIT(M,TRAIT_PERMABONER,APHRO_TRAIT) ..() From c84dba85dd0066c2d1490c29d10e273e92681ea8 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 18 Feb 2021 21:31:25 -0800 Subject: [PATCH 3/8] should also log climaxes (all of them) --- code/modules/arousal/arousal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index d800d12501..b905db0b4e 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -66,6 +66,7 @@ return var/turfing = isturf(target) G.generate_fluid(R) + log_message("Climaxed using [G] with [target]", LOG_EMOTE) if(spill && R.total_volume >= 5) R.reaction(turfing ? target : target.loc, TOUCH, 1, 0) if(!turfing) @@ -275,7 +276,6 @@ var/obj/item/reagent_containers/fluid_container = pick_climax_container() if(fluid_container && available_rosie_palms(TRUE, /obj/item/reagent_containers)) mob_fill_container(picked_organ, fluid_container) - mb_cd_timer = world.time + mb_cd_length /mob/living/carbon/human/verb/climax_verb() From 990df7df37259328408853d5375452599263dc91 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 18 Feb 2021 21:36:54 -0800 Subject: [PATCH 4/8] added exposure logging --- code/modules/arousal/genitals.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 29aa62d3f4..77b4474863 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -76,12 +76,17 @@ switch(visibility) if(GEN_VISIBLE_ALWAYS) genital_flags |= GENITAL_THROUGH_CLOTHES + owner.log_message("Exposed their [src]",LOG_EMOTE) if(owner) owner.exposed_genitals += src + if(GEN_VISIBLE_NO_CLOTHES) + owner.log_message("Hid their [src] under clothes only",LOG_EMOTE) if(GEN_VISIBLE_NO_UNDIES) genital_flags |= GENITAL_UNDIES_HIDDEN + owner.log_message("Hid their [src] under underwear",LOG_EMOTE) if(GEN_VISIBLE_NEVER) genital_flags |= GENITAL_HIDDEN + owner.log_message("Hid their [src] completely",LOG_EMOTE) if(update && owner && ishuman(owner)) //recast to use update genitals proc var/mob/living/carbon/human/H = owner From 257cd6bb34485b12b8236b051bc16eda291a2ba3 Mon Sep 17 00:00:00 2001 From: Putnam Date: Thu, 18 Feb 2021 21:55:28 -0800 Subject: [PATCH 5/8] keyword argument funnies, whoops comma --- code/modules/mob/living/carbon/human/species.dm | 4 ++-- code/modules/vending/kinkmate.dm | 2 +- modular_citadel/code/datums/status_effects/chems.dm | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 949902fef2..432052d322 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1549,7 +1549,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) target.adjust_arousal(20,"masochism", maso = TRUE) if (ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna() && prob(10)) - target.mob_climax(forced_climax=TRUE, "masochism") + target.mob_climax(forced_climax=TRUE, cause = "masochism") if (!HAS_TRAIT(target, TRAIT_PERMABONER)) stop_wagging_tail(target) playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) @@ -1931,7 +1931,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(BP.receive_damage(damage_amount, 0, wound_bonus = wound_bonus, bare_wound_bonus = bare_wound_bonus, sharpness = sharpness)) H.update_damage_overlays() if(HAS_TRAIT(H, TRAIT_MASO) && prob(damage_amount)) - H.mob_climax(forced_climax=TRUE, "masochism") + H.mob_climax(forced_climax=TRUE, cause = "masochism") else//no bodypart, we deal damage with a more general method. H.adjustBruteLoss(damage_amount) diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index 1276436495..28e5a950ad 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -32,7 +32,7 @@ /obj/item/storage/pill_bottle/penis_enlargement = 5, /obj/item/storage/pill_bottle/breast_enlargement = 5, /obj/item/reagent_containers/glass/bottle/crocin = 5, - /obj/item/reagent_containers/glass/bottle/camphor = 5 + /obj/item/reagent_containers/glass/bottle/camphor = 5, /obj/item/storage/daki = 4 ) contraband = list( diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index a39c590976..0cef4b116f 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -510,7 +510,7 @@ else if (lewd && lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa if(ishuman(C)) var/mob/living/carbon/human/H = C - H.mob_climax(forced_climax=TRUE, "MKUltra") + H.mob_climax(forced_climax=TRUE, cause = "MKUltra") C.SetStun(10)//We got your stun effects in somewhere, Kev. //kneel (knockdown) From c24c339718dfbbeb400374e4a841364bb2532ef7 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 20 Feb 2021 07:36:46 -0800 Subject: [PATCH 6/8] Fixed a runtime might cause issues. This might also break logging completely, which, why. This isn't a high-priority log, though, so. --- code/modules/arousal/genitals.dm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm index 77b4474863..723049a784 100644 --- a/code/modules/arousal/genitals.dm +++ b/code/modules/arousal/genitals.dm @@ -76,17 +76,20 @@ switch(visibility) if(GEN_VISIBLE_ALWAYS) genital_flags |= GENITAL_THROUGH_CLOTHES - owner.log_message("Exposed their [src]",LOG_EMOTE) if(owner) + owner.log_message("Exposed their [src]",LOG_EMOTE) owner.exposed_genitals += src if(GEN_VISIBLE_NO_CLOTHES) - owner.log_message("Hid their [src] under clothes only",LOG_EMOTE) + if(owner) + owner.log_message("Hid their [src] under clothes only",LOG_EMOTE) if(GEN_VISIBLE_NO_UNDIES) genital_flags |= GENITAL_UNDIES_HIDDEN - owner.log_message("Hid their [src] under underwear",LOG_EMOTE) + if(owner) + owner.log_message("Hid their [src] under underwear",LOG_EMOTE) if(GEN_VISIBLE_NEVER) genital_flags |= GENITAL_HIDDEN - owner.log_message("Hid their [src] completely",LOG_EMOTE) + if(owner) + owner.log_message("Hid their [src] completely",LOG_EMOTE) if(update && owner && ishuman(owner)) //recast to use update genitals proc var/mob/living/carbon/human/H = owner From d6350b2e7502a16a5152d9baee07318295d9b938 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 20 Feb 2021 07:41:11 -0800 Subject: [PATCH 7/8] undergarment logging too --- code/modules/arousal/arousal.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index b905db0b4e..4ca489d9b5 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -21,18 +21,22 @@ return if(confirm == "Top") hidden_undershirt = !hidden_undershirt + log_message("[hidden_undershirt ? "removed" : "put on" ] [p_their()] undershirt.") if(confirm == "Bottom") hidden_underwear = !hidden_underwear + log_message("[hidden_underwear ? "removed" : "put on"] [p_their()] underwear.") if(confirm == "Socks") hidden_socks = !hidden_socks + log_message("[hidden_socks ? "removed" : "put on"] [p_their()] socks.") if(confirm == "All") var/on_off = (hidden_undershirt || hidden_underwear || hidden_socks) ? FALSE : TRUE hidden_undershirt = on_off hidden_underwear = on_off hidden_socks = on_off + log_message("[on_off ? "removed" : "put on"] all [p_their()] undergarments.") update_body(TRUE) From a26f850f1c47ce0cff31ca1dc44a27e4691da8f0 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 20 Feb 2021 07:41:37 -0800 Subject: [PATCH 8/8] don't push before thinking, kids --- code/modules/arousal/arousal.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm index 4ca489d9b5..2f7f701012 100644 --- a/code/modules/arousal/arousal.dm +++ b/code/modules/arousal/arousal.dm @@ -21,22 +21,22 @@ return if(confirm == "Top") hidden_undershirt = !hidden_undershirt - log_message("[hidden_undershirt ? "removed" : "put on" ] [p_their()] undershirt.") + log_message("[hidden_undershirt ? "removed" : "put on" ] [p_their()] undershirt.", LOG_EMOTE) if(confirm == "Bottom") hidden_underwear = !hidden_underwear - log_message("[hidden_underwear ? "removed" : "put on"] [p_their()] underwear.") + log_message("[hidden_underwear ? "removed" : "put on"] [p_their()] underwear.", LOG_EMOTE) if(confirm == "Socks") hidden_socks = !hidden_socks - log_message("[hidden_socks ? "removed" : "put on"] [p_their()] socks.") + log_message("[hidden_socks ? "removed" : "put on"] [p_their()] socks.", LOG_EMOTE) if(confirm == "All") var/on_off = (hidden_undershirt || hidden_underwear || hidden_socks) ? FALSE : TRUE hidden_undershirt = on_off hidden_underwear = on_off hidden_socks = on_off - log_message("[on_off ? "removed" : "put on"] all [p_their()] undergarments.") + log_message("[on_off ? "removed" : "put on"] all [p_their()] undergarments.", LOG_EMOTE) update_body(TRUE)