anchor.diff:  	to_chat(user, "<span class='notice'>You adjust [src]'s dish to face to the [dir2text(dir)].</span>")
   	playsound(src, 'sound/items/screwdriver2.ogg', 50, 1)
   
  -/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter,devastation_range,heavy_impact_range,light_impact_range,
  -												  took,orig_dev_range,orig_heavy_range,orig_light_range)
  +/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range,
  +												  took, orig_dev_range, orig_heavy_range, orig_light_range)
   	if(stat & NOPOWER)
   		return FALSE
   	var/turf/zone = get_turf(src)
  -
   	if(zone.z != epicenter.z)
   		return FALSE
  +
  +	if(next_announce > world.time)
  +		return FALSE
  +	next_announce = world.time + cooldown
   
   	var/distance = get_dist(epicenter, zone)
   	var/direct = get_dir(zone, epicenter)
  
positive.code: 	else
  		for(var/message in messages)
  			say(message)
  	return TRUE
  
  /obj/machinery/doppler_array/power_change()
  	if(stat & BROKEN)
  
negative.code: 	icon_state = "tdoppler"
  	density = TRUE
  	var/integrated = FALSE
  	var/cooldown = 10
  	var/next_announce = 0
  	var/max_dist = 150
  	verb_say = "states coldly"
  	var/list/message_log = list()
  
  /obj/machinery/doppler_array/Initialize()
  	. = ..()
  	GLOB.doppler_arrays += src
  
  /obj/machinery/doppler_array/ComponentInitialize()
  	. = ..()
  	AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message))
  
  /obj/machinery/doppler_array/Destroy()
  	GLOB.doppler_arrays -= src
  	return ..()
  
  /obj/machinery/doppler_array/ui_interact(mob/user)
  	. = ..()
  	if(stat)
  		return FALSE
  
  	var/list/dat = list()
  	for(var/i in 1 to LAZYLEN(message_log))
  		dat += "Log recording #[i]: [message_log[i]]<br/><br>"
  	dat += "<A href='?src=[REF(src)];delete_log=1'>Delete logs</A><br>"
  	dat += "<hr>"
  	dat += "<A href='?src=[REF(src)];refresh=1'>(Refresh)</A><br>"
  	dat += "</body></html>"
  	var/datum/browser/popup = new(user, "computer", name, 400, 500)
  	popup.set_content(dat.Join(" "))
  	popup.open()
  	return
  
  /obj/machinery/doppler_array/Topic(href, href_list)
  	if(..())
  		return
  	if(href_list["delete_log"])
  		LAZYCLEARLIST(message_log)
  	if(href_list["refresh"])
  		updateUsrDialog()
  
  	updateUsrDialog()
  	return
  
  /obj/machinery/doppler_array/attackby(obj/item/I, mob/user, params)
  	if(istype(I, /obj/item/wrench))
  