diff --git a/code/network/multi.cpp b/code/network/multi.cpp index d30f7017cce..040cfec5603 100644 --- a/code/network/multi.cpp +++ b/code/network/multi.cpp @@ -1757,7 +1757,7 @@ void multi_standalone_postgame_init() if ( Game_mode & GM_CAMPAIGN_MODE ) { // MUST store goals and events first - may be used to evaluate next mission // store goals and events - mission_campaign_store_goals_and_events_and_variables(false); + mission_campaign_store_goals_and_events(); // evaluate next mission mission_campaign_eval_next_mission(); diff --git a/code/network/multi_campaign.cpp b/code/network/multi_campaign.cpp index 2f89aa7303d..7f8bb0e7813 100644 --- a/code/network/multi_campaign.cpp +++ b/code/network/multi_campaign.cpp @@ -175,6 +175,13 @@ void multi_campaign_do_debrief(int player_status) if((Net_player->flags & NETINFO_FLAG_AM_MASTER) && (Campaign.current_mission != -1) && player_status){ // if players want to go to the next mission if(player_status == 1){ + // as in single player: stored when moving on (a chosen loop counts), not on a replay or retry + if((Campaign.next_mission != Campaign.current_mission) + || (Campaign.loop_enabled && (Campaign.next_mission == Campaign.loop_mission))){ + mission_campaign_store_variables(SEXP_VARIABLE_SAVE_ON_MISSION_PROGRESS, false); + mission_campaign_store_containers(ContainerType::SAVE_ON_MISSION_PROGRESS, false); + } + // move the multiplayer campaign along multi_campaign_next_mission();