diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 098ff4eb232..9de817ecb89 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -207,6 +207,8 @@ hear += C.mob else if(C.mob && C.mob.loc.loc in hear_and_objects) hear += C.mob + else if(C.mob && C.mob.loc.loc.loc in hear_and_objects) + hear += C.mob return hear @@ -444,7 +446,7 @@ proc/isInSight(var/atom/A, var/atom/B) var/r = mixOneColor(weights, reds) var/g = mixOneColor(weights, greens) var/b = mixOneColor(weights, blues) - return rgb(r,g,b) + return rgb(r,g,b) /proc/alone_in_area(var/area/the_area, var/mob/must_be_alone, var/check_type = /mob/living/carbon) var/area/our_area = get_area_master(the_area) @@ -456,6 +458,6 @@ proc/isInSight(var/atom/A, var/atom/B) if(our_area == get_area_master(C)) return 0 return 1 - + /proc/MinutesToTicks(var/minutes as num) return minutes * 60 * 10 \ No newline at end of file diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 8ba4a4555fa..41612819446 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -62,31 +62,28 @@ if(!other) return 1 //Universal speak makes everything understandable, for obvious reasons. - else if(other.universal_speak || src.universal_speak || src.universal_understand) + if(other.universal_speak || src.universal_speak || src.universal_understand) return 1 - else if (src.stat == 2) + if (src.stat == 2) return 1 - else if (speaking) //Language check. - var/understood - for(var/datum/language/L in src.languages) - if(speaking.name == L.name) - understood = 1 - break - - if(understood || universal_speak) + if(!speaking) //Handle languages later + if(other.universal_speak || src.universal_speak) + return 1 + if(isAI(src) && ispAI(other)) + return 1 + if (istype(other, src.type) || istype(src, other.type)) + return 1 + if (istype(other, /mob/living/carbon/human) && (istype(src, /mob/living/carbon/human) || istype(src, /mob/living/silicon/pai))) + return 1 + if(istype(other, /mob/living/carbon/alien) && istype(src, /mob/living/carbon/alien)) + return 1 + return 0 + + for(var/datum/language/L in src.languages) //Handling languages + if(speaking.name == L.name) return 1 - else - return 0 - else if(other.universal_speak || src.universal_speak) - return 1 - else if(isAI(src) && ispAI(other)) - return 1 - else if (istype(other, src.type) || istype(src, other.type)) - return 1 - else if (istype(other, /mob/living/carbon/human) && istype(src, /mob/living/carbon/human)) - return 1 return 0 /mob/proc/say_quote(var/text,var/datum/language/speaking)