anchor.diff:  		thing.Uncrossed(src)
   
   	newloc.Entered(src, oldloc)
  +	if(oldarea != newarea)
  +		newarea.Entered(src, oldloc)
   
   	for(var/i in loc)
   		if(i == src) // Multi tile objects
  
positive.code: 		if(!same_loc)
  			if(oldloc)
  				oldloc.Exited(src, destination)
  				if(old_area)
  					old_area.Exited(src, destination)
  			for(var/atom/movable/AM in oldloc)
  				AM.Uncrossed(src)
  
negative.code: 
  	// Past this is the point of no return
  	var/atom/oldloc = loc
  	var/area/oldarea = get_area(oldloc)
  	var/area/newarea = get_area(newloc)
  	loc = newloc
  	. = TRUE
  	oldloc.Exited(src, newloc)
  	if(oldarea != newarea)
  		oldarea.Exited(src, newloc)
  
  	for(var/i in oldloc)
  		if(i == src) // Multi tile objects
  