anchor.diff:  	var/timeToRun
   	var/argList
   	var/id
  +	var/hash
   	var/static/nextid = 1
   
   /datum/timedevent/New()
  
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: 	event.thingToCall = thingToCall
  	event.procToCall = procToCall
  	event.timeToRun = world.time + wait
  	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)
  			qdel(event)
  			return 1
  	return 0