Source: geocities.com/stslabs/orogogus

               ( geocities.com/stslabs)    
The single player campaign apparently doesn't allow for a branching mission tree, but due to the way mission cycling is handled, it is (I think) possible to get away with it with a dedicated server.

In the server.cs file for the dedicated server, delete or comment out all the $MissionCycling::Stage* lines except the first one, like so:

$MissionCycling::Stage0 = "A";

Of course, you also need to keep:

$server::Mission = $MissionCycling::Stage0;

Since global variables are persistent through server restarts, you can set the remaining $MissionCycling variables through the mission scripts, rather than the server scripts. So in the A.cs script in /Starsiege/Multiplayer, you might have something like:


if($Winner == "Red")
{
  $MissionCycling::Stage1 = "B";
}
else if($Winner == "Blue")
{
  $MissionCycling::Stage1 = "C";
}


I did a (very) brief test, wherein I put

$MissionCycling::Stage0 = "A";
$MissionCycling::Stage1 = "B";

into a server.cs dedicated server file, and made copies of the City_On_the_Edge files, naming them A, B and C. In A.cs, I altered onMissionStart to include

marsSounds();
$MissionCycling::Stage1 = "C";

I started up a dedicated server, which began on A.cs as expected. I entered MissionEndConditionMet(); in the console, and the next mission loaded was C.cs.

Some additional work might be helpful to ensure that server restarts don't foul up the branching mission cycling. The easiest way I can think of would be to include something like

fileWrite("Mission.cs", overwrite, "$MissionCycling::Stage0 = "FakeMissionName";" );

and

exec("Mission.cs");

and then use just Stage0 to carry out all the mission branching.