anchor.diff:  		A.air_tight = TRUE
   		INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
   
  -/obj/machinery/door/airlock/ATOM_AFTER
  +/obj/machinery/door/airlock/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	shuttledocked =  1
   	for(var/obj/machinery/door/airlock/A in range(1, src))
   		A.shuttledocked = 1
   
  -/obj/machinery/camera/ATOM_BEFORE
  +/obj/machinery/camera/beforeShuttleMove(turf/newT, rotation)
   	. = ..()
   	GLOB.cameranet.removeCamera(src)
   	GLOB.cameranet.updateChunk()
   	return TRUE
   
  -/obj/machinery/camera/ATOM_AFTER
  +/obj/machinery/camera/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	if(can_use())
   		GLOB.cameranet.addCamera(src)
   	var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(x, y, z)
   	chunk.hasChanged(TRUE)
   
  -/obj/machinery/thruster/ATOM_BEFORE
  +/obj/machinery/thruster/beforeShuttleMove(turf/newT, rotation)
   	..()
   	. = TRUE
   
  -/obj/machinery/telecomms/ATOM_AFTER
  +/obj/machinery/telecomms/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	listening_level = z // Update listening Z, just in case you have telecomm relay on a shuttle
   
  -/obj/machinery/mech_bay_recharge_port/ATOM_AFTER
  +/obj/machinery/mech_bay_recharge_port/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	recharging_turf = get_step(loc, dir)
   
  -/obj/machinery/atmospherics/ATOM_AFTER
  +/obj/machinery/atmospherics/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	if(pipe_vision_img)
   		pipe_vision_img.loc = loc
   
  -/obj/machinery/computer/auxillary_base/ATOM_ON
  +/obj/machinery/computer/auxillary_base/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
   	. = ..()
   	if(z == ZLEVEL_MINING) //Avoids double logging and landing on other Z-levels due to badminnery
   		SSblackbox.add_details("colonies_dropped", "[x]|[y]|[z]") //Number of times a base has been dropped!
   
  -/obj/machinery/gravity_generator/main/ATOM_BEFORE
  +/obj/machinery/gravity_generator/main/beforeShuttleMove(turf/newT, rotation)
   	. = ..()
   	on = FALSE
   	update_list()
   
  -/obj/machinery/gravity_generator/main/ATOM_AFTER
  +/obj/machinery/gravity_generator/main/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
   	. = ..()
   	if(charge_count != 0 && charging_state != POWER_UP)
   		on = TRUE
   	update_list()
   
  -/obj/machinery/thruster/ATOM_BEFORE
  +/obj/machinery/thruster/beforeShuttleMove(turf/newT, rotation)
   	. = ..()
   	. = TRUE
   
  
positive.code: 		GLOB.deliverybeacons += src
  		GLOB.deliverybeacontags += location
  
  /obj/machinery/power/terminal/ATOM_AFTER
  	. = ..()
  	var/turf/T = src.loc
  	if(level==1)
  		hide(T.intact)
  
  /obj/machinery/ftl_shieldgen/ATOM_BEFORE
  	. = ..()
  	if(is_active())
  		drop_physical()
  
  /obj/machinery/ftl_shieldgen/ATOM_AFTER
  	. = ..()
  	if(is_active())
  		raise_physical()
  
  /************************************Item move procs************************************/
  
  /obj/item/weapon/storage/pod/ATOM_ON
  	unlocked = TRUE
  	// If the pod was launched, the storage will always open.
  	return ..()
  
  /************************************Mob move procs************************************/
  
  /mob/ATOM_ON
  	if(!move_on_shuttle)
  		return 0
  	. = ..()
  
negative.code: 		if(movement_force["KNOCKDOWN"])
  			Knockdown(movement_force["KNOCKDOWN"])
  
  /mob/living/simple_animal/hostile/megafauna/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	. = ..()
  	message_admins("Megafauna [src] [ADMIN_FLW(src)] moved via shuttle from [ADMIN_COORDJMP(oldT)] to [ADMIN_COORDJMP(loc)]")
  
  /************************************Structure move procs************************************/
  
  /obj/structure/grille/beforeShuttleMove(turf/newT, rotation)
  	. = ..()
  	. = TRUE
  
  /obj/structure/lattice/beforeShuttleMove(turf/newT, rotation)
  	. = ..()
  	. = TRUE
  
  /obj/structure/disposalpipe/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
  	. = ..()
  	update()
  
  /obj/structure/cable/afterShuttleMove(list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir)
  	. = ..()
  	var/turf/T = loc
  	if(level==1)
  		hide(T.intact)
  		
  /obj/structure/shuttle/beforeShuttleMove(turf/newT, rotation)
  	..()
  	. = TRUE
  
  
  /************************************Misc move procs************************************/
  
  /atom/movable/lighting_object/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	return FALSE
  
  /atom/movable/light/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	return FALSE
  
  /obj/docking_port/stationary/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	if(old_dock == src) //Don't move the dock we're leaving
  		return FALSE
  
  	. = ..()
  
  /obj/docking_port/stationary/public_mining_dock/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	id = "mining_public" //It will not move with the base, but will become enabled as a docking point.
  	return 0
  
  /obj/effect/abstract/proximity_checker/onShuttleMove(turf/newT, turf/oldT, rotation, list/movement_force, move_dir, old_dock)
  	//timer so it only happens once
  	addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE)