anchor.diff:  	event.thingToCall = thingToCall
   	event.procToCall = procToCall
   	event.timeToRun = world.time + wait
  -	event.argList = argList
  +	event.hash = jointext(args, null)
  +	if(args.len > 4)
  +		event.argList = args.Copy(5)
   
  +	// Check for dupes if unique = 1.
  +	if(unique)
  +		if(event.hash in SStimer.hashes)
  +			return
  +	// If we are unique (or we're not checking that), add the timer and return the id.
   	SStimer.processing += event
  -
  +	SStimer.hashes += event.hash
   	return event.id
   
   /proc/deltimer(id)
  -	for (var/datum/timedevent/event in SStimer.processing)
  -		if (event.id == id)
  +	for(var/datum/timedevent/event in SStimer.processing)
  +		if(event.id == id)
   			qdel(event)
   			return 1
   	return 0
positive.code: 
  /datum/timedevent/Destroy()
  	SStimer.processing -= src
  	return ..()
  
  /proc/addtimer(thingToCall, procToCall, wait, argList = list())
  	if (!SStimer) //can't run timers before the mc has been created
  		return
  	if (!thingToCall || !procToCall || wait <= 0)
  
negative.code: 	var/timeToRun
  	var/argList
  	var/id
  	var/hash
  	var/static/nextid = 1
  
  /datum/timedevent/New()
  