diff --git a/code/modules/mob/language/language.dm b/code/modules/mob/language/language.dm index 4fa749f41e..5ab9416da3 100644 --- a/code/modules/mob/language/language.dm +++ b/code/modules/mob/language/language.dm @@ -130,11 +130,27 @@ /datum/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) log_say("(HIVE) [message]", speaker) + speaker.verbs |= /mob/proc/adjust_hive_range //VOREStation Add - If you don't have the verb you should. + if(!speaker_mask) speaker_mask = speaker.name message = "[get_spoken_verb(message)], \"[format_message(message, get_spoken_verb(message))]\"" - - for(var/mob/player in player_list) - player.hear_broadcast(src, speaker, speaker_mask, message) + //VOREStation Edit Start + 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) + //VOREStation Edit End /mob/proc/hear_broadcast(var/datum/language/language, var/mob/speaker, var/speaker_name, var/message) if((language in languages) && language.check_special_condition(src)) @@ -187,6 +203,11 @@ return 0 languages.Add(new_language) + //VOREStation Addition Start + if(new_language.flags & HIVEMIND) + verbs |= /mob/proc/adjust_hive_range + //VOREStation Addition End + return 1 /mob/proc/remove_language(var/rem_language) diff --git a/code/modules/mob/language/snowflake.dm b/code/modules/mob/language/snowflake.dm new file mode 100644 index 0000000000..7c8160c5c1 --- /dev/null +++ b/code/modules/mob/language/snowflake.dm @@ -0,0 +1,19 @@ +/mob + var/hive_lang_range = 0 + +/mob/proc/adjust_hive_range() + set name = "Adjust Special Language Range" + set desc = "Changes the range you will transmit your hive language to!" + set category = "IC" + + var/option = tgui_alert(src, "What range?", "Adjust special language 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 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 f76555561b..2b8edb450f 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -25,6 +25,8 @@ male_scream_sound = null //CHOMPedit female_scream_sound = null //CHOMPedit + inherent_verbs = list(/mob/proc/adjust_hive_range) + siemens_coefficient = 1 darksight = 10 diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 5b7d45ab28..df76228e18 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -572,7 +572,8 @@ inherent_verbs = list( /mob/living/carbon/human/proc/diona_split_nymph, - /mob/living/carbon/human/proc/regenerate + /mob/living/carbon/human/proc/regenerate, + /mob/proc/adjust_hive_range //VOREStation Add ) warning_low_pressure = 50 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 7d80479129..0182045c53 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 @@ -494,6 +494,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/adjust_hive_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 56956f080a..eeb021d387 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.flags & HIVEMIND) + verbs |= /mob/proc/adjust_hive_range temp_languages |= langlist languages |= langlist 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 418520f868..d32e7ff1b4 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/adjust_hive_range + return ..() /mob/living/simple_mob/shadekin/Destroy() diff --git a/vorestation.dme b/vorestation.dme index face93fc8a..3955b7f590 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2902,6 +2902,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\station_YW.dm"