@@ -429,9 +429,12 @@ void ship_flags_dlg::update_ship(int shipnum)
429429 ship *shipp = &Ships[shipnum];
430430 object *objp = &Objects[shipp->objnum ];
431431
432- if (m_reinforcement.GetCheck () != 2 )
432+ // skip this for player starts, which can be edited in a mixed multi-selection even though
433+ // the checkbox is disabled when only players are selected; set_reinforcement would add a
434+ // bogus reinforcement entry for the player, since ship_name_lookup skips player starts
435+ if ((objp->type != OBJ_START ) && (m_reinforcement.GetCheck () != 2 ))
433436 {
434- set_reinforcement (shipp->ship_name , m_reinforcement.GetCheck ());
437+ set_reinforcement (shipp->ship_name , m_reinforcement.GetCheck ());
435438 }
436439
437440 switch (m_cargo_known.GetCheck ()) {
@@ -709,22 +712,26 @@ void ship_flags_dlg::update_ship(int shipnum)
709712 }
710713
711714 // deal with updating the "destroy before the mission" stuff
712- switch (m_destroy.GetCheck ()) {
713- case 0 : // this means no check in checkbox
714- if ( shipp->flags [Ship::Ship_Flags::Kill_before_mission] )
715- set_modified ();
716-
717- shipp->flags .remove (Ship::Ship_Flags::Kill_before_mission);
718- break ;
719-
720- case 1 : // this means checkbox is checked
721- if ( !(shipp->flags [Ship::Ship_Flags::Kill_before_mission]) )
722- set_modified ();
723-
724- shipp->flags .set (Ship::Ship_Flags::Kill_before_mission);
725- m_destroy_value.save (&shipp->final_death_time );
726- break ;
727- } // a mixed state is 2, and since it's not handled, it doesn't change
715+ // (skip this for player starts, which can be edited in a mixed multi-selection even though
716+ // the checkbox is disabled when only players are selected)
717+ if (objp->type != OBJ_START ) {
718+ switch (m_destroy.GetCheck ()) {
719+ case 0 : // this means no check in checkbox
720+ if ( shipp->flags [Ship::Ship_Flags::Kill_before_mission] )
721+ set_modified ();
722+
723+ shipp->flags .remove (Ship::Ship_Flags::Kill_before_mission);
724+ break ;
725+
726+ case 1 : // this means checkbox is checked
727+ if ( !(shipp->flags [Ship::Ship_Flags::Kill_before_mission]) )
728+ set_modified ();
729+
730+ shipp->flags .set (Ship::Ship_Flags::Kill_before_mission);
731+ m_destroy_value.save (&shipp->final_death_time );
732+ break ;
733+ } // a mixed state is 2, and since it's not handled, it doesn't change
734+ }
728735
729736 switch (m_no_arrival_music.GetCheck ()) {
730737 case 0 :
0 commit comments