anchor.diff:  			yi = _y + (dy-dheight)*cos + (dx-dwidth)*sin
   			var/turf/T = locate(xi, yi, _z)
   			if(A)
  -				if(get_area(T) == A)
  +				if(is_valid_area_for_shuttle(get_area(T), A))
   					. += T
   				else
   					. += null
  
positive.code: 	//move or squish anything in the way ship at destination
  	roadkill(L0, L1, S1.dir)
  
  
  	for(var/i in 1 to L0.len)
  		var/turf/T0 = L0[i]
  		if(!T0)
  			continue
  		var/turf/T1 = L1[i]
  		if(!T1)
  			continue
  		if(!istype(T0, T0.baseturf))
  			continue
  		for(var/atom/movable/AM in T0)
  			AM.beforeShuttleMove(T1, rotation)
  
  	var/list/moved_atoms = list()
  
  	for(var/i in 1 to L0.len)
  		var/turf/T0 = L0[i]
  		if(!T0)
  			continue
  		var/turf/T1 = L1[i]
  		if(!T1)
  			continue
  		if(!istype(T0, T0.baseturf)) //So if there is a hole in the shuttle we don't drag along the space/asteroid/etc to wherever we are going next
  			T0.copyTurf(T1)
  			T1.baseturf = destination_turf_type
  			var/area/old = T1.loc
  			areaInstance.contents += T1
  			T1.change_area(old, areaInstance)
  
  			//copy over air
  			if(isopenturf(T1))
  				var/turf/open/Ts1 = T1
  				Ts1.copy_air_with_tile(T0)
  
  			//move mobile to new location
  			for(var/atom/movable/AM in T0)
  				if(AM.onShuttleMove(T1, rotation, knockdown))
  					moved_atoms += AM
  
  		if(rotation)
  			T1.shuttleRotate(rotation)
  
negative.code: 		if(S0.area_type)
  			area_type = S0.area_type
  
  	var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance)
  	var/list/L0_all = return_ordered_turfs(x, y, z, dir)
  	var/list/L1 = return_ordered_turfs(S1.x, S1.y, S1.z, S1.dir)
  
  	var/area/A0 = locate("[area_type]")
  	if(!A0)
  		A0 = new area_type(null)
  
  	var/rotation = dir2angle(S1.dir)-dir2angle(dir)
  	if ((rotation % 90) != 0)
  