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"