diff --git a/code/modules/mob/living/taste.dm b/code/modules/mob/living/taste.dm
index e4d1aa94a5..46d0608f44 100644
--- a/code/modules/mob/living/taste.dm
+++ b/code/modules/mob/living/taste.dm
@@ -16,21 +16,22 @@
// non destructively tastes a reagent container
/mob/living/proc/taste(datum/reagents/from)
- if(last_taste_time + 50 < world.time)
- var/taste_sensitivity = get_taste_sensitivity()
- var/text_output = from.generate_taste_message(taste_sensitivity)
- // We dont want to spam the same message over and over again at the
- // person. Give it a bit of a buffer.
- if(hallucination > 50 && prob(25))
- text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
- "defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\
- "regrets","your soul","suffering","music","noise","blood","hunger","the american way")
- if(text_output != last_taste_text || last_taste_time + 100 < world.time)
- to_chat(src, "You can taste [text_output].")
- // "something indescribable" -> too many tastes, not enough flavor.
-
- last_taste_time = world.time
- last_taste_text = text_output
+ if(last_taste_time + 50 > world.time)
+ return FALSE
+ var/taste_sensitivity = get_taste_sensitivity()
+ var/text_output = from.generate_taste_message(taste_sensitivity)
+ // We dont want to spam the same message over and over again at the
+ // person. Give it a bit of a buffer.
+ if(hallucination > 50 && prob(25))
+ text_output = pick("spiders","dreams","nightmares","the future","the past","victory",\
+ "defeat","pain","bliss","revenge","poison","time","space","death","life","truth","lies","justice","memory",\
+ "regrets","your soul","suffering","music","noise","blood","hunger","the american way")
+ if(text_output != last_taste_text || last_taste_time + 100 < world.time)
+ to_chat(src, "You can taste [text_output].")
+ // "something indescribable" -> too many tastes, not enough flavor.
+ last_taste_time = world.time
+ last_taste_text = text_output
+ return TRUE
//FermiChem - How to check pH of a beaker without a meter/pH paper.
//Basically checks the pH of the holder and burns your poor tongue if it's too acidic!
@@ -41,22 +42,24 @@
if (!T)
return
.=..()
+ if(!.)
+ return
if ((from.pH > 12.5) || (from.pH < 1.5))
- to_chat(src, "You taste chemical burns!")
T.applyOrganDamage(5)
+ to_chat(src, "You taste chemical burns!")
if(istype(T, /obj/item/organ/tongue/cybernetic))
to_chat(src, "Your tongue moves on it's own in response to the liquid.")
say("The pH is appropriately [round(from.pH, 1)].")
return
if (!HAS_TRAIT(src, TRAIT_AGEUSIA)) //I'll let you get away with not having 1 damage.
switch(from.pH)
- if(11.5 to INFINITY)
+ if(11.5 to 12.5)
to_chat(src, "You taste a strong alkaline flavour!")
if(8.5 to 11.5)
to_chat(src, "You taste a sort of soapy tone in the mixture.")
if(2.5 to 5.5)
to_chat(src, "You taste a sort of acid tone in the mixture.")
- if(-INFINITY to 2.5)
+ if(1.5 to 2.5)
to_chat(src, "You taste a strong acidic flavour!")
#undef DEFAULT_TASTE_SENSITIVITY
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 8ad293fbcb..bcc764d00a 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -30,39 +30,23 @@
/obj/item/organ/tongue/Initialize(mapload)
. = ..()
+ low_threshold_passed = "Your [name] feels a little sore."
+ low_threshold_cleared = "Your [name] soreness has subsided."
+ high_threshold_passed = "Your [name] is really starting to hurt."
+ high_threshold_cleared = "The pain of your [name] has subsided a little."
+ now_failing = "Your [name] feels like it's about to fall out!."
+ now_fixed = "The excruciating pain of your [name] has subsided."
languages_possible = languages_possible_base
/obj/item/organ/tongue/proc/handle_speech(datum/source, list/speech_args)
+ return
-/obj/item/organ/tongue/emp_act(severity)
+/obj/item/organ/tongue/applyOrganDamage(d, maximum = maxHealth)
. = ..()
- if(. & EMP_PROTECT_SELF)
- return
- if(organ_flags & ORGAN_SYNTHETIC)
- var/errormessage = list("Runtime in tongue.dm, line 39: Undefined operation \"zapzap ow my tongue\"", "afhsjifksahgjkaslfhashfjsak", "-1.#IND", "Graham's number", "inside you all along", "awaiting at least 1 approving review before merging this taste request")
- owner.say("The pH is appropriately [pick(errormessage)].")
-
-/obj/item/organ/tongue/applyOrganDamage(var/d, var/maximum = maxHealth)
-
- if(!d) //Micro-optimization.
- return
- if(maximum < damage)
- return
- damage = CLAMP(damage + d, 0, maximum)
- var/mess = check_damage_thresholds(owner)
- prev_damage = damage
- if(mess && owner)
- to_chat(owner, mess)
-
- if ((damage / maxHealth) > 1)
+ if (damage >= maxHealth)
to_chat(owner, "Your tongue is singed beyond recognition, and disintegrates!")
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Tongues lost to Fermi")
qdel(src)
- else if ((damage / maxHealth) > 0.85)
- to_chat(owner, "Your tongue feels like it's about to fall out!.")
- else if ((damage / maxHealth) > 0.5)
- to_chat(owner, "Your tongue is really starting to hurt.")
-
/obj/item/organ/tongue/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
@@ -311,6 +295,13 @@
maxHealth = 60 //It's robotic!
organ_flags = ORGAN_SYNTHETIC
+/obj/item/organ/tongue/cybernetic/emp_act(severity)
+ . = ..()
+ if(. & EMP_PROTECT_SELF)
+ return
+ var/errormessage = list("Runtime in tongue.dm, line 39: Undefined operation \"zapzap ow my tongue\"", "afhsjifksahgjkaslfhashfjsak", "-1.#IND", "Graham's number", "inside you all along", "awaiting at least 1 approving review before merging this taste request")
+ owner.say("The pH is appropriately [pick(errormessage)].", forced = "EMPed synthetic tongue")
+
/obj/item/organ/tongue/cybernetic/handle_speech(datum/source, list/speech_args)
speech_args[SPEECH_SPANS] |= SPAN_ROBOT