diff --git a/src/p_user.c b/src/p_user.c
index f5a8208a374b8bc8373285d71110569ff055d03d..7c7f948639c871e3964c428de23086fa7a02aa38 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -9781,7 +9781,13 @@ void P_ResetCamera(player_t *player, camera_t *thiscam)
 	thiscam->y = y;
 	thiscam->z = z;
 
-	if (!(thiscam == &camera && (cv_cam_still.value || cv_analog.value))
+	if ((thiscam == &camera && cv_abilitydirection[0].value)
+	|| (thiscam == &camera2 && cv_abilitydirection[1].value))
+	{
+		thiscam->angle = (thiscam == &camera) ? localangle : localangle2;
+		thiscam->aiming = (thiscam == &camera) ? localaiming : localaiming2;
+	}
+	else if (!(thiscam == &camera && (cv_cam_still.value || cv_analog.value))
 	&& !(thiscam == &camera2 && (cv_cam2_still.value || cv_analog2.value)))
 	{
 		thiscam->angle = player->mo->angle;