From 68120e2583504319ba85776db3cc240c2ba06cde Mon Sep 17 00:00:00 2001 From: QuoteFox <49098813+quotefox@users.noreply.github.com> Date: Tue, 27 Apr 2021 16:55:22 +0100 Subject: [PATCH] Virile and Macro, Micro traits. Impregnation Chance More lewd code. --- code/__DEFINES/traits.dm | 7 ++++ .../modules/mob/dead/new_player/new_player.dm | 2 +- code/modules/mob/living/living_defines.dm | 2 +- hyperstation/code/datums/traits/neutral.dm | 35 +++++++++++++++++++ .../code/modules/arousal/arousalhud.dm | 2 +- hyperstation/code/modules/resize/resizing.dm | 32 +++++++++++++++-- .../code/modules/arousal/arousal.dm | 27 +++++++------- .../code/modules/arousal/organs/genitals.dm | 2 +- 8 files changed, 89 insertions(+), 20 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index c9e10ea5..ed5e5dea 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -187,6 +187,13 @@ #define TRAIT_NEVER_CLONE "donotclone" #define TRAIT_COLDBLOODED "coldblooded" // Your body is literal room temperature. Does not make you immune to the temp. #define TRAIT_FLIMSY "flimsy" //you have 20% less maxhealth + + +//Hyper +#define TRAIT_VIRILE "virile" //you have 20% more chance of impreg +#define TRAIT_MACROPHILE "macrophile" //likes the big +#define TRAIT_MICROPHILE "microphile" //likes the small + #define TRAIT_TOUGH "tough" //you have 10% more maxhealth #define TRAIT_AUTO_CATCH_ITEM "auto_catch_item" #define TRAIT_CLOWN_MENTALITY "clown_mentality" // The future is now, clownman. diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index d7a8ee3a..7382647a 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -597,7 +597,7 @@ if (H.custom_body_size) //Do they have it set? H.resize(H.custom_body_size * 0.01) if (H.breedable == TRUE) - H.impregchance = 33 + H.impregchance = 25 . = H new_character = . if(transfer_after) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 8c606186..e87691df 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -58,7 +58,7 @@ //H13 custom body size and impregnation var/custom_body_size = 100 var/breedable = 0 - var/impregchance = 33 + var/impregchance = 30 //h13 noncon settings var/Noncon = 0 var/ERP = 0 diff --git a/hyperstation/code/datums/traits/neutral.dm b/hyperstation/code/datums/traits/neutral.dm index 2402a26d..3dee1214 100644 --- a/hyperstation/code/datums/traits/neutral.dm +++ b/hyperstation/code/datums/traits/neutral.dm @@ -47,3 +47,38 @@ M.nutrition = rand(NUTRITION_LEVEL_FAT + NUTRITION_LEVEL_START_MIN, NUTRITION_LEVEL_FAT + NUTRITION_LEVEL_START_MAX) M.overeatduration = 100 ADD_TRAIT(M, TRAIT_FAT, OBESITY) + +/datum/quirk/virile + name = "Virile" + desc = "Either through higher quality sperms, more of them, or just being more horny, your impregnation chance will increase by 20-30%." + value = 1 + medical_record_text = "Patient has a higher sperm count." + mob_trait = TRAIT_VIRILE + gain_text = "You feel more potent." + lose_text = "You feel less potent." + var/ichange = 0 + +/datum/quirk/virile/add() + ichange = rand(20,30) + quirk_holder.impregchance += ichange + +/datum/quirk/virile/remove() + if(quirk_holder) + quirk_holder.impregchance -= ichange + + +/datum/quirk/macrophile + name = "Macrophile" + desc = "You are attracted to larger people, and being stepped on by them." + value = 0 + mob_trait = TRAIT_MACROPHILE + gain_text = "You feel attracted to people larger than you." + lose_text = "You feel less attracted to people larger than you." + +/datum/quirk/microphile + name = "Microphile" + desc = "You are attracted to smaller people, and stepping on them." + value = 0 + mob_trait = TRAIT_MICROPHILE + gain_text = "You feel attracted to people smaller than you." + lose_text = "You feel less attracted to people smaller than you." diff --git a/hyperstation/code/modules/arousal/arousalhud.dm b/hyperstation/code/modules/arousal/arousalhud.dm index c5f4cbdd..bc137c2f 100644 --- a/hyperstation/code/modules/arousal/arousalhud.dm +++ b/hyperstation/code/modules/arousal/arousalhud.dm @@ -48,7 +48,7 @@ var/mob/living/carbon/human/H = user.pulling if(H.breedable && P && H) dat += "Impregnate [U.pulling] ([clamp(U.impregchance,0,100)]%)" - dat += "(Climax inside another person, knocking them up.)
" + dat += "(Climax inside another person, and attempt to knock them up.)
" else dat += "Climax over" dat += "(Requires a partner)
" diff --git a/hyperstation/code/modules/resize/resizing.dm b/hyperstation/code/modules/resize/resizing.dm index 9d798592..84833a66 100644 --- a/hyperstation/code/modules/resize/resizing.dm +++ b/hyperstation/code/modules/resize/resizing.dm @@ -44,7 +44,7 @@ mob/living/get_effective_size() if(size_multiplier == previous_size) return 1 src.update_transform() //WORK DAMN YOU - src.update_mobsize() + src.update_mobsize() //Going to change the health and speed values too src.remove_movespeed_modifier(MOVESPEED_ID_SIZE) src.add_movespeed_modifier(MOVESPEED_ID_SIZE, multiplicative_slowdown = (abs(size_multiplier - 1) * 0.8 )) @@ -67,7 +67,7 @@ mob/living/get_effective_size() if(tmob.pulledby == H) return 0 - + //Micro is on a table. var/turf/steppyspot = tmob.loc for(var/thing in steppyspot.contents) @@ -91,6 +91,19 @@ mob/living/get_effective_size() tmob.visible_message("[src] carefully slithers around [tmob].", "[src]'s huge tail slithers besides you.") else tmob.visible_message("[src] carefully steps over [tmob].", "[src] steps over you carefully.") + + //horny traits + + if(HAS_TRAIT(src, TRAIT_MICROPHILE)) + src.adjustArousalLoss(8) + if (src.getArousalLoss() >= 100 && ishuman(tmob) && tmob.has_dna()) + src.mob_climax(forced_climax=TRUE) + + if(HAS_TRAIT(tmob, TRAIT_MACROPHILE)) + tmob.adjustArousalLoss(10) + if (tmob.getArousalLoss() >= 100 && ishuman(tmob) && tmob.has_dna()) + tmob.mob_climax(forced_climax=TRUE) + return 1 //Smaller person stepping under a larger person @@ -149,6 +162,19 @@ mob/living/get_effective_size() tmob.visible_message("[src] mows down [tmob] under their tail!", "[src] plows their tail over you mercilessly!") else tmob.visible_message("[src] slams their foot down on [tmob], crushing them!", "[src] crushes you under their foot!") + + //horny traits + + if(HAS_TRAIT(src, TRAIT_MICROPHILE)) + src.adjustArousalLoss((get_effective_size()/tmob.get_effective_size()*3)) + if (src.getArousalLoss() >= 100 && ishuman(tmob) && tmob.has_dna()) + src.mob_climax(forced_climax=TRUE) + + if(HAS_TRAIT(tmob, TRAIT_MACROPHILE)) + tmob.adjustArousalLoss((get_effective_size()/tmob.get_effective_size()*3)) + if (tmob.getArousalLoss() >= 100 && ishuman(tmob) && tmob.has_dna()) + tmob.mob_climax(forced_climax=TRUE) + return 1 if(H.a_intent == "grab" && H.canmove && !H.buckled) @@ -215,7 +241,7 @@ mob/living/get_effective_size() mob_size = 2 //the default human size if(size_multiplier > 1) mob_size = 3 - + //Proc for instantly grabbing valid size difference. Code optimizations soon(TM) /* /mob/living/proc/sizeinteractioncheck(var/mob/living/tmob) diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/modular_citadel/code/modules/arousal/arousal.dm index fdff0442..f2d5ab42 100644 --- a/modular_citadel/code/modules/arousal/arousal.dm +++ b/modular_citadel/code/modules/arousal/arousal.dm @@ -414,23 +414,24 @@ if (L.mind == obj.target) L.mind.sexed = TRUE //sexed to_chat(src, "You feel deep satisfaction with yourself.") - //Hyper - remote if(impreg) //Role them odds, only people with the dicks can send the chance to the person with the settings enabled at the momment. - var/obj/item/organ/genital/womb/W = L.getorganslot("womb") - if (L.breedable == 1 && W.pregnant == 0) //Dont get pregnant again, if you are pregnant. - log_game("Debug: [L] has been impregnated by [src]") - to_chat(L, "You feel your hormones change, and a motherly instinct take over.") //leting them know magic has happened. - W.pregnant = 1 - if (HAS_TRAIT(L, TRAIT_HEAT)) - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "heat", /datum/mood_event/heat) //well done you perv. - REMOVE_TRAIT(L, TRAIT_HEAT, type) //take the heat away, you satisfied it! + if(prob(L.impregchance)) + var/obj/item/organ/genital/womb/W = L.getorganslot("womb") + if(W) //check if they have a womb. + if (L.breedable == 1 && W.pregnant == 0) //Dont get pregnant again, if you are pregnant. + log_game("Debug: [L] has been impregnated by [src]") + to_chat(L, "You feel your hormones change, and a motherly instinct take over.") //leting them know magic has happened. + W.pregnant = 1 + if (HAS_TRAIT(L, TRAIT_HEAT)) + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "heat", /datum/mood_event/heat) //well done you perv. + REMOVE_TRAIT(L, TRAIT_HEAT, type) //take the heat away, you satisfied it! - //Make breasts produce quicker. - var/obj/item/organ/genital/breasts/B = L.getorganslot("breasts") - if (B.fluid_mult < 0.5 && B) - B.fluid_mult = 0.5 + //Make breasts produce quicker. + var/obj/item/organ/genital/breasts/B = L.getorganslot("breasts") + if (B.fluid_mult < 0.5 && B) + B.fluid_mult = 0.5 /mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index 44b8498d..af313a3d 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -303,7 +303,7 @@ /mob/living/carbon/human/proc/make_breedable() //Hyperstation, This makes the character able to use the impreg features of the game breedable = 1 - impregchance = 33 //33% is a good base chance + impregchance = 30 //30% is a good base chance /datum/species/proc/genitals_layertext(layer) switch(layer)