X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=ad2f231f641f92cc86eb124e2e8a91c4eed6eede;hp=ed560daf5257ca5b269cb707961fdbf5fb7687f3;hb=453e58ce94fd8f1257b08c6ee273382ede528f1a;hpb=c674feee36d3dc8b2e512e87991dce23ea4c5d83 diff --git a/src/game.c b/src/game.c index ed560daf..ad2f231f 100644 --- a/src/game.c +++ b/src/game.c @@ -11465,8 +11465,9 @@ static void GameActionsExt(void) stored_player[map_player_action[local_player->index_nr]].effective_action = summarized_player_action; + // summarize all actions at centered player in local team mode if (tape.recording && - setup.team_mode && + setup.team_mode && !network.enabled && setup.input_on_focus && game.centered_player_nr != -1) { @@ -12179,12 +12180,17 @@ void GameActions_RND(void) DrawAllPlayers(); PlayAllPlayersSound(); - if (local_player->show_envelope != 0 && (!local_player->active || - local_player->MovPos == 0)) + for (i = 0; i < MAX_PLAYERS; i++) { - ShowEnvelope(local_player->show_envelope - EL_ENVELOPE_1); + struct PlayerInfo *player = &stored_player[i]; - local_player->show_envelope = 0; + if (player->show_envelope != 0 && (!player->active || + player->MovPos == 0)) + { + ShowEnvelope(player->show_envelope - EL_ENVELOPE_1); + + player->show_envelope = 0; + } } // use random number generator in every frame to make it less predictable @@ -12526,10 +12532,11 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) } else { - int offset = game.scroll_delay_value; + int offset_raw = game.scroll_delay_value; if (jx != old_jx) // player has moved horizontally { + int offset = MIN(offset_raw, (SCR_FIELDX - 2) / 2); int offset_x = offset * (player->MovDir == MV_LEFT ? +1 : -1); int new_scroll_x = jx - MIDPOSX + offset_x; @@ -12550,6 +12557,7 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) } else // player has moved vertically { + int offset = MIN(offset_raw, (SCR_FIELDY - 2) / 2); int offset_y = offset * (player->MovDir == MV_UP ? +1 : -1); int new_scroll_y = jy - MIDPOSY + offset_y;