Language Fixes

- Allows pAIs to hear from inside bags and PDAs (But if you put one
inside a PDA and then in a bag, no hearing. THANKS HORRID NON-RECURSIVE
SAY CODE)
- Allows pAIs to understand carbons speaking in common.
- Allows different caste xenos to understand each other.
This commit is contained in:
DZD
2015-01-28 09:14:11 -05:00
parent b25e0be33b
commit ae1eb6d5ae
2 changed files with 21 additions and 22 deletions
+4 -2
View File
@@ -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
+17 -20
View File
@@ -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)