From be8865ba4b7ab35cf82ffcb6db7307f976a95edf Mon Sep 17 00:00:00 2001 From: Tom <8881105+tf-4@users.noreply.github.com> Date: Mon, 22 Nov 2021 21:19:28 +0000 Subject: [PATCH] Refactors "chemistry" (#9532) * Refactors "chemistry" * Review + map checks * More vars * missed calls to parent * Requested changes * final comment tidy up * Update modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm * Update modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm * another var * Shift vars around & remove vars on humans * final (?) var shuffling * oops --- _maps/map_files/Blueshift/BlueShift.dmm | 2 - _maps/map_files/NSSJourney/NSSJourney.dmm | 1 - .../RandomRuins/SpaceRuins/interdynefob.dmm | 5 - .../code/lewd_chemistry/chemistry_for_ERP.dm | 762 ++++++++---------- .../code/lewd_clothing/bdsm_mask.dm | 2 +- 5 files changed, 329 insertions(+), 443 deletions(-) diff --git a/_maps/map_files/Blueshift/BlueShift.dmm b/_maps/map_files/Blueshift/BlueShift.dmm index 2b08c20f08d..be1b9fb1d1c 100644 --- a/_maps/map_files/Blueshift/BlueShift.dmm +++ b/_maps/map_files/Blueshift/BlueShift.dmm @@ -27831,7 +27831,6 @@ /area/hallway/secondary/entry) "eac" = ( /obj/effect/turf_decal/bot, -/obj/structure/reagent_dispensers/keg/aphro, /turf/open/floor/plating, /area/maintenance/fore/upper) "ead" = ( @@ -100211,7 +100210,6 @@ }, /area/maintenance/fore/upper) "oOo" = ( -/obj/structure/reagent_dispensers/keg/aphro, /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/maintenance/starboard/fore) diff --git a/_maps/map_files/NSSJourney/NSSJourney.dmm b/_maps/map_files/NSSJourney/NSSJourney.dmm index 9a66659b004..6372f39ce71 100644 --- a/_maps/map_files/NSSJourney/NSSJourney.dmm +++ b/_maps/map_files/NSSJourney/NSSJourney.dmm @@ -38195,7 +38195,6 @@ /obj/structure/sign/poster/official/no_erp{ pixel_y = 32 }, -/obj/structure/reagent_dispensers/keg/cum, /obj/item/clothing/under/syndicate/tacticool{ pixel_y = 5 }, diff --git a/modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/interdynefob.dmm b/modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/interdynefob.dmm index f0843809524..37928328c32 100644 --- a/modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/interdynefob.dmm +++ b/modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/interdynefob.dmm @@ -3366,7 +3366,6 @@ /obj/item/radio/headset/headset_sec/alt/interdyne, /obj/item/clothing/under/utility/sec/old/syndicate, /obj/structure/closet/secure_closet{ - icon = 'icons/obj/closet.dmi'; icon_state = "sec"; name = "brig officer's locker"; req_access_txt = "151" @@ -5180,7 +5179,6 @@ "sd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/reagent_dispensers/keg/aphro, /turf/open/floor/wood, /area/ruin/space/has_grav/skyrat/interdynefob/maintenance/southwest) "se" = ( @@ -5224,7 +5222,6 @@ /area/ruin/space/has_grav/skyrat/interdynefob/cargo/mining_equipment) "si" = ( /obj/structure/closet/secure_closet{ - icon = 'icons/obj/closet.dmi'; icon_state = "sec"; name = "brig officer's locker"; req_access_txt = "150" @@ -12676,7 +12673,6 @@ /area/ruin/space/has_grav/skyrat/interdynefob/security/prison) "QU" = ( /obj/structure/closet/secure_closet{ - icon = 'icons/obj/closet.dmi'; icon_state = "warden"; name = "master at arms' locker"; req_access_txt = "151" @@ -14825,7 +14821,6 @@ /area/ruin/space/has_grav/skyrat/interdynefob/bridge) "Yn" = ( /obj/structure/closet/secure_closet{ - icon = 'icons/obj/closet.dmi'; icon_state = "sec"; name = "brig officer's locker"; req_access_txt = "151" diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm index 75a52317641..f1d86d155e5 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_chemistry/chemistry_for_ERP.dm @@ -1,587 +1,481 @@ -////////////////// -///APHRODISIACS/// -////////////////// +// The base ERP chem. It handles pref and human type checks for you, so ALL chems relating to ERP should be subtypes of this. +/datum/reagent/drug/aphrodisiac + name = "liquid ERP" + description = "ERP in its liquified form. Complain to a coder." + + /// What preference you need enabled for effects on life + var/life_pref_datum = /datum/preference/toggle/erp + /// What preference you need enabled for effects on overdose + var/overdose_pref_datum = /datum/preference/toggle/erp + + /// The amount to adjust the mob's arousal by + var/arousal_adjust_amount = 1 + /// The amount to adjust the mob's pleasure by + var/pleasure_adjust_amount = 0 + /// The amount to adjust the mob's pain by + var/pain_adjust_amount = 0 + + // Vars for enlargement chems from here on + /// Counts up to a threshold before triggering enlargement effects + var/enlargement_amount = 0 + /// How much to increase the count by each process + var/enlarger_increase_step = 5 + /// Count to reach before effects + var/enlargement_threshold = 100 + + /// % chance for damage to be applied when the organ is too large and the mob is clothed + var/damage_chance = 20 + + /// Largest length the chem can make a mob's penis + var/penis_max_length = PENIS_MAX_LENGTH + /// Smallest size the chem can make a mob's penis + var/penis_min_length = PENIS_MIN_LENGTH + /// How much the penis is increased in size each time it's run + var/penis_length_increase_step = 1 + /// How much the penis is increased in girth each time it's run + var/penis_girth_increase_step = 1 + /// Largest girth the chem can make a mob's penis + var/penis_max_girth = PENIS_MAX_GIRTH + /// Smallest girth the chem can make a mob's penis + var/penis_minimum_girth = 2 + /// How much to reduce the size of the penis each time it's run + var/penis_size_reduction_step = 2 + /// How much to reduce the girth of the penis each time it's run + var/penis_girth_reduction_step = 2 + + /// Largest size the chem can make a mob's breasts + var/max_breast_size = 16 + /// How much breasts are increased in size each time it's run + var/breast_size_increase_step = 1 + /// Smallest size the chem can make a mob's breasts + var/breast_minimum_size = 2 + /// How much to reduce the size of the breasts each time it's run + var/breast_size_reduction_step = 1 + +/// Runs on life after preference checks. Use this instead of on_mob_life +/datum/reagent/drug/aphrodisiac/proc/life_effects(mob/living/carbon/human/exposed_mob) + return + +/// Runs on OD process after preference checks. Use this instead of overdose_process +/datum/reagent/drug/aphrodisiac/proc/overdose_effects(mob/living/carbon/human/exposed_mob) + return + +/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/carbon/human/exposed_mob) + . = ..() + if(life_pref_datum && exposed_mob.client?.prefs.read_preference(life_pref_datum) && ishuman(exposed_mob)) + life_effects(exposed_mob) + +/datum/reagent/drug/aphrodisiac/overdose_process(mob/living/carbon/human/exposed_mob) + . = ..() + if(overdose_pref_datum && exposed_mob.client?.prefs.read_preference(overdose_pref_datum) && ishuman(exposed_mob)) + overdose_effects(exposed_mob) + +/* +* APHRODISIACS +*/ //Crocin. Basic aphrodisiac with no consequences - -/datum/reagent/drug/crocin - name = "Crocin" +/datum/reagent/drug/aphrodisiac/crocin + 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 + color = "#FFADFF" + life_pref_datum = /datum/preference/toggle/erp/aphro + arousal_adjust_amount = 1 + pleasure_adjust_amount = 0 + pain_adjust_amount = 0 -/datum/reagent/drug/crocin/on_mob_life(mob/living/carbon/human/M) - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/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, span_notice("[aroused_message]")) - if(ishuman(M)) - M.adjustArousal(1) - for(var/obj/item/organ/genital/G in M.internal_organs) - if(!G.aroused == AROUSAL_CANT) - G.aroused = AROUSAL_FULL - G.update_sprite_suffix() - M.update_body() - ..() + /// Probability of the chem triggering an emote, as a %, run on mob life + var/emote_probability = 3 + /// Probability of the chem triggering a to_chat, as a %, run on mob life + var/thought_probability = 2 + + /// A list of possible emotes the chem is able to trigger + var/list/possible_aroused_emotes = list("moan", "blush") + + /// A list of possible to_chat messages the chem is able to trigger + var/list/possible_aroused_thoughts = list("You feel frisky.", "You're having trouble suppressing your urges.", "You feel in the mood.") + + +/datum/reagent/drug/aphrodisiac/crocin/life_effects(mob/living/carbon/human/exposed_mob) + if(prob(emote_probability)) + exposed_mob.emote(pick(possible_aroused_emotes)) + if(prob(thought_probability)) + var/displayed_thought = pick(possible_aroused_thoughts) + to_chat(exposed_mob, span_notice("[displayed_thought]")) + + exposed_mob.adjustArousal(arousal_adjust_amount) + exposed_mob.adjustPleasure(pleasure_adjust_amount) + exposed_mob.adjustPain(pain_adjust_amount) + + for(var/obj/item/organ/genital/mob_genitals in exposed_mob.internal_organs) + if(!mob_genitals.aroused == AROUSAL_CANT) + mob_genitals.aroused = AROUSAL_FULL + mob_genitals.update_sprite_suffix() + exposed_mob.update_body() //Hexacrocin. Advanced aphrodisiac that can cause brain traumas. - -/datum/reagent/drug/hexacrocin - name = "Hexacrocin" +/datum/reagent/drug/aphrodisiac/crocin/hexacrocin + name = "hexacrocin" description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive for most animals.\ Addiction withdrawals can cause brain damage and shortness of breath. Overdose can lead to brain traumas." taste_description = "liquid desire" - color = "#FF2BFF"//dark pink - overdose_threshold = 25 //Heavy consequences. Supposed to be big value. + color = "#FF2BFF" + overdose_threshold = 25 + overdose_pref_datum = /datum/preference/toggle/erp/bimbofication -/datum/reagent/drug/hexacrocin/on_mob_life(mob/living/carbon/human/M) - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/aphro))) - if(prob(5)) - if(prob(current_cycle)) - M.say(pick("Hnnnnngghh...", "Ohh...", "Mmnnn...","Ghhmph...")) - 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, span_purple("[aroused_message]")) - if(ishuman(M)) - M.adjustArousal(2) - M.adjustPleasure(1.5) - M.adjustPain(0.2) - for(var/obj/item/organ/genital/G in M.internal_organs) - if(!G.aroused == AROUSAL_CANT) - G.aroused = AROUSAL_FULL - G.update_sprite_suffix() - M.update_body() - ..() + emote_probability = 5 + thought_probability = 5 + arousal_adjust_amount = 2 + pleasure_adjust_amount = 1.5 + pain_adjust_amount = 0.2 + possible_aroused_thoughts = list("You feel a bit hot.", "You feel strong sexual urges.", "You feel in the mood.", "You're ready to go down on someone.") + + /// A list of possible to_chat messages the chem is able to trigger after enough cycles in the mobs system + var/list/extreme_aroused_thoughts = list("You need to fuck someone!", "You're bursting with sexual tension!", "You can't get sex off your mind!") + /// How many cycles the chem has to be in the mob's system before triggering extreme effects + var/extreme_thought_threshold = 25 + +/datum/reagent/drug/aphrodisiac/crocin/hexacrocin/life_effects(mob/living/carbon/human/exposed_mob) + . = ..() + if(prob(thought_probability) && current_cycle >= extreme_thought_threshold) + var/displayed_extreme_thought = pick(extreme_aroused_thoughts) + to_chat(exposed_mob, span_purple("[displayed_extreme_thought]")) + +/datum/reagent/drug/aphrodisiac/crocin/hexacrocin/overdose_effects(mob/living/carbon/human/exposed_mob) + if(HAS_TRAIT(exposed_mob, TRAIT_BIMBO) || HAS_TRAIT(exposed_mob, TRAIT_SOBSESSED)) + return ..() + + if(prob(5)) + to_chat(exposed_mob, span_purple("Your libido is going haywire! Speaking gets much harder...")) + exposed_mob.gain_trauma(/datum/brain_trauma/special/bimbo, TRAUMA_RESILIENCE_BASIC) + ADD_TRAIT(exposed_mob, TRAIT_BIMBO, LEWDCHEM_TRAIT) -/datum/reagent/drug/hexacrocin/overdose_process(mob/living/carbon/human/M) - var/mob/living/carbon/human/H = M - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/bimbofication))) - if(prob(5) && ishuman(M) && !HAS_TRAIT(M, TRAIT_BIMBO) && !HAS_TRAIT(M, TRAIT_SOBSESSED)/* && M.has_dna() && some shit about bimbofication*/) //yes, pal. an i'm the horseman of the Apocalypse that will make it work. Sorry. - to_chat(M, span_purple("Your libido is going haywire! Speaking gets much harder...")) - H.gain_trauma(/datum/brain_trauma/special/bimbo, TRAUMA_RESILIENCE_BASIC) //what am i doing with my life. - ADD_TRAIT(M, TRAIT_BIMBO, LEWDCHEM_TRAIT) - ..() //Dopamine. Generates in character after orgasm. - -/datum/reagent/drug/dopamine +/datum/reagent/drug/aphrodisiac/dopamine name = "dopamine" - description = "Pure happines" - taste_description = "indescribable slightly sour taste, but something in it relaxes you, filling you with pleasure" + description = "Pure happiness" + taste_description = "an indescribable, slightly sour taste. Something in it relaxes you, filling you with pleasure." color = "#97ffee" glass_name = "dopamine" glass_desc = "Delicious flavored reagent. You feel happy even looking at it." reagent_state = LIQUID overdose_threshold = 10 - overdosed = TRUE - trippy = TRUE + life_pref_datum = /datum/preference/toggle/erp/aphro + overdose_pref_datum = /datum/preference/toggle/erp/aphro + arousal_adjust_amount = 0.5 + pleasure_adjust_amount = 0.3 + pain_adjust_amount = -0.5 -/datum/reagent/drug/dopamine/on_mob_add(mob/living/carbon/human/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_start", /datum/mood_event/orgasm, name) + /// How druggy the chem will make the mob + var/drugginess_amount = 5 + /// How likely the drug is to make the mob druggy per life process + var/drugginess_chance = 7 + +/datum/reagent/drug/aphrodisiac/dopamine/on_mob_add(mob/living/carbon/human/exposed_mob) + if(!(exposed_mob.client?.prefs.read_preference(/datum/preference/toggle/erp/aphro))) + return ..() + SEND_SIGNAL(exposed_mob, COMSIG_ADD_MOOD_EVENT, "[type]_start", /datum/mood_event/orgasm, name) ..() -/datum/reagent/drug/dopamine/on_mob_life(mob/living/carbon/human/M) - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/aphro))) - M.set_drugginess(5) - if(prob(7)) - M.emote(pick("twitch","drool","moan","giggle","shaking")) - ..() +/datum/reagent/drug/aphrodisiac/dopamine/life_effects(mob/living/carbon/human/exposed_mob) + exposed_mob.set_drugginess(drugginess_amount) + if(prob(drugginess_chance)) + exposed_mob.emote(pick("twitch","drool","moan","giggle","shaking")) -/datum/reagent/drug/dopamine/overdose_start(mob/living/carbon/human/M) - to_chat(M, span_purple("You feel so happy!")) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overgasm, name) +/datum/reagent/drug/aphrodisiac/dopamine/overdose_start(mob/living/carbon/human/exposed_mob) + . = ..() + to_chat(exposed_mob, span_purple("You feel so happy!")) + SEND_SIGNAL(exposed_mob, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overgasm, name) -/datum/reagent/drug/dopamine/overdose_process(mob/living/carbon/human/M) - if(M.hallucination < volume && prob(20)) - M.adjustArousal(0.5) - M.adjustPleasure(0.3) - M.adjustPain(-0.5) - if(prob(2)) - M.emote(pick("moan","twitch_s")) - ..() +/datum/reagent/drug/aphrodisiac/dopamine/overdose_effects(mob/living/carbon/human/exposed_mob) + if(!(exposed_mob.hallucination < volume && prob(20))) + return ..() + exposed_mob.adjustArousal(arousal_adjust_amount) + exposed_mob.adjustPleasure(pleasure_adjust_amount) + exposed_mob.adjustPain(pain_adjust_amount) + if(prob(2)) + exposed_mob.emote(pick("moan","twitch_s")) -//////////////////// -///ANAPHRODISIACS/// -//////////////////// +/* +* ANAPHRODISIACS +*/ //Camphor. Used to reduce libido. - -/datum/reagent/drug/camphor +/datum/reagent/drug/aphrodisiac/camphor name = "Camphor" - description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When ingested by most animals, it acts as an anaphrodisiac\ - , reducing libido and calming them. Non-habit forming and non-addictive." + description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When ingested by most animals it acts as an anaphrodisiac, \ + reducing libido and calming them. Non-habit forming and non-addictive." taste_description = "dull bitterness" taste_mult = 2 color = "#D9D9D9"//rgb(157, 157, 157) reagent_state = SOLID + life_pref_datum = /datum/preference/toggle/erp/aphro + arousal_adjust_amount = -12 + pleasure_adjust_amount = -3 -/datum/reagent/drug/camphor/on_mob_life(mob/living/carbon/human/M) - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/aphro))) - if(ishuman(M)) - var/old_arousal = M.arousal - M.adjustArousal(-12) - M.adjustPleasure(-3) - if(M.arousal <= 0 && old_arousal > 0) - to_chat(M, span_notice("You no longer feel aroused.")) - ..() +/datum/reagent/drug/aphrodisiac/camphor/life_effects(mob/living/carbon/human/exposed_mob) + var/old_arousal = exposed_mob.arousal + exposed_mob.adjustArousal(arousal_adjust_amount) + exposed_mob.adjustPleasure(pleasure_adjust_amount) + if(exposed_mob.arousal <= 0 && old_arousal > 0) + to_chat(exposed_mob, span_notice("You no longer feel aroused.")) -//Pentacamphor. Used to PERMANENTLY reduce libido. Possibly can cure bimbofication. I wrote this with a straight face, what am i doing? - -/datum/reagent/drug/pentacamphor +// Pentacamphor. Used to purge crocin and hexacrocin. Can permanently disable arousal or cure bimbofication on overdose. +/datum/reagent/drug/aphrodisiac/camphor/pentacamphor name = "Pentacamphor" 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(255, 255, 255) reagent_state = SOLID overdose_threshold = 20 + arousal_adjust_amount = -18 + overdose_pref_datum = /datum/preference/toggle/erp/aphro -/datum/reagent/drug/pentacamphor/on_mob_life(mob/living/carbon/human/M) - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/aphro))) - if(ishuman(M)) - var/old_arousal = M.arousal - M.adjustArousal(-18) - M.adjustPleasure(-3) - if(M.arousal <= 0 && old_arousal > 0) - to_chat(M, span_notice("You no longer feel aroused.")) + /// How much of the given reagent to remove per operation + var/reagent_reduction_amount = 20 - if(M.reagents.has_reagent(/datum/reagent/drug/crocin)) - M.reagents.remove_reagent(/datum/reagent/drug/crocin, 20) - if(M.reagents.has_reagent(/datum/reagent/drug/hexacrocin)) - M.reagents.remove_reagent(/datum/reagent/drug/hexacrocin, 20) - ..() +/datum/reagent/drug/aphrodisiac/camphor/pentacamphor/life_effects(mob/living/carbon/human/exposed_mob) + . = ..() + if(exposed_mob.reagents.has_reagent(/datum/reagent/drug/aphrodisiac/crocin)) + exposed_mob.reagents.remove_reagent(/datum/reagent/drug/aphrodisiac/crocin, reagent_reduction_amount) + if(exposed_mob.reagents.has_reagent(/datum/reagent/drug/aphrodisiac/crocin/hexacrocin)) + exposed_mob.reagents.remove_reagent(/datum/reagent/drug/aphrodisiac/crocin/hexacrocin, reagent_reduction_amount) -/datum/reagent/drug/pentacamphor/overdose_process(mob/living/carbon/human/M) - var/mob/living/carbon/human/H = M - if(M.client && (M.client.prefs.read_preference(/datum/preference/toggle/erp/aphro))) - if(!HAS_TRAIT(M, TRAIT_BIMBO) && !HAS_TRAIT(M, TRAIT_NEVERBONER)) - to_chat(M, span_notice("You feel like you'll never feel aroused again...")) //Go to horny jail *bonk* - ADD_TRAIT(M,TRAIT_NEVERBONER, LEWDCHEM_TRAIT) +/datum/reagent/drug/aphrodisiac/camphor/pentacamphor/overdose_effects(mob/living/carbon/human/exposed_mob) + if(!HAS_TRAIT(exposed_mob, TRAIT_BIMBO) && !HAS_TRAIT(exposed_mob, TRAIT_NEVERBONER)) + to_chat(exposed_mob, span_notice("You feel like you'll never feel aroused again...")) + ADD_TRAIT(exposed_mob,TRAIT_NEVERBONER, LEWDCHEM_TRAIT) - if(HAS_TRAIT(M, TRAIT_BIMBO)) - if(prob(30)) - H.cure_trauma_type(/datum/brain_trauma/special/bimbo, TRAUMA_RESILIENCE_BASIC) - to_chat(M, span_notice("Your mind is free from purple liquid substance. Your thoughts are pure and innocent again.")) - REMOVE_TRAIT(M, TRAIT_BIMBO, LEWDCHEM_TRAIT) - ..() + if(HAS_TRAIT(exposed_mob, TRAIT_BIMBO)) + if(prob(30)) + exposed_mob.cure_trauma_type(/datum/brain_trauma/special/bimbo, TRAUMA_RESILIENCE_BASIC) + to_chat(exposed_mob, span_notice("Your mind is free. Your thoughts are pure and innocent once more.")) + REMOVE_TRAIT(exposed_mob, TRAIT_BIMBO, LEWDCHEM_TRAIT) -/////////////////////////////////// -///GENITAL ENLARGEMENT CHEMICALS/// -/////////////////////////////////// +/* +* GENITAL ENLARGEMENT CHEMICALS +*/ -//Some global vars, you can make this stuff work more smart than i did. -/mob/living/carbon/human - var/breast_enlarger_amount = 0 +/* +* BREAST ENLARGEMENT +* Normal function increases the player's breast size. +* If the player's breasts are near or at the maximum size and they're wearing clothing, they press against the player's clothes and causes brute and oxygen damage. +* Overdosing makes you female if male, sets the player's testicles to the minimum size, and shrinks the player's penis to a minimum size. +* Credit to Citadel for the original code before modification +*/ -/mob/living/carbon/human - var/penis_enlarger_amount = 0 - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// BREAST ENLARGE // -//////////////////////////////////////////////////////////////////////////////////////////////////// -//breast englargement -//Honestly the most requested chems -//I'm not a very kinky person, sorry if it's not great -//I tried to make it interesting..!! - -//Normal function increases your breast size by 0.05, 10units = 1 cup. -//If you get stupid big, it presses against your clothes, causing brute and oxydamage. Then rips them off. -//If you keep going, it makes you slower, in speed and action. -//decreasing your size will return you to normal. -//(see the status effect in chem.dm) -//Overdosing on (what is essentially space estrogen) makes you female, removes balls and shrinks your dick. -//OD is low for a reason. I'd like fermichems to have low ODs, and dangerous ODs, and since this is a meme chem that everyone will rush to make, it'll be a lesson learnt early. - -//Thank you, person from Citadel for creating this code. I borrowed it and changed for skyrat, i hope you don't mind! - -/datum/reagent/breast_enlarger - name = "Succubus milk" +/datum/reagent/drug/aphrodisiac/breast_enlarger + name = "succubus milk" description = "A volatile collodial mixture derived from milk that encourages mammary production via a potent estrogen mix." color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." - overdose_threshold = 17 + overdose_threshold = 20 metabolization_rate = 0.25 - var/message_spam = FALSE + life_pref_datum = /datum/preference/toggle/erp/breast_enlargement + overdose_pref_datum = /datum/preference/toggle/erp/gender_change -/datum/reagent/breast_enlarger/on_mob_metabolize(mob/living/M) - . = ..() - if(!ishuman(M)) //The monkey clause - if(volume >= 15) //To prevent monkey breast farms - var/turf/T = get_turf(M) - var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T) - M.visible_message(span_warning("A pair of breasts suddenly fly out of the [M]!")) - var/T2 = get_random_station_turf() - M.adjustBruteLoss(25) - M.Paralyze(50) - M.Stun(50) - B.throw_at(T2, 8, 1) - M.reagents.del_reagent(type) - return - -/datum/reagent/breast_enlarger/on_mob_life(mob/living/carbon/human/M) //Increases breast size - var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) - if(!ishuman(M))//Just in case - return..() - - if(H.client?.prefs.read_preference(/datum/preference/toggle/erp/breast_enlargement)) - M.breast_enlarger_amount += 5 - if(M.breast_enlarger_amount >= 100) - if(B && B?.genital_size < 16) - B.genital_size += 1 - B.update_sprite_suffix() - M.update_body() - M.breast_enlarger_amount = 0 - - if(M.reagents.has_reagent(/datum/reagent/breast_enlarger)) - M.reagents.remove_reagent(/datum/reagent/penis_enlarger, 20) - - else - return - - //otherwise proceed as normal - if(ISINRANGE_EX(B?.genital_size, 14, 16) && (H.w_uniform || H.wear_suit)) - var/target = H.get_bodypart(BODY_ZONE_CHEST) - if(!message_spam) - to_chat(H, span_danger("Your breasts begin to strain against your clothes tightly!")) - message_spam = TRUE - H.adjustOxyLoss(5, 0) - H.apply_damage(1, BRUTE, target) - - //If they've opted out, then route processing though liver. - if(!(H.client?.prefs.read_preference(/datum/preference/toggle/erp/breast_enlargement))) - var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.applyOrganDamage(0.25) - else - H.adjustToxLoss(1) - return..() - return ..() - -/datum/reagent/breast_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a female if character is male. Also supposed to add breasts but i'm too dumb to figure out how to make it work - var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) - var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) - if(!(M.client?.prefs.read_preference(/datum/preference/toggle/erp/gender_change))) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.applyOrganDamage(0.25) - return ..() - - if(M.gender == MALE) - M.set_gender(FEMALE) - M.body_type = M.gender - M.update_body() - M.update_mutations_overlay() - - //some trap/futa stuff or something, idk. Useroth asked me to keep these organs - if(P) - if(P.genital_size >=3) +/datum/reagent/drug/aphrodisiac/breast_enlarger/life_effects(mob/living/carbon/human/exposed_mob) //Increases breast size + var/obj/item/organ/genital/breasts/mob_breasts = exposed_mob.getorganslot(ORGAN_SLOT_BREASTS) + enlargement_amount += enlarger_increase_step + if(enlargement_amount >= enlargement_threshold) + if(mob_breasts?.genital_size >= max_breast_size) return - else - (P.genital_size -=2) - if(T) - (T.genital_size = 1) + mob_breasts.genital_size += breast_size_increase_step + mob_breasts.update_sprite_suffix() + exposed_mob.update_body() + enlargement_amount = 0 + + if(ISINRANGE_EX(mob_breasts?.genital_size, (max_breast_size - 2), (max_breast_size)) && (exposed_mob.w_uniform || exposed_mob.wear_suit)) + var/target_bodypart = exposed_mob.get_bodypart(BODY_ZONE_CHEST) + if(prob(damage_chance)) + to_chat(exposed_mob, span_danger("Your breasts begin to strain against your clothes!")) + exposed_mob.adjustOxyLoss(5, 0) + exposed_mob.apply_damage(1, BRUTE, target_bodypart) + +/datum/reagent/drug/aphrodisiac/breast_enlarger/overdose_effects(mob/living/carbon/human/exposed_mob) //Turns you into a female if character is male. Also supposed to add breasts but enlargement_amount'm too dumb to figure out how to make it work + var/obj/item/organ/genital/penis/mob_penis = exposed_mob.getorganslot(ORGAN_SLOT_PENIS) + var/obj/item/organ/genital/testicles/mob_testicles = exposed_mob.getorganslot(ORGAN_SLOT_TESTICLES) + if(exposed_mob.gender == MALE) + exposed_mob.set_gender(FEMALE) + exposed_mob.body_type = exposed_mob.gender + exposed_mob.update_body() + exposed_mob.update_mutations_overlay() + + if(mob_penis.genital_size > penis_min_length && mob_penis.girth > penis_minimum_girth) + mob_penis.genital_size -= penis_size_reduction_step + mob_penis.girth -= penis_girth_reduction_step + + mob_testicles.genital_size = 1 - return ..() /* -Dear skyrat! I want someone to suffer, because for some reason genitals can't be added same as other organs. We tested on autosurgeon - it broken, we tired of trying making this thing work and if you finish it for us we will appreciate it. Thank you! -Otherway you can just cut it. Cutting is fun! -Haha! Kill me please. - -/datum/reagent/breast_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a female if character is male, doesn't touch nonbinary and object genders. - var/obj/item/organ/genital/penis/P = M.getorganslot(ORGAN_SLOT_PENIS) - var/obj/item/organ/genital/testicles/T = M.getorganslot(ORGAN_SLOT_TESTICLES) - var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) - if(!(M.client?.prefs.skyrat_toggles & FORCED_FEM)) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.applyOrganDamage(0.25) - return ..() - - if(!B) - var/obj/item/organ/genital/breasts/given_breasts = new /obj/item/organ/genital/breasts(get_turf(M)) - B = given_breasts - B.Insert(M) - if(M.dna.species.use_skintones) - B.color = SKINTONE2HEX(M.skin_tone) - else if(M.dna.features["breasts_color"]) - B.color = "#[M.dna.features["breasts_color"]]" - else - B.color = SKINTONE2HEX(M.skin_tone) - to_chat(M, span_warning("Your chest feels warm, tingling with newfound sensitivity.")) - M.update_body() - B.update_genital_icon_state() - B.update_sprite_suffix() - - if(M.gender == MALE) - M.set_gender(FEMALE) - - if(P) - if(P.genital_size >=2) - return - else - (P.genital_size -=3) - if(T) - qdel(T) - - return ..() +* PENIS ENLARGEMENT +* Normal function increases the player's penis size. +* If the player's penis is near or at the maximum size and they're wearing clothing, it presses against the player's clothes and causes brute damage. +* Overdosing makes you male if female and shrinks the player's breasts to a minimum size. */ -//////////////////////////////////////////////////////////////////////////////////////////////////// -// PENIS ENLARGE // -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//See breast explanation, it's the same but with taliwhackers -//instead of slower movement and attacks, it slows you and increases the total blood you need in your system. -//Since someone else made this in the time it took me to PR it, I merged them. - -/datum/reagent/penis_enlarger // Due to popular demand...! +/datum/reagent/drug/aphrodisiac/penis_enlarger name = "Incubus draft" - description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix, formula derived from a collaboration from Fermichem and Doctor Ronald Hyatt, who is well known for his phallus palace." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? dumb - color = "#888888" // This is greyish..? + description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix." + color = "#888888" taste_description = "chinese dragon powder" overdose_threshold = 17 //ODing makes you male and removes female genitals metabolization_rate = 0.5 + life_pref_datum = /datum/preference/toggle/erp/penis_enlargement + overdose_pref_datum = /datum/preference/toggle/erp/gender_change -/datum/reagent/penis_enlarger/on_mob_metabolize(mob/living/M) - . = ..() - if(!ishuman(M)) //Just monkeying around. - if(volume >= 15) //to prevent monkey penis farms - var/turf/T = get_turf(M) - var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T) - M.visible_message(span_warning("A penis suddenly flies out of the [M]!")) - var/T2 = get_random_station_turf() - M.adjustBruteLoss(25) - M.Paralyze(50) - M.Stun(50) - P.throw_at(T2, 8, 1) - M.reagents.del_reagent(type) - return +/datum/reagent/drug/aphrodisiac/penis_enlarger/life_effects(mob/living/carbon/human/exposed_mob) + var/obj/item/organ/genital/penis/mob_penis = exposed_mob.getorganslot(ORGAN_SLOT_PENIS) + enlargement_amount += enlarger_increase_step + if(enlargement_amount >= enlargement_threshold) + if(mob_penis?.genital_size >= penis_max_length || mob_penis?.girth >= penis_max_girth) + return ..() + mob_penis.genital_size += penis_length_increase_step + if(prob(20)) + mob_penis.girth += penis_girth_increase_step + mob_penis.update_sprite_suffix() + exposed_mob.update_body() + enlargement_amount = 0 -/datum/reagent/penis_enlarger/on_mob_life(mob/living/carbon/human/M) //Increases penis size, 5u = +1 inch. - var/mob/living/carbon/human/H = M - var/obj/item/organ/genital/penis/P = H.getorganslot(ORGAN_SLOT_PENIS) - if(!ishuman(M)) - return ..() + if(ISINRANGE_EX(mob_penis?.genital_size, (penis_max_length - 2), penis_max_length) && (exposed_mob.w_uniform || exposed_mob.wear_suit)) + var/target_bodypart = exposed_mob.get_bodypart(BODY_ZONE_PRECISE_GROIN) + if(prob(damage_chance)) + to_chat(exposed_mob, span_danger("You feel a tightness in your pants!")) + exposed_mob.apply_damage(1, BRUTE, target_bodypart) - if(H.client?.prefs.read_preference(/datum/preference/toggle/erp/penis_enlargement)) - M.penis_enlarger_amount += 5 - if(M.penis_enlarger_amount >= 100) - if(P && P?.genital_size < 20) - P.genital_size += 1 - if(prob(20) && P.girth < 20) - P.girth +=1 - P.update_sprite_suffix() - M.update_body() - M.penis_enlarger_amount = 0 - - if(M.reagents.has_reagent(/datum/reagent/penis_enlarger)) - M.reagents.remove_reagent(/datum/reagent/breast_enlarger, 20) - - else - return - - if(ISINRANGE_EX(P?.genital_size, 18, 20) && (H.w_uniform || H.wear_suit)) - var/target = H.get_bodypart(BODY_ZONE_PRECISE_GROIN) - if(prob(20)) - to_chat(H, span_danger("You feel the tight in your pants!")) - H.apply_damage(1, BRUTE, target) - - //If they've opted out, then route processing though liver. - if(!(H.client?.prefs.read_preference(/datum/preference/toggle/erp/penis_enlargement))) - var/obj/item/organ/liver/L = H.getorganslot(ORGAN_SLOT_LIVER) - if(L) - L.applyOrganDamage(0.25) - else - H.adjustToxLoss(1) - return..() return ..() -/datum/reagent/penis_enlarger/overdose_process(mob/living/carbon/human/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. - if(!istype(M)) - return ..() - // let's not kill them if they didn't consent. - if(!(M.client?.prefs.read_preference(/datum/preference/toggle/erp/gender_change))) - return..() +/datum/reagent/drug/aphrodisiac/penis_enlarger/overdose_effects(mob/living/carbon/human/exposed_mob) + var/obj/item/organ/genital/breasts/mob_breasts = exposed_mob.getorganslot(ORGAN_SLOT_BREASTS) + if(exposed_mob.gender == FEMALE) + exposed_mob.set_gender(MALE) + exposed_mob.body_type = exposed_mob.gender + exposed_mob.update_body() + exposed_mob.update_mutations_overlay() - var/obj/item/organ/genital/breasts/B = M.getorganslot(ORGAN_SLOT_BREASTS) - var/obj/item/organ/genital/vagina/V = M.getorganslot(ORGAN_SLOT_VAGINA) - var/obj/item/organ/genital/womb/W = M.getorganslot(ORGAN_SLOT_WOMB) + if(mob_breasts.genital_size > breast_minimum_size) + mob_breasts.genital_size -= breast_size_reduction_step - if(M.gender == FEMALE) - M.set_gender(MALE) - M.body_type = M.gender - M.update_body() - M.update_mutations_overlay() - - if(B) - if(B.genital_size >= 3) - B.genital_size -=2 - else - return - if(V) - if(V.genital_size >= 3) - V.genital_size -=2 - else - return - if(W) - if(W.genital_size >= 3) - V.genital_size -=2 - else - return - return ..() - -//////////////////////// -///CHEMICAL REACTIONS/// -//////////////////////// +/* +* CHEMICAL REACTIONS +*/ /datum/chemical_reaction/crocin - results = list(/datum/reagent/drug/crocin = 6) + results = list(/datum/reagent/drug/aphrodisiac/crocin = 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 + mix_message = "The mixture boils off a pink vapor..." /datum/chemical_reaction/hexacrocin - results = list(/datum/reagent/drug/hexacrocin = 1) - required_reagents = list(/datum/reagent/drug/crocin = 6, /datum/reagent/phenol = 1) - required_temp = 600 //hexacrocin now more dangerous, so higher temperature to prevent clowns making it in ghetto and using smokemachine with it. + results = list(/datum/reagent/drug/aphrodisiac/crocin/hexacrocin = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac/crocin = 6, /datum/reagent/phenol = 1) + required_temp = 600 mix_message = "The mixture rapidly condenses and darkens in color..." /datum/chemical_reaction/camphor - results = list(/datum/reagent/drug/camphor = 6) + results = list(/datum/reagent/drug/aphrodisiac/camphor = 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 + mix_message = "The mixture boils off a yellow, smelly vapor..." -/datum/chemical_reaction/pentacamphor //liquid equivalent of horny jail - results = list(/datum/reagent/drug/pentacamphor = 1) - required_reagents = list(/datum/reagent/drug/camphor = 5, /datum/reagent/acetone = 1) +/datum/chemical_reaction/pentacamphor + results = list(/datum/reagent/drug/aphrodisiac/camphor/pentacamphor = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac/camphor = 5, /datum/reagent/acetone = 1) required_temp = 500 mix_message = "The mixture thickens and heats up slighty..." /datum/chemical_reaction/cum results = list(/datum/reagent/consumable/cum = 5) required_reagents = list(/datum/reagent/blood = 2, /datum/reagent/consumable/milk = 2, /datum/reagent/consumable/salt = 1) - mix_message = "The mixture turns into a gooey, musky white liquid..."//Blood for the organicness, milk for the whiteness, and salt for the taste + mix_message = "The mixture turns into a gooey, musky white liquid..." /datum/chemical_reaction/breast_enlarger - results = list(/datum/reagent/breast_enlarger = 8) - required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/c2/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/crocin = 3) + results = list(/datum/reagent/drug/aphrodisiac/breast_enlarger = 8) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/c2/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac/crocin = 3) mix_message = "the reaction gives off a mist of milk." /datum/chemical_reaction/penis_enlarger - results = list(/datum/reagent/penis_enlarger = 8) - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/c2/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/crocin = 2, /datum/reagent/medicine/salglu_solution = 1) + results = list(/datum/reagent/drug/aphrodisiac/penis_enlarger = 8) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/c2/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac/crocin = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gives off a mist of milk." -/////////////////////// -///BOTTLES AND PILLS/// -/////////////////////// +/* +* PREMADE CONTAINERS +*/ -//bottles +// BOTTLES /obj/item/reagent_containers/glass/bottle/crocin name = "crocin bottle" desc = "A bottle of mild aphrodisiac. Increases libido." - list_reagents = list(/datum/reagent/drug/crocin = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/crocin = 30) /obj/item/reagent_containers/glass/bottle/hexacrocin name = "hexacrocin bottle" desc = "A bottle of strong aphrodisiac. Increases libido. Potentially dangerous." - list_reagents = list(/datum/reagent/drug/hexacrocin = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/crocin/hexacrocin = 30) -/obj/item/reagent_containers/glass/bottle/dopamine //this one is hard to obtain. +/obj/item/reagent_containers/glass/bottle/dopamine name = "dopamine bottle" desc = "Pure pleasure and happines in a bottle." - list_reagents = list(/datum/reagent/drug/dopamine = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/dopamine = 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/camphor = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/camphor = 30) /obj/item/reagent_containers/glass/bottle/pentacamphor name = "pentacamphor bottle" desc = "A bottle of strong anaphrodisiac. Reduces libido." - list_reagents = list(/datum/reagent/drug/pentacamphor = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/camphor/pentacamphor = 30) /obj/item/reagent_containers/glass/bottle/breast_enlarger name = "succubus milk bottle" desc = "A bottle of strong breast enlargement reagent." - list_reagents = list(/datum/reagent/breast_enlarger = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/breast_enlarger = 30) /obj/item/reagent_containers/glass/bottle/penis_enlarger name = "incubus draft bottle" desc = "A bottle of strong penis enlargement reagent." - list_reagents = list(/datum/reagent/penis_enlarger = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac/penis_enlarger = 30) -//pills + +// PILLS /obj/item/reagent_containers/pill/crocin name = "crocin pill (10u)" desc = "I've fallen, and I can't get it up!" icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_pills.dmi' icon_state = "crocin" - list_reagents = list(/datum/reagent/drug/crocin = 10) + list_reagents = list(/datum/reagent/drug/aphrodisiac/crocin = 10) /obj/item/reagent_containers/pill/hexacrocin name = "hexacrocin pill (10u)" desc = "Pill in creepy heart form." icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_pills.dmi' icon_state = "hexacrocin" - list_reagents = list(/datum/reagent/drug/hexacrocin = 10) + list_reagents = list(/datum/reagent/drug/aphrodisiac/crocin/hexacrocin = 10) /obj/item/reagent_containers/pill/dopamine name = "dopamine pill (5u)" desc = "Feelings of orgasm, contained in a pill... Weird." icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_pills.dmi' icon_state = "dopamine" - list_reagents = list(/datum/reagent/drug/dopamine = 5) + list_reagents = list(/datum/reagent/drug/aphrodisiac/dopamine = 5) /obj/item/reagent_containers/pill/camphor name = "camphor pill (10u)" desc = "For the early bird." icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_pills.dmi' icon_state = "camphor" - list_reagents = list(/datum/reagent/drug/camphor = 10) + list_reagents = list(/datum/reagent/drug/aphrodisiac/camphor = 10) /obj/item/reagent_containers/pill/pentacamphor name = "pentacamphor pill (10u)" desc = "The chemical equivalent of horny jail." icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_items/lewd_pills.dmi' icon_state = "pentacamphor" - list_reagents = list(/datum/reagent/drug/pentacamphor = 10) - -//keg - -/obj/structure/reagent_dispensers/keg/aphro - name = "keg of aphrodisiac" - desc = "A keg of aphrodisiac." - icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_structures/kegs.dmi' - icon_state = "crocin" - reagent_id = /datum/reagent/drug/crocin - tank_volume = 150 - -/obj/structure/reagent_dispensers/keg/aphro/strong - name = "keg of strong aphrodisiac" - desc = "A keg of strong and addictive aphrodisiac." - icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_structures/kegs.dmi' - icon_state = "hexacrocin" - reagent_id = /datum/reagent/drug/hexacrocin - tank_volume = 150 - -/obj/structure/reagent_dispensers/keg/cum - name = "keg of cum" - desc = "A keg full of \"reproductive agent\"." - icon = 'modular_skyrat/modules/modular_items/lewd_items/icons/obj/lewd_structures/kegs.dmi' - icon_state = "cumkeg" - reagent_id = /datum/reagent/consumable/cum - tank_volume = 150 + list_reagents = list(/datum/reagent/drug/aphrodisiac/camphor/pentacamphor = 10) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/bdsm_mask.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/bdsm_mask.dm index bbe46990dae..a65e0a4199c 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/bdsm_mask.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_clothing/bdsm_mask.dm @@ -280,7 +280,7 @@ custom_materials = list(/datum/material/glass=1500, /datum/material/plastic=2000) volume = 50 possible_transfer_amounts = list(1,2,3,4,5) - list_reagents = list(/datum/reagent/drug/crocin = 50) //You can make it strating empty, but i'm pretty sure 90% of players will use just aphrodisiacs, so why just don't make their life easier? + list_reagents = list(/datum/reagent/drug/aphrodisiac/crocin = 50) // Standard initialize code for filter /obj/item/reagent_containers/glass/lewd_filter/Initialize()