From d84debe29e3a0f01f3cf6ecafa07a7456ae42db1 Mon Sep 17 00:00:00 2001 From: sarcoph <83266791+sarcoph@users.noreply.github.com> Date: Wed, 4 May 2022 12:40:29 -0800 Subject: [PATCH] pregnancy test cleanup + condensing climax stat checks --- .../mob/living/carbon/human/species.dm | 4 +- code/modules/mob/living/carbon/life.dm | 2 +- .../ruins/objects_and_mobs/sin_ruins.dm | 4 +- hyperstation/code/obj/fleshlight.dm | 2 +- hyperstation/code/obj/pregnancytester.dm | 41 ++++++++----------- hyperstation/code/obj/vibrator.dm | 4 +- .../subtypes/manipulation.dm | 2 +- .../modules/reagents/reagents/cit_reagents.dm | 2 +- 8 files changed, 28 insertions(+), 33 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index a036dbb7f..4764523ed 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1647,7 +1647,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) ) if (target.canbearoused) target.adjustArousalLoss(5) - if (target.getArousalLoss() >= 100 && ishuman(target) && HAS_TRAIT(target, TRAIT_MASO) && target.has_dna()) + if (target.can_climax() && HAS_TRAIT(target, TRAIT_MASO)) target.mob_climax(forced_climax=TRUE) if (!HAS_TRAIT(target, TRAIT_NYMPHO)) stop_wagging_tail(target) @@ -2005,7 +2005,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_damage_overlays() if(HAS_TRAIT(H, TRAIT_MASO)) H.adjustArousalLoss(damage * brutemod * H.physiology.brute_mod) - if (H.getArousalLoss() >= 100 && ishuman(H) && H.has_dna()) + if (H.can_climax()) H.mob_climax(forced_climax=TRUE) else//no bodypart, we deal damage with a more general method. diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index ca11c14d0..45160b35f 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -77,7 +77,7 @@ var/mob/living/carbon/human/B = src if(HAS_TRAIT(B, TRAIT_CHOKE_SLUT)) B.adjustArousalLoss(7) - if (B.getArousalLoss() >= 100 && ishuman(B) && B.has_dna()) + if (B.can_climax()) B.mob_climax(forced_climax=TRUE) else SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation) diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 18e90b3a6..2e7f1c55c 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -282,13 +282,13 @@ . = ..() if(.) return - if(chalice_taken == 1) + if(chalice_taken) to_chat(user, "You hear a voice in your head... \"My chalice has already been taken, dear. I cannot give you another...\"") return if(user.getArousalLoss() < 100) to_chat(user, "You hear a voice in your head... \"You are not horny enough to receive my blessing, dear~\"") return - if (ishuman(user) && user.has_dna()) + if (user.can_climax(0)) user.mob_climax(forced_climax=TRUE) to_chat(user, "You hear a voice in your head... \"You are worth of my blessing dear~\"") to_chat(user, "You feel overpowering pleasure surge through your entire body.") diff --git a/hyperstation/code/obj/fleshlight.dm b/hyperstation/code/obj/fleshlight.dm index 30659b3cf..7af123ce5 100644 --- a/hyperstation/code/obj/fleshlight.dm +++ b/hyperstation/code/obj/fleshlight.dm @@ -63,7 +63,7 @@ C.do_jitter_animation() C.adjustArousalLoss(20) //make the target more aroused. - if (C.getArousalLoss() >= 100 && ishuman(C) && C.has_dna()) + if (C.can_climax()) C.mob_climax(forced_climax=TRUE) //make them cum if they are over the edge. return diff --git a/hyperstation/code/obj/pregnancytester.dm b/hyperstation/code/obj/pregnancytester.dm index 7fd8c0b5b..51e4786c4 100644 --- a/hyperstation/code/obj/pregnancytester.dm +++ b/hyperstation/code/obj/pregnancytester.dm @@ -8,7 +8,6 @@ var/results = "null" w_class = WEIGHT_CLASS_TINY - /obj/item/pregnancytest/attack_self(mob/user) if(QDELETED(src)) return @@ -16,29 +15,25 @@ return if(isAI(user)) return - if(user.stat > 0)//unconscious or dead + if(user.stat > CONSCIOUS)//unconscious or dead return - if(status == 1) - return //Already been used once, pregnancy tests only work once. - test(user) + Test(user) -/obj/item/pregnancytest/proc/force(mob/living/user) - //Force it negative - icon_state = "negative" - name = "[results] pregnancy test" - status = 1 - to_chat(user, "You use the pregnancy test, the display reads negative!") - - -/obj/item/pregnancytest/proc/test(mob/living/user) +/obj/item/pregnancytest/proc/Test(mob/living/user) + if(status) + return + var/_result = FALSE var/obj/item/organ/genital/womb/W = user.getorganslot("womb") if(!W) - return - if(W.pregnant == 1) - results = "positive" - icon_state = "positive" - name = "[results] pregnancy test" - status = 1 - to_chat(user, "You use the pregnancy test, the display reads positive!") - else - force(user) \ No newline at end of file + return // no reason to waste the single-use on them + if(W.pregnant) + _result = TRUE + UpdateResult(user, _result) + +/obj/item/pregnancytest/proc/UpdateResult(mob/living/user, _result) + var/result_text = _result ? "positive" : "negative" + results = result_text + icon_state = result_text + name = "[results] preganancy test" + status = TRUE + to_chat(user, "You use the pregnancy test, the display reads [results]!") \ No newline at end of file diff --git a/hyperstation/code/obj/vibrator.dm b/hyperstation/code/obj/vibrator.dm index 51f495945..e7433a927 100644 --- a/hyperstation/code/obj/vibrator.dm +++ b/hyperstation/code/obj/vibrator.dm @@ -132,13 +132,13 @@ Code: if(2) //med, can make you cum to_chat(U, "You feel intense pleasure surge through your [G.name]") U.do_jitter_animation() - if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna()) + if (U.can_climax()) U.mob_climax(forced_climax=TRUE) if(3) //high, makes you stun to_chat(U, "You feel overpowering pleasure surge through your [G.name]") U.Jitter(3) U.Stun(30) - if (U.getArousalLoss() >= 100 && ishuman(U) && U.has_dna()) + if (U.can_climax()) U.mob_climax(forced_climax=TRUE) if(prob(50)) U.emote("moan") diff --git a/modular_citadel/code/modules/integrated_electronics/subtypes/manipulation.dm b/modular_citadel/code/modules/integrated_electronics/subtypes/manipulation.dm index 547c1a576..5302e1b99 100644 --- a/modular_citadel/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/modular_citadel/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -25,7 +25,7 @@ if(ismob(M) && M.canbearoused && arousal_gain != 0) var/orgasm = FALSE if(arousal_gain > 0) - if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) + if(M.can_climax()) var/mob/living/carbon/human/H = M var/orgasm_message = pick("A sharp pulse of electricity pushes you to orgasm!", "You feel a jolt of electricity force you into orgasm!") H.visible_message("\The [assembly] electrodes shock [H]!", "[orgasm_message]") diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index 324b44db3..6ddb87619 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -197,7 +197,7 @@ /datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) - if(prob(5) && M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) + if(prob(5) && M.can_climax()) if(prob(5)) //Less spam to_chat(M, "Your libido is going haywire!") if(M.min_arousal < 50)