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."