At the end of salt the ground, the mission script itself returns a result saying the campaign is over (either it's over and you won, or it's over and you lost).
As far as I know, about the only way to acheive the result you want is to alter and recompile the "Rom_Salt" mission script so that it schedules maiden voyage next (this is in addition to the .gf changes you've described).
Specifically, you'd need to replace this method:
Code:
void tPlayerTeam::mScheduleNextMission( tVictoryCondition* VictoryCondition )
{
fMissionScheduler.fVictoryLevel = VictoryCondition->mCalcVictoryStatus( mGetTeam() );
fMissionScheduler.fPrestige = VictoryCondition->mGetPrestigePoints( fMissionScheduler.fVictoryLevel );
fMissionScheduler.fBonusPrestige = VictoryCondition->mGetBonusPrestige();
fMissionScheduler.fNextMissionScore = -1;
switch( fMissionScheduler.fVictoryLevel )
{
case kAstoundingVictory:
case kVictory:
case kDraw:
fMissionScheduler.fMedal = kMedalSpecialFour;
fMissionScheduler.fCampaignEvent = tTeamInfo::tMissionScheduler::kRetire;
break;
default:
fMissionScheduler.fCampaignEvent = tTeamInfo::tMissionScheduler::kLost;
break;
}
}
with one like this:
Code:
void tPlayerTeam::mScheduleNextMission( tVictoryCondition* VictoryCondition )
{
fMissionScheduler.fVictoryLevel = VictoryCondition->mCalcVictoryStatus( mGetTeam() );
fMissionScheduler.fPrestige = VictoryCondition->mGetPrestigePoints( fMissionScheduler.fVictoryLevel );
fMissionScheduler.fBonusPrestige = VictoryCondition->mGetBonusPrestige();
fMissionScheduler.fNextMissionScore = -1;
switch( fMissionScheduler.fVictoryLevel )
{
case kAstoundingVictory:
case kVictory:
case kDraw:
fMissionScheduler.fMedal = kMedalSpecialFour;
fMissionScheduler.fNextMissionScore = 1000;
fMissionScheduler.fNextMissionTitle = "X_Voyage";
break;
default:
fMissionScheduler.fCampaignEvent = tTeamInfo::tMissionScheduler::kLost;
break;
}
}
dave