diff --git a/src/p_user.c b/src/p_user.c index 5b074a848..c712bec7c 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -3193,6 +3193,8 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall sonicloopcamvars_t *loop = &player->loop.camera; tic_t loop_out = leveltime - loop->enter_tic; tic_t loop_in = max(leveltime, loop->exit_tic) - loop->exit_tic; + boolean affected_by_loop = (loop_out <= + (loop->zoom_in_speed + loop->zoom_out_speed) && leveltime > introtime); thiscam->old_x = thiscam->x; thiscam->old_y = thiscam->y; @@ -3406,8 +3408,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall } else if (player->exiting) // SRB2Kart: Leave the camera behind while exiting, for dramatic effect! camstill = true; - else if (lookback || lookbackdelay[num]) // SRB2kart - Camera flipper + else if ((lookback || lookbackdelay[num]) && !affected_by_loop) { + // SRB2Kart -- Camera flip when looking backwards #define MAXLOOKBACKDELAY 2 camspeed = FRACUNIT; if (lookback) @@ -3622,7 +3625,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall thiscam->momx = x - thiscam->x; thiscam->momy = y - thiscam->y; - if (lookback && lookbackdelay[num]) { + if (lookback && lookbackdelay[num] && !affected_by_loop) { // when looking back, camera's momentum // should inherit the momentum of the player // plus extra