Skip to content

Commit cdb11f7

Browse files
authored
patch mission format compatibility for new support features (scp-fs2open#7624)
Although scp-fs2open#7249 added the new support features to `check_for_25_1_data()`, the new fields were still written to the mission file in all formats except retail. Use a version check when writing the fields too.
1 parent e8d9b5f commit cdb11f7

1 file changed

Lines changed: 42 additions & 17 deletions

File tree

code/missioneditor/missionsave.cpp

Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2861,22 +2861,29 @@ int Fred_mission_save::save_mission_info()
28612861
// this is compatible with non-SCP variants - Goober5000
28622862
fout(" %d", (The_mission.support_ships.max_support_ships == 0) ? 1 : 0);
28632863

2864+
// version-gated support options; see also check_for_25_1_data()
2865+
auto more_support_options_version = gameversion::version(25, 1);
2866+
28642867
if (save_config.save_format != MissionFormat::RETAIL) {
2865-
if (optional_string_fred("+Disallow Support Rearm:")) {
2866-
parse_comments(2);
2867-
} else {
2868-
fout("\n+Disallow Support Rearm:");
2868+
if (The_mission.required_fso_version >= more_support_options_version) {
2869+
if (optional_string_fred("+Disallow Support Rearm:")) {
2870+
parse_comments(2);
2871+
} else {
2872+
fout("\n+Disallow Support Rearm:");
2873+
}
2874+
2875+
fout(" %d", The_mission.support_ships.disallow_rearm ? 1 : 0);
28692876
}
28702877

2871-
fout(" %d", The_mission.support_ships.disallow_rearm ? 1 : 0);
2878+
if (The_mission.required_fso_version >= more_support_options_version) {
2879+
if (optional_string_fred("+Allow Support Rearm Weapon Precedence:")) {
2880+
parse_comments(2);
2881+
} else {
2882+
fout("\n+Allow Support Rearm Weapon Precedence:");
2883+
}
28722884

2873-
if (optional_string_fred("+Allow Support Rearm Weapon Precedence:")) {
2874-
parse_comments(2);
2875-
} else {
2876-
fout("\n+Allow Support Rearm Weapon Precedence:");
2885+
fout(" %d", The_mission.support_ships.allow_rearm_weapon_precedence ? 1 : 0);
28772886
}
2878-
2879-
fout(" %d", The_mission.support_ships.allow_rearm_weapon_precedence ? 1 : 0);
28802887
}
28812888

28822889
// here be WMCoolmon's hull and subsys repair stuff
@@ -2895,12 +2902,14 @@ int Fred_mission_save::save_mission_info()
28952902
}
28962903
fout(" %f", The_mission.support_ships.max_subsys_repair_val);
28972904

2898-
if (optional_string_fred("+Support Rearm Pool From Loadout:")) {
2899-
parse_comments(1);
2900-
} else {
2901-
fout("\n+Support Rearm Pool From Loadout:");
2905+
if (The_mission.required_fso_version >= more_support_options_version) {
2906+
if (optional_string_fred("+Support Rearm Pool From Loadout:")) {
2907+
parse_comments(1);
2908+
} else {
2909+
fout("\n+Support Rearm Pool From Loadout:");
2910+
}
2911+
fout(" %d", The_mission.support_ships.rearm_pool_from_loadout ? 1 : 0);
29022912
}
2903-
fout(" %d", The_mission.support_ships.rearm_pool_from_loadout ? 1 : 0);
29042913
}
29052914

29062915
if (Mission_all_attack) {
@@ -4511,7 +4520,23 @@ int Fred_mission_save::save_players()
45114520

45124521
fout(")");
45134522

4514-
if (save_config.save_format != MissionFormat::RETAIL && !The_mission.support_ships.rearm_pool_from_loadout) {
4523+
// version-gated support options; see also check_for_25_1_data()
4524+
auto more_support_options_version = gameversion::version(25, 1);
4525+
4526+
bool has_rearm_pool_entries = false;
4527+
if (save_config.save_format != MissionFormat::RETAIL && The_mission.required_fso_version >= more_support_options_version && !The_mission.support_ships.rearm_pool_from_loadout) {
4528+
for (j = 0; j < weapon_info_size(); j++) {
4529+
// mirror the skip conditions used when writing the pool below
4530+
if (!Weapon_info[j].wi_flags[Weapon::Info_Flags::Player_allowed] || Weapon_info[j].disallow_rearm) {
4531+
continue;
4532+
}
4533+
if (The_mission.support_ships.rearm_weapon_pool[i][j] != -1) {
4534+
has_rearm_pool_entries = true;
4535+
break;
4536+
}
4537+
}
4538+
}
4539+
if (has_rearm_pool_entries) {
45154540
if (optional_string_fred("+Support Rearm Pool:", "$Starting Shipname:")) {
45164541
parse_comments(2);
45174542
} else {

0 commit comments

Comments
 (0)