diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 99f1813f3c..805e72cfcb 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -70,6 +70,7 @@
#define TRAIT_PHOTOGRAPHER "photographer"
#define TRAIT_MUSICIAN "musician"
#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
+#define TRAIT_NYMPHO "nymphomania"
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 487d242ac3..b7243de8f7 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1465,12 +1465,16 @@ GLOBAL_LIST_EMPTY(roundstart_races)
return FALSE
var/aim_for_groin = user.zone_selected == "groin"
var/target_aiming_for_groin = target.zone_selected == "groin"
- if(aim_for_groin && ( target_on_help_and_unarmed || target_restrained || target_aiming_for_groin))
+ if(aim_for_groin && (target_on_help_and_unarmed || target_restrained || target_aiming_for_groin))
playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1)
user.visible_message("[user] slaps [target]'s ass!",
"You slap [target]'s ass! ",\
"You hear a slap.")
stop_wagging_tail(target)
+ if (target.canbearoused)
+ target.adjustArousalLoss(5)
+ if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna())
+ target.mob_climax(forced_climax=TRUE)
return FALSE
else if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)
to_chat(user, "You're too exhausted.")