diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index dc0b304d..161725d6 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -55,6 +55,8 @@ var/blood_state = BLOOD_STATE_NOT_BLOODY var/list/blood_smear = list(BLOOD_STATE_BLOOD = 0, BLOOD_STATE_OIL = 0, BLOOD_STATE_NOT_BLOODY = 0) + var/cumdrip_rate = 0 //how long are we dripping jizz for? + var/name_override //For temporary visible name changes var/genital_override = FALSE //Force genitals on things incase of chems diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 139ab861..ce8af418 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -36,6 +36,9 @@ //heart attack stuff handle_heart() + if(cumdrip_rate > 0 && stat != DEAD) + handle_creampie() + if(stat != DEAD) //Stuff jammed in your limbs hurts handle_embedded_objects() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 44f21f10..ca11c14d 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -415,6 +415,10 @@ /mob/living/carbon/proc/handle_blood() return +/mob/living/carbon/proc/handle_creampie() + return + + /mob/living/carbon/proc/handle_bodyparts() for(var/I in bodyparts) var/obj/item/bodypart/BP = I diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 8e98e2dd..9acc77d5 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -283,6 +283,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/insectguts, /obj/effect/decal/cleanable/semen, + /obj/effect/decal/cleanable/semendrip, /obj/effect/decal/cleanable/milk, /obj/effect/decal/cleanable/femcum, /obj/effect/decal/remains diff --git a/hyperstation/code/modules/arousal/creampie.dm b/hyperstation/code/modules/arousal/creampie.dm new file mode 100644 index 00000000..321efa81 --- /dev/null +++ b/hyperstation/code/modules/arousal/creampie.dm @@ -0,0 +1,16 @@ +/mob/living/carbon/human/handle_creampie() + if(NOBLOOD in dna.species.species_traits) + cumdrip_rate = 0 + return + + if(cumdrip_rate < 0) + cumdrip_rate = 0 + + if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_NOCLONE))) + cumdrip_rate = cumdrip_rate - 1 + cumdrip() + +/mob/living/carbon/human/proc/cumdrip() + .=..() + if(isturf(loc)) + new/obj/effect/decal/cleanable/semendrip(get_turf(src)) \ No newline at end of file diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm index 0befcc44..125c7ec3 100644 --- a/hyperstation/code/obj/fleshlight.dm +++ b/hyperstation/code/obj/fleshlight.dm @@ -177,7 +177,10 @@ if( (P.condom == 1) || (P.sounding == 1)) //If coundomed and/or sounded, do not fire impreg chance O.mob_climax_partner(P, M, FALSE, FALSE, FALSE, TRUE) else //Else, fire impreg chance - O.mob_climax_partner(P, M, FALSE, TRUE, FALSE, TRUE) //climax with their partner remotely, and impreg because people keep asking! + if(G.name == "vagina") //no more spontaneous impregnations through the butt! + O.mob_climax_partner(P, M, FALSE, TRUE, FALSE, TRUE) + else + O.mob_climax_partner(P, M, FALSE, FALSE, FALSE, TRUE) if(option == "Lick") to_chat(M, "You feel a tongue lick you through the portal against your [G.name].") diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index 97d8ac36..dbe34274 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -316,6 +316,7 @@ if(spillage) if(total_fluids > 5) fluid_source.reaction(src.loc, TOUCH, 1, 0) + fluid_source.clear_reagents() src.visible_message("[src] orgasms[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""], with [p_their()] [G.name]!", \ "You climax[istype(src.loc, /turf/open/floor) ? ", spilling onto [src.loc]" : ""] with your [G.name].", \ @@ -364,6 +365,9 @@ if(total_fluids > 5) fluid_source.reaction(L.loc, TOUCH, 1, 0) + var/mob/living/carbon/human/H = L + if(H) + H.cumdrip_rate += rand(5,10) fluid_source.clear_reagents() src.visible_message("[src] climaxes over [L], using [p_their()] [G.name]!", \ "You orgasm over [L], using your [G.name].", \ @@ -389,6 +393,9 @@ total_fluids -= total_fluids*G.fluid_transfer_factor if(total_fluids > 5) fluid_source.reaction(L.loc, TOUCH, 1, 0) + var/mob/living/carbon/human/H = L + if(H) + H.cumdrip_rate += rand(5,10) fluid_source.clear_reagents() src.visible_message("[src] climaxes with [L][spillage ? ", overflowing and spilling":""], using [p_their()] [G.name]!", \ "You orgasm with [L][spillage ? ", spilling out of them":""], using your [G.name].", \ diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 8ac4fc75..e2420ebd 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -34,6 +34,16 @@ icon_state = "semen1" random_icon_states = list("semen1", "semen2", "semen3", "semen4") +/obj/effect/decal/cleanable/semendrip + name = "semen" + desc = null + gender = PLURAL + density = 0 + layer = ABOVE_NORMAL_TURF_LAYER + icon = 'modular_citadel/icons/obj/genitals/effects.dmi' + icon_state = "drip1" + random_icon_states = list("drip1", "drip2", "drip3", "drip4") + /obj/effect/decal/cleanable/semen/Initialize(mapload) . = ..() dir = GLOB.cardinals diff --git a/modular_citadel/icons/obj/genitals/effects.dmi b/modular_citadel/icons/obj/genitals/effects.dmi index e5e62738..5e56d1e3 100644 Binary files a/modular_citadel/icons/obj/genitals/effects.dmi and b/modular_citadel/icons/obj/genitals/effects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 88c3ef44..a6944765 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3110,6 +3110,7 @@ #include "hyperstation\code\modules\antagonists\wendigo\mob\update_icons.dm" #include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm" #include "hyperstation\code\modules\arousal\arousalhud.dm" +#include "hyperstation\code\modules\arousal\creampie.dm" #include "hyperstation\code\modules\cargo\exports\engineering.dm" #include "hyperstation\code\modules\cargo\exports\sweatshop.dm" #include "hyperstation\code\modules\cargo\packs\misc.dm"