From b6de85ec56e68face46547be192738dfb7583b87 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sun, 7 Dec 2014 17:01:19 +0000 Subject: [PATCH] Fixes, better handling of things --- code/modules/mob/language.dm | 19 +++++++++++++------ code/modules/mob/living/carbon/human/say.dm | 10 +++++++--- code/modules/mob/say.dm | 3 +++ code/setup.dm | 1 + 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 2734438494..5ba78b33c5 100755 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -21,6 +21,10 @@ /datum/language/proc/format_message_radio(message, verb) return "[verb], \"[capitalize(message)]\"" +/datum/language/proc/get_talkinto_msg_range(message) + // if you yell, you'll be heard from two tiles over instead of one + return (copytext(message, length(message)) == "!") ? 2 : 1 + /datum/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) log_say("[key_name(speaker)] : ([name]) [message]") @@ -47,7 +51,7 @@ name = "Noise" desc = "Noises" key = "" - flags = RESTRICTED|NONGLOBAL|INNATE + flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG /datum/language/noise/format_message(message, verb) return "[message]" @@ -55,6 +59,10 @@ /datum/language/noise/format_message_radio(message, verb) return "[message]" +/datum/language/noise/get_talkinto_msg_range(message) + // if you make a loud noise (screams etc), you'll be heard from 4 tiles over instead of two + return (copytext(message, length(message)) == "!") ? 4 : 2 + /datum/language/unathi name = "Sinta'unathi" desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." @@ -297,15 +305,14 @@ return 1 /mob/proc/remove_language(var/rem_language) - - languages.Remove(all_languages[rem_language]) - - return 0 + var/datum/language/L = all_languages[rem_language] + . = (L in languages) + languages.Remove(L) // Can we speak this language, as opposed to just understanding it? /mob/proc/can_speak(datum/language/speaking) - return (universal_speak || (speaking.flags & INNATE) || speaking in src.languages) + return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages) //TBD /mob/verb/check_languages() diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index d787c3f733..7201cfc8e4 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -132,10 +132,14 @@ if(used_radios.len) italics = 1 message_range = 1 - + if(speaking) + message_range = speaking.get_talkinto_msg_range(message) + var/msg + if(!speaking || !(speaking.flags & NO_TALK_MSG)) + msg = "\The [src] talks into \the [used_radios[1]]" for(var/mob/living/M in hearers(5, src)) - if(M != src) - M.show_message("[src] talks into [used_radios.len ? used_radios[1] : "the radio."]") + if((M != src) && msg) + M.show_message(msg) if (speech_sound) sound_vol *= 0.5 diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index da75999c41..8a7b7aa962 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -79,6 +79,9 @@ return 1 return 0 + if(speaking.flags & INNATE) + return 1 + //Language check. for(var/datum/language/L in src.languages) if(speaking.name == L.name) diff --git a/code/setup.dm b/code/setup.dm index 9e204bf120..8b8dcd82d8 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -766,6 +766,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define HIVEMIND 16 // Broadcast to all mobs with this language. #define NONGLOBAL 32 // Do not add to general languages list #define INNATE 64 // All mobs can be assumed to speak and understand this language (audible emotes) +#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message //Flags for zone sleeping #define ZONE_ACTIVE 1