mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
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
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
},
|
||||
|
||||
@@ -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"
|
||||
|
||||
+328
-434
@@ -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]!</b>"))
|
||||
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!</b>"))
|
||||
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.</b>"))
|
||||
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]!</b>"))
|
||||
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!</b>"))
|
||||
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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user