anchor.diff:  			if(sight_check && !isInSight(A, O))
   				passed=0
   
  +		else passed = 0
  +
   		if(passed)
   			if(!(A in found_mobs)) found_mobs += A
   
   			for(var/atom/B in A)
  -				if(!(B in processed_list))
  +				if(!(B in processed_list) && (istype(A, /obj/item/device/radio)||ismob(B)) )
   					processing_list += B
   
   		processing_list-=A
  
positive.code: 	var/list/processed_list = list()
  	var/list/found_mobs = list()
  
  	while(processing_list.len)
  
  		var/atom/A = processing_list[1]
  
negative.code: 	var/list/range = hear(R, T)
  
  	for(var/atom/A in range)
  
  		/*if(ismob(A))
  			var/mob/M = A
  			if(M.client)
  				hear += M
  					//world.log << "Start = [M] - [get_turf(M)] - ([M.x], [M.y], [M.z])"
  		else if(istype(A, /obj/item/device/radio))
  			hear += A*/
  
  		if(isobj(A) || ismob(A))
  			hear += recursive_mob_check(A, 1, 0, 1)
  
  	return hear
  
  