From 888906b4e7ca3493e0d23f2336beddb567ce5183 Mon Sep 17 00:00:00 2001
From: Fermi <>
Date: Fri, 27 Sep 2019 11:12:53 +0100
Subject: [PATCH] Fixes Mk1 !
---
code/__DEFINES/obj_flags.dm | 3 +-
code/modules/surgery/organs/organ_internal.dm | 2 +-
code/modules/surgery/organs/stomach.dm | 37 ++++++++++---------
code/modules/surgery/organs/tongue.dm | 17 +++++----
4 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm
index 22bced0b39..bde48c32ee 100644
--- a/code/__DEFINES/obj_flags.dm
+++ b/code/__DEFINES/obj_flags.dm
@@ -39,10 +39,11 @@
#define VOICEBOX_TOGGLABLE (1<<6) // The voicebox in this clothing can be toggled.
#define VOICEBOX_DISABLED (1<<7) // The voicebox is currently turned off.
-/// Flags for the organ_flags var on /obj/item/organ
+// Flags for the organ_flags var on /obj/item/organ
#define ORGAN_SYNTHETIC (1<<0) //Synthetic organs, or cybernetic organs. Reacts to EMPs and don't deteriorate or heal
#define ORGAN_FROZEN (1<<1) //Frozen organs, don't deteriorate
#define ORGAN_FAILING (1<<2) //Failing organs perform damaging effects until replaced or fixed
#define ORGAN_EXTERNAL (1<<3) //Was this organ implanted/inserted/etc, if true will not be removed during species change.
#define ORGAN_VITAL (1<<4) //Currently only the brain
+#define ORGAN_NO_SPOIL (1<<5) //Currently only the brain
diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm
index 4da064b895..b5c3ed9f2f 100644
--- a/code/modules/surgery/organs/organ_internal.dm
+++ b/code/modules/surgery/organs/organ_internal.dm
@@ -72,7 +72,7 @@
on_death() //Kinda hate doing it like this, but I really don't want to call process directly.
/obj/item/organ/proc/on_death() //runs decay when outside of a person
- if(organ_flags & (ORGAN_SYNTHETIC | ORGAN_FROZEN))
+ if(organ_flags & (ORGAN_SYNTHETIC | ORGAN_FROZEN | ORGAN_NO_SPOIL))
return
applyOrganDamage(maxHealth * decay_factor)
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index f9b4f180e3..8ddaa951d8 100755
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -17,31 +17,32 @@
low_threshold_cleared = "The last bouts of pain in your stomach have died out."
/obj/item/organ/stomach/on_life()
- var/mob/living/carbon/human/H = owner
- var/datum/reagent/consumable/nutriment/Nutri = locate(/datum/reagent/consumable/nutriment) in H.reagents.reagent_list
-
-
- if(istype(H))
+ var/datum/reagent/consumable/nutriment/Nutri
+ if(ishuman(owner))
+ var/mob/living/carbon/human/H = owner
if(!(organ_flags & ORGAN_FAILING))
H.dna.species.handle_digestion(H)
handle_disgust(H)
+ Nutri = locate(/datum/reagent/consumable/nutriment) in H.reagents.reagent_list
+
+ if(Nutri)
+ if(prob((damage/40) * Nutri.volume * Nutri.volume))
+ H.vomit(damage)
+ to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
+
+ else if(Nutri && damage > high_threshold)
+ if(prob((damage/10) * Nutri.volume * Nutri.volume))
+ H.vomit(damage)
+ to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
+
+
+ else if(iscarbon(owner))
+ var/mob/living/carbon/C = owner
+ Nutri = locate(/datum/reagent/consumable/nutriment) in C.reagents.reagent_list
if(damage < low_threshold)
return
- Nutri = locate(/datum/reagent/consumable/nutriment) in H.reagents.reagent_list
-
- if(Nutri)
- if(prob((damage/40) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
- else if(Nutri && damage > high_threshold)
- if(prob((damage/10) * Nutri.volume * Nutri.volume))
- H.vomit(damage)
- to_chat(H, "Your stomach reels in pain as you're incapable of holding down all that food!")
-
-
/obj/item/organ/stomach/proc/handle_disgust(mob/living/carbon/human/H)
if(H.disgust)
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 34fcc86a10..15bce1c2ea 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -31,13 +31,6 @@
/obj/item/organ/tongue/proc/handle_speech(datum/source, list/speech_args)
/obj/item/organ/tongue/applyOrganDamage(var/d, var/maximum = maxHealth)
- if (maxHealth == "bone")
- if(owner)
- return
- var/target = owner.get_bodypart(BODY_ZONE_HEAD)
- owner.apply_damage(d, BURN, target)
- to_chat(owner, "You feel your skull burning! Oof, your bones!")
- return
if(!d) //Micro-optimization.
return
@@ -196,7 +189,7 @@
say_mod = "rattles"
attack_verb = list("bitten", "chattered", "chomped", "enamelled", "boned")
taste_sensitivity = 101 // skeletons cannot taste anything
- maxHealth = "bone" //Take brute damage instead
+ maxHealth = 75 //Take brute damage instead
modifies_speech = TRUE
var/chattering = FALSE
var/phomeme_type = "sans"
@@ -206,6 +199,14 @@
. = ..()
phomeme_type = pick(phomeme_types)
+/obj/item/organ/tongue/bone/applyOrganDamage(var/d, var/maximum = maxHealth)
+ if(!owner)
+ return
+ var/target = owner.get_bodypart(BODY_ZONE_HEAD)
+ owner.apply_damage(d, BURN, target)
+ to_chat(owner, "You feel your skull burning! Oof, your bones!")
+ return
+
/obj/item/organ/tongue/bone/handle_speech(datum/source, list/speech_args)
if (chattering)
chatter(speech_args[SPEECH_MESSAGE], phomeme_type, source)