anchor.diff:  		return
   	revealed = TRUE
   	name = realName
  -	cooldownMax = rand(60,300)
  +	reset_timer = rand(reset_timer, reset_timer * 5)
   	realProc = pick(.proc/teleport,.proc/explode,.proc/rapidDupe,.proc/petSpray,.proc/flash,.proc/clean,.proc/corgicannon)
   
   /obj/item/relic/attack_self(mob/user)
  -	if(revealed)
  -		if(cooldown)
  -			to_chat(user, "<span class='warning'>[src] does not react!</span>")
  -			return
  -		else if(loc == user)
  -			cooldown = TRUE
  -			call(src,realProc)(user)
  -			if(!QDELETED(src))
  -				addtimer(CALLBACK(src, .proc/cd), cooldownMax)
  -	else
  +	if(!revealed)
   		to_chat(user, "<span class='notice'>You aren't quite sure what this is. Maybe R&D knows what to do with it?</span>")
  -
  -/obj/item/relic/proc/cd()
  -	cooldown = FALSE
  +		return
  +	if(!COOLDOWN_FINISHED(src, cooldown))
  +		to_chat(user, "<span class='warning'>[src] does not react!</span>")
  +		return
  +	if(loc != user)
  +		return
  +	COOLDOWN_START(src, cooldown, reset_timer)
  +	call(src,realProc)(user)
   
   //////////////// RELIC PROCS /////////////////////////////
   
  
positive.code: 	var/realName = "defined object"
  	var/revealed = FALSE
  	var/realProc
  	var/cooldownMax = 60
  	var/cooldown
  
  /obj/item/relic/Initialize()
  	. = ..()
  
negative.code: /obj/item/relic/proc/rapidDupe(mob/user)
  	audible_message("[src] emits a loud pop!")
  	var/list/dupes = list()
  	for(var/counter in 1 to rand(5,10))
  		var/obj/item/relic/R = new type(get_turf(src))
  		R.name = name
  		R.desc = desc
  		R.realName = realName
  		R.realProc = realProc
  		R.revealed = TRUE
  		dupes += R
  		R.throw_at(pick(oview(7,get_turf(src))),10,1)
  
  	QDEL_LIST_IN(dupes, rand(10, 100))
  	warn_admins(user, "Rapid duplicator", 0)
  
  