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)