mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 02:52:30 +00:00
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>
47 lines
1.7 KiB
Plaintext
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
|