From 42f23e73bbd06277752933fb6f7290080df8144d Mon Sep 17 00:00:00 2001
From: DGamerL <108773801+DGamerL@users.noreply.github.com>
Date: Mon, 19 Feb 2024 15:49:14 +0100
Subject: [PATCH] Fixes "????" making you vomit more than normal (#24230)
* Dummy disease check
* Contra review
* Update code/datums/diseases/advance/advance.dm
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
---------
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
---
code/datums/diseases/_MobProcs.dm | 6 +++---
code/datums/diseases/_disease.dm | 7 +++----
code/datums/diseases/advance/advance.dm | 11 +++++++----
code/modules/surgery/organs/heart.dm | 2 +-
4 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 0992a054df3..91873cf56a6 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -2,9 +2,9 @@
/mob/proc/HasDisease(datum/disease/D)
for(var/thing in viruses)
var/datum/disease/DD = thing
- if(D.IsSame(DD))
- return 1
- return 0
+ if(DD.IsSame(D))
+ return TRUE
+ return FALSE
/mob/proc/CanContractDisease(datum/disease/D)
diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm
index 404a45324e2..6d19e603ca9 100644
--- a/code/datums/diseases/_disease.dm
+++ b/code/datums/diseases/_disease.dm
@@ -158,10 +158,9 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
qdel(src)
/datum/disease/proc/IsSame(datum/disease/D)
- if(istype(src, D.type))
- return 1
- return 0
-
+ if(ispath(D))
+ return istype(src, D)
+ return istype(src, D.type)
/datum/disease/proc/Copy()
var/datum/disease/D = new type()
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 6e445daffc3..08c6509defe 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -86,13 +86,16 @@ GLOBAL_LIST_INIT(advance_cures, list(
// Compares type then ID.
/datum/disease/advance/IsSame(datum/disease/advance/D)
+ if(ispath(D))
+ return FALSE
- if(!(istype(D, /datum/disease/advance)))
- return 0
+ if(!istype(D, /datum/disease/advance))
+ return FALSE
if(GetDiseaseID() != D.GetDiseaseID())
- return 0
- return 1
+ return FALSE
+
+ return TRUE
// To add special resistances.
/datum/disease/advance/cure(resistance=1)
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 9e284f5c421..208e0f87812 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -248,7 +248,7 @@
addtimer(CALLBACK(src, PROC_REF(recharge)), 30 SECONDS)
addtimer(CALLBACK(src, PROC_REF(message_to_owner), owner, "Your [name] fails to return to its normal rhythm!"), 3 SECONDS)
- if(owner.HasDisease(new /datum/disease/critical/heart_failure(0)))
+ if(owner.HasDisease(/datum/disease/critical/heart_failure))
to_chat(owner, "Your [name] detects a cardiac event and attempts to return to its normal rhythm!")
if(prob(40) && emagged)
attempted_restart = TRUE