From 030069d3bd93b94816a3057ca7d4d04559c23e6c Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 24 Jan 2023 07:17:38 -0500 Subject: [PATCH] Buff Shadekin Empathy Gives you a verb called 'Adjust Empathy Range' if you have shadekin empathy that lets you set the range you want to send to. Global - The current behavior and default, unlimited range This Z - Only sends to people on the Z you are on Local - Sends only to default view range Subtle - Only adjacent Shadekin get the verb by default, and if you obtain shadekin empathy through absorption, you also get the verb if you have shadekin empathy by some other means, you will need to speak through shadekin empathy once to get the verb. This way if you want to do empathy at your friend across the table and not invite every shadekin on the server to see what you're on about, now you can. --- code/modules/mob/language/snowflake.dm | 43 +++++++++++++++++++ .../carbon/human/species/shadekin/shadekin.dm | 2 + .../human/species/station/station_vr.dm | 2 + .../subtypes/vore/dominated_brain.dm | 5 ++- .../subtypes/vore/shadekin/shadekin.dm | 2 + vorestation.dme | 1 + 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 code/modules/mob/language/snowflake.dm diff --git a/code/modules/mob/language/snowflake.dm b/code/modules/mob/language/snowflake.dm new file mode 100644 index 00000000000..e6a80f68823 --- /dev/null +++ b/code/modules/mob/language/snowflake.dm @@ -0,0 +1,43 @@ +mob + var/hive_lang_range = 0 + +mob/proc/shadekin_empathy_range() + set name = "Adjust Empathy Range" + set desc = "Changes the range you will transmit your empathy to!" + set category = "IC" + + var/option = tgui_alert(src, "What range?", "Adjust empathy range", list("Global","This Z level","Local", "Subtle")) + + switch(option) + if("Global") + hive_lang_range = 0 + if("This Z level") + hive_lang_range = -1 + if("Local") + hive_lang_range = world.view + if("Subtle") + hive_lang_range = 1 + +/datum/language/shadekin/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) + log_say("(HIVE) [message]", speaker) + + speaker.verbs |= /mob/proc/shadekin_empathy_range + + if(!speaker_mask) speaker_mask = speaker.name + message = "[get_spoken_verb(message)], \"[format_message(message, get_spoken_verb(message))]\"" + + if(speaker.hive_lang_range == -1) + var/turf/t = get_turf(speaker) + for(var/mob/player in player_list) + var/turf/b = get_turf(player) + if (t.z == b.z) + player.hear_broadcast(src, speaker, speaker_mask, message) + else if(speaker.hive_lang_range) + var/turf/t = get_turf(speaker) + for(var/mob/player in player_list) + var/turf/b = get_turf(player) + if(get_dist(t,b) <= speaker.hive_lang_range) + player.hear_broadcast(src, speaker, speaker_mask, message) + else + for(var/mob/player in player_list) + player.hear_broadcast(src, speaker, speaker_mask, message) diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 660845c7979..981674c6857 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -21,6 +21,8 @@ unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin) rarity_value = 15 //INTERDIMENSIONAL FLUFFERS + inherent_verbs = list(/mob/proc/shadekin_empathy_range) + siemens_coefficient = 1 darksight = 10 diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm index 60c667351b1..7c0560ce4e3 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm @@ -454,6 +454,8 @@ unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp) rarity_value = 5 //INTERDIMENSIONAL FLUFFERS + inherent_verbs = list(/mob/proc/shadekin_empathy_range) + siemens_coefficient = 0 darksight = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm index e69e0fc54ad..e9a2b44bda3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm @@ -154,6 +154,9 @@ langlist |= L.languages if(langlist.len) langlist -= languages + for(var/datum/language/L in langlist) + if(L.name == LANGUAGE_SHADEKIN) + verbs |= /mob/proc/shadekin_empathy_range temp_languages |= langlist languages |= langlist @@ -460,4 +463,4 @@ pred.prey_controlled = TRUE log_and_message_admins("[pred] is now controlled by [pred.ckey], they were taken over via pred submission, and were originally controlled by [pred_brain.pred_ckey].") if(delete_source) - qdel(prey) \ No newline at end of file + qdel(prey) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index c84ab019f91..37291c12631 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -131,6 +131,8 @@ update_icon() + verbs |= /mob/proc/shadekin_empathy_range + return ..() /mob/living/simple_mob/shadekin/Destroy() diff --git a/vorestation.dme b/vorestation.dme index afd8b63b859..b9dd8799ee9 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2748,6 +2748,7 @@ #include "code\modules\mob\language\generic.dm" #include "code\modules\mob\language\language.dm" #include "code\modules\mob\language\outsider.dm" +#include "code\modules\mob\language\snowflake.dm" #include "code\modules\mob\language\station.dm" #include "code\modules\mob\language\station_vr.dm" #include "code\modules\mob\language\synthetic.dm"