mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-10 09:42:29 +00:00
## About The Pull Request BASED ON SANITY SHADEKIN EMPATHY WILL: -Take more or less time to send -At lowest levels of sanity the message starts to break down some -Be a different color in chat ## Why It's Good For The Game Shadekin empathy is communication through FEELINGS so it being better/worse based on how you're FEELING makes sense (to me) ## Proof Of Testing  <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 balance: shadekin empathy is better/worse based on mood /🆑 --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
99 lines
3.7 KiB
Plaintext
99 lines
3.7 KiB
Plaintext
/datum/language/marish
|
|
name = "Marish"
|
|
desc = "Where shadekin have a language rooted in empathy, there are still subtle tones and syllables that are as delicate as the emotions that shadekin normally communicate with."
|
|
key = "M"
|
|
space_chance = 55
|
|
icon = 'modular_zubbers/icons/misc/language.dmi'
|
|
icon_state = "marish"
|
|
default_priority = 90
|
|
flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD | NO_STUTTER
|
|
syllables = list("mar", "mwrrr", "maaAr", "'aarrr", "wrurrl", "mmar")
|
|
|
|
/datum/language_holder/shadekin
|
|
understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM),
|
|
/datum/language/marish = list(LANGUAGE_ATOM),
|
|
/datum/language/marish/empathy = list(LANGUAGE_ATOM),
|
|
)
|
|
spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM),
|
|
/datum/language/marish = list(LANGUAGE_ATOM),
|
|
/datum/language/marish/empathy = list(LANGUAGE_ATOM),
|
|
)
|
|
/obj/item/organ/tongue/shadekin
|
|
name = "shadekin tongue"
|
|
desc = "A mysterious tongue."
|
|
icon_state = "silvertongue"
|
|
say_mod = "mars"
|
|
sense_of_taste = TRUE
|
|
modifies_speech = TRUE
|
|
languages_native = list(/datum/language/marish/empathy)
|
|
|
|
/obj/item/organ/ears/shadekin
|
|
name = "shadekin ears"
|
|
desc = "Ears, covered in fur."
|
|
icon = 'icons/obj/clothing/head/costume.dmi'
|
|
icon_state = "kitty"
|
|
damage_multiplier = 2.5 // Shadekins big ears are easy to damage with loud noises.
|
|
overrides_sprite_datum_organ_type = TRUE
|
|
bodypart_overlay = /datum/bodypart_overlay/mutant/ears
|
|
|
|
/datum/language/marish/empathy
|
|
name = "Empathy"
|
|
desc = "Shadekin seem to always know what the others are thinking. This is probably why."
|
|
key = "9"
|
|
icon_state = "empathy"
|
|
|
|
/obj/item/organ/tongue/shadekin/handle_speech(datum/source, list/speech_args)
|
|
if(speech_args[SPEECH_LANGUAGE] in languages_native) // Speaking a native language?
|
|
return modify_speech(source, speech_args)
|
|
|
|
/obj/item/organ/tongue/shadekin/modify_speech(datum/source, list/speech_args)
|
|
ASYNC
|
|
actually_modify_speech(source, speech_args)
|
|
speech_args[SPEECH_MESSAGE] = "" // Makes it not send to chat verbally.
|
|
|
|
/obj/item/organ/tongue/shadekin/proc/actually_modify_speech(datum/source, list/speech_args)
|
|
var/message = speech_args[SPEECH_MESSAGE]
|
|
var/mob/living/carbon/human/user = owner
|
|
var/shadekin_mood = user.mob_mood.sanity_level
|
|
var/empathy_timer = 2 SECONDS
|
|
var/obj/item/organ/ears/shadekin/user_ears = user.get_organ_slot(ORGAN_SLOT_EARS)
|
|
var/mode = istype(user_ears)
|
|
user.balloon_alert_to_viewers("[mode ? "ears vibrate" : "shivers"]", "projecting thoughts...")
|
|
|
|
switch(shadekin_mood)
|
|
if(SANITY_LEVEL_GREAT)
|
|
empathy_timer = 0
|
|
if(SANITY_LEVEL_NEUTRAL)
|
|
empathy_timer = 1 SECONDS
|
|
if(SANITY_LEVEL_UNSTABLE)
|
|
empathy_timer = 4 SECONDS
|
|
if(SANITY_LEVEL_CRAZY)
|
|
empathy_timer = 5 SECONDS
|
|
message = stars(message)
|
|
if(SANITY_LEVEL_INSANE)
|
|
empathy_timer = 6 SECONDS
|
|
message = readable_corrupted_text(message)
|
|
|
|
if(empathy_timer && !do_after(source, empathy_timer, source))
|
|
message = full_capitalize(rot13(message))
|
|
var/rendered = ("<span style=color:[user.mob_mood.get_mood_colour()];><b>[user.real_name]:</b> [message]</span>")
|
|
|
|
user.log_talk(message, LOG_SAY, tag="shadekin")
|
|
for(var/mob/living/carbon/human/living_mob in GLOB.alive_mob_list)
|
|
var/obj/item/organ/ears/shadekin/target_ears = living_mob.get_organ_slot(ORGAN_SLOT_EARS)
|
|
|
|
if(!istype(target_ears))
|
|
continue
|
|
|
|
to_chat(living_mob, rendered)
|
|
if(living_mob != user)
|
|
mode = istype(target_ears)
|
|
living_mob.balloon_alert_to_viewers("[mode ? "ears vibrate" : "shivers"]", "transmission heard...")
|
|
|
|
if(length(GLOB.dead_mob_list))
|
|
for(var/mob/dead_mob in GLOB.dead_mob_list)
|
|
if(dead_mob.client)
|
|
var/link = FOLLOW_LINK(dead_mob, user)
|
|
to_chat(dead_mob, "[link] [rendered]")
|
|
|