Files
Bubberstation/code/modules/mob/living/taste.dm
coiax 68be48ed85 Tweaks how some tongues have no taste (#55811)
Skeletons, abductors and ethereals have no sense of taste. Previously
they would taste something "indescribable", but instead, they will not
taste anything or get any message. This also means they will no longer
get mood buffs from eating/drinking high quality food.

Carbons without tongues also can no longer taste anything.

- The utility item "taster" has had some additional messages added.

* Remove can_taste proc

Instead of a single proc that is only used, so carbons can override it
with the missing tongue, just have carbons unable to taste anything by
default, and then have the tongue "supress" that.

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2020-12-31 17:42:36 -08:00

47 lines
1.7 KiB
Plaintext

#define DEFAULT_TASTE_SENSITIVITY 15
/mob/living
var/last_taste_time
var/last_taste_text
/**
* Gets taste sensitivity of given mob
*
* This is used in calculating what flavours the mob can pick up,
* with a lower number being able to pick up more distinct flavours.
*/
/mob/living/proc/get_taste_sensitivity()
return DEFAULT_TASTE_SENSITIVITY
/mob/living/carbon/get_taste_sensitivity()
var/obj/item/organ/tongue/tongue = getorganslot(ORGAN_SLOT_TONGUE)
if(istype(tongue))
. = tongue.taste_sensitivity
else
// carbons without tongues normally have TRAIT_AGEUSIA but sensible fallback
. = DEFAULT_TASTE_SENSITIVITY
// non destructively tastes a reagent container
/mob/living/proc/taste(datum/reagents/from)
if(HAS_TRAIT(src, TRAIT_AGEUSIA))
return
if(last_taste_time + 50 < world.time)
var/taste_sensitivity = get_taste_sensitivity()
var/text_output = from.generate_taste_message(src, 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, "<span class='notice'>You can taste [text_output].</span>")
// "something indescribable" -> too many tastes, not enough flavor.
last_taste_time = world.time
last_taste_text = text_output
#undef DEFAULT_TASTE_SENSITIVITY