diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 805e72cfcb..b2caf614b3 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -71,6 +71,7 @@
#define TRAIT_MUSICIAN "musician"
#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
#define TRAIT_NYMPHO "nymphomania"
+#define TRAIT_MASO "masochism"
// 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 3930d19168..d976ca8934 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1494,7 +1494,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
)
if (target.canbearoused)
target.adjustArousalLoss(5)
- if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_NYMPHO) && target.has_dna())
+ if (target.getArousalLoss() >= 100 && ishuman(target) && target.has_trait(TRAIT_MASO) && target.has_dna())
target.mob_climax(forced_climax=TRUE)
if (!target.has_trait(TRAIT_NYMPHO))
stop_wagging_tail(target)
@@ -1727,6 +1727,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(BP)
if(damage > 0 ? BP.receive_damage(damage * hit_percent * brutemod * H.physiology.brute_mod, 0) : BP.heal_damage(abs(damage * hit_percent * brutemod * H.physiology.brute_mod), 0))
H.update_damage_overlays()
+ if (H.has_trait(TRAIT_MASO))
+ (H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod))
+ if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_trait(TRAIT_MASO) && H.has_dna())
+ (H.mob_climax(forced_climax=TRUE))
+
else//no bodypart, we deal damage with a more general method.
H.adjustBruteLoss(damage * hit_percent * brutemod * H.physiology.brute_mod)
if(BURN)
diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm
index 264dbfef0a..05aeb27361 100644
--- a/modular_citadel/code/datums/traits/neutral.dm
+++ b/modular_citadel/code/datums/traits/neutral.dm
@@ -4,6 +4,7 @@
name = "Nymphomania"
desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual."
value = 0
+ mob_trait = TRAIT_NYMPHO
gain_text = "You are feeling extra wild."
lose_text = "You don't feel that burning sensation anymore."
@@ -22,3 +23,11 @@
if(M.canbearoused == FALSE)
to_chat(quirk_holder, "Having high libido is useless when you can't feel arousal at all!")
qdel(src)
+
+/datum/quirk/maso
+ name = "Masochism"
+ desc = "You are aroused by pain."
+ value = 0
+ mob_trait = TRAIT_MASO
+ gain_text = "You desire to be hurt."
+ lose_text = "Pain has become less exciting for you."