anchor.diff:  /datum/hud/proc/update_parallax_pref(mob/viewmob)
   	remove_parallax(viewmob)
   	create_parallax(viewmob)
  -	update_parallax()
  +	update_parallax(viewmob)
   
   // This sets which way the current shuttle is moving (returns true if the shuttle has stopped moving so the caller can append their animation)
  -/datum/hud/proc/set_parallax_movedir(new_parallax_movedir, skip_windups)
  +/datum/hud/proc/set_parallax_movedir(new_parallax_movedir, skip_windups, mob/viewmob)
   	. = FALSE
  -	var/client/C = mymob.client
  +	var/mob/screenmob = viewmob || mymob
  +	var/client/C = screenmob.client
   	if(new_parallax_movedir == C.parallax_movedir)
   		return
   	var/animatedir = new_parallax_movedir
  
positive.code: 
  	for(var/thing in C.parallax_layers)
  		var/atom/movable/screen/parallax_layer/L = thing
  		L.update_status(mymob)
  		if (L.view_sized != C.view)
  			L.update_o(C.view)
  
  
negative.code: 
  		animate(L, transform = matrix(), time = T, loop = -1, flags = ANIMATION_END_NOW)
  
  /datum/hud/proc/update_parallax(mob/viewmob)
  	var/mob/screenmob = viewmob || mymob
  	var/client/C = screenmob.client
  	var/turf/posobj = get_turf(C.eye)
  	if(!posobj)
  		return
  	var/area/areaobj = posobj.loc
  
  	// Update the movement direction of the parallax if necessary (for shuttles)
  	set_parallax_movedir(areaobj.parallax_movedir, FALSE, screenmob)
  
  	var/force
  	if(!C.previous_turf || (C.previous_turf.z != posobj.z))
  