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