@@ -314,7 +314,8 @@ flag_def_list_new<Ship::Ship_Flags> Parse_ship_flags[] = {
314314 {" fail-sound-locked-primary" , Ship::Ship_Flags::Fail_sound_locked_primary, true , false },
315315 {" fail-sound-locked-secondary" , Ship::Ship_Flags::Fail_sound_locked_secondary, true , false },
316316 {" aspect-immune" , Ship::Ship_Flags::Aspect_immune, true , false },
317- {" cannot-perform-scan" , Ship::Ship_Flags::Cannot_perform_scan, true , false },
317+ {" cannot-perform-scan-hide-cargo" , Ship::Ship_Flags::Cannot_perform_scan_hide_cargo, true , false },
318+ {" cannot-perform-scan-show-cargo" , Ship::Ship_Flags::Cannot_perform_scan_show_cargo, true , false },
318319 {" no-targeting-limits" , Ship::Ship_Flags::No_targeting_limits, true , false },
319320 {" force-shields-on" , Ship::Ship_Flags::Force_shields_on, true , false },
320321 {" Destroy before Mission" , Ship::Ship_Flags::Kill_before_mission,true , false }, // Not Printed to misson so can use descriptive name
@@ -484,7 +485,8 @@ flag_def_list_new<Mission::Parse_Object_Flags> Parse_object_flags[] = {
484485 { " fail-sound-locked-primary" , Mission::Parse_Object_Flags::SF_Fail_sound_locked_primary, true , false },
485486 { " fail-sound-locked-secondary" , Mission::Parse_Object_Flags::SF_Fail_sound_locked_secondary, true , false },
486487 { " aspect-immune" , Mission::Parse_Object_Flags::SF_Aspect_immune, true , false },
487- { " cannot-perform-scan" , Mission::Parse_Object_Flags::SF_Cannot_perform_scan, true , false },
488+ { " cannot-perform-scan-hide-cargo" , Mission::Parse_Object_Flags::SF_Cannot_perform_scan_hide_cargo, true , false },
489+ { " cannot-perform-scan-show-cargo" , Mission::Parse_Object_Flags::SF_Cannot_perform_scan_show_cargo, true , false },
488490 { " no-targeting-limits" , Mission::Parse_Object_Flags::SF_No_targeting_limits, true , false },
489491};
490492
@@ -550,7 +552,8 @@ parse_object_flag_description<Mission::Parse_Object_Flags> Parse_object_flag_des
550552 { Mission::Parse_Object_Flags::SF_Fail_sound_locked_primary, " Play the firing fail sound when the weapon is locked." },
551553 { Mission::Parse_Object_Flags::SF_Fail_sound_locked_secondary, " Play the firing fail sound when the weapon is locked." },
552554 { Mission::Parse_Object_Flags::SF_Aspect_immune, " Ship cannot be targeted by Aspect Seekers." },
553- { Mission::Parse_Object_Flags::SF_Cannot_perform_scan, " Ship cannot scan other ships." },
555+ { Mission::Parse_Object_Flags::SF_Cannot_perform_scan_hide_cargo, " Ship cannot scan other ships, and the cargo line will not be shown on the HUD." },
556+ { Mission::Parse_Object_Flags::SF_Cannot_perform_scan_show_cargo, " Ship cannot scan other ships, but the cargo line will be shown on the HUD." },
554557 { Mission::Parse_Object_Flags::SF_No_targeting_limits, " Ship is always targetable regardless of AWACS or targeting range limits." },
555558};
556559
@@ -3126,8 +3129,10 @@ void resolve_parse_flags(object *objp, flagset<Mission::Parse_Object_Flags> &par
31263129 if (parse_flags[Mission::Parse_Object_Flags::SF_Aspect_immune])
31273130 shipp->flags .set (Ship::Ship_Flags::Aspect_immune);
31283131
3129- if (parse_flags[Mission::Parse_Object_Flags::SF_Cannot_perform_scan])
3130- shipp->flags .set (Ship::Ship_Flags::Cannot_perform_scan);
3132+ if (parse_flags[Mission::Parse_Object_Flags::SF_Cannot_perform_scan_hide_cargo])
3133+ shipp->flags .set (Ship::Ship_Flags::Cannot_perform_scan_hide_cargo);
3134+ if (parse_flags[Mission::Parse_Object_Flags::SF_Cannot_perform_scan_show_cargo])
3135+ shipp->flags .set (Ship::Ship_Flags::Cannot_perform_scan_show_cargo);
31313136
31323137 if (parse_flags[Mission::Parse_Object_Flags::SF_No_targeting_limits])
31333138 shipp->flags .set (Ship::Ship_Flags::No_targeting_limits);
@@ -3521,28 +3526,36 @@ int parse_object(mission *pm, int /*flag*/, p_object *p_objp)
35213526 // set flags
35223527 if (optional_string (" +Flags:" ))
35233528 {
3524- SCP_vector<SCP_string> unparsed;
3525- parse_string_flag_list (p_objp->flags , Parse_object_flags, Num_parse_object_flags, &unparsed);
3526- if (!unparsed.empty ()) {
3527- for (size_t k = 0 ; k < unparsed.size (); ++k) {
3528- WarningEx (LOCATION , " Unknown flag in parse object flags: %s" , unparsed[k].c_str ());
3529+ SCP_vector<SCP_string> unparsed_vec;
3530+ parse_string_flag_list (p_objp->flags , Parse_object_flags, Num_parse_object_flags, &unparsed_vec);
3531+ if (!unparsed_vec.empty ()) {
3532+ for (const auto & unparsed: unparsed_vec) {
3533+ // catch typos or deprecations
3534+ if (!stricmp (unparsed.c_str (), " no-collide" ) || !stricmp (unparsed.c_str (), " no_collide" )) {
3535+ p_objp->flags .set (Mission::Parse_Object_Flags::OF_No_collide);
3536+ } else if (!stricmp (unparsed.c_str (), " cannot-perform-scan" )) {
3537+ p_objp->flags .set (Mission::Parse_Object_Flags::SF_Cannot_perform_scan_hide_cargo);
3538+ } else {
3539+ WarningEx (LOCATION , " Unknown flag in parse object flags: %s" , unparsed.c_str ());
3540+ }
35293541 }
35303542 }
35313543 }
35323544
35333545 // second set - Goober5000
35343546 if (optional_string (" +Flags2:" ))
35353547 {
3536- SCP_vector<SCP_string> unparsed ;
3537- parse_string_flag_list (p_objp->flags , Parse_object_flags, Num_parse_object_flags, &unparsed );
3538- if (!unparsed .empty ()) {
3539- for (size_t k = 0 ; k < unparsed. size (); ++k ) {
3548+ SCP_vector<SCP_string> unparsed_vec ;
3549+ parse_string_flag_list (p_objp->flags , Parse_object_flags, Num_parse_object_flags, &unparsed_vec );
3550+ if (!unparsed_vec .empty ()) {
3551+ for (const auto & unparsed: unparsed_vec ) {
35403552 // catch typos or deprecations
3541- if (!stricmp (unparsed[k] .c_str (), " no-collide" ) || !stricmp (unparsed[k] .c_str (), " no_collide" )) {
3553+ if (!stricmp (unparsed.c_str (), " no-collide" ) || !stricmp (unparsed.c_str (), " no_collide" )) {
35423554 p_objp->flags .set (Mission::Parse_Object_Flags::OF_No_collide);
3543- }
3544- else {
3545- WarningEx (LOCATION , " Unknown flag in parse object flags: %s" , unparsed[k].c_str ());
3555+ } else if (!stricmp (unparsed.c_str (), " cannot-perform-scan" )) {
3556+ p_objp->flags .set (Mission::Parse_Object_Flags::SF_Cannot_perform_scan_hide_cargo);
3557+ } else {
3558+ WarningEx (LOCATION , " Unknown flag in parse object flags: %s" , unparsed.c_str ());
35463559 }
35473560 }
35483561 }
0 commit comments