anchor.diff:  
   //Tell other players which map we will be using
   procedure TKMNetworking.MapSelect(aName:string);
  -var i:integer;
   begin
     Assert(fLANPlayerKind = lpk_Host, 'Only host can select maps');
   
  -  //Send to partners
  -  for i := 1 to fPlayersList.Count-1 do //Exclude self and send to [2nd to last] range
  -    PacketSend(fPlayersList[i], mk_MapSelect, aName);
  -
     MapName := aName;
  +  fPlayers.PacketSend(mk_MapSelect, MapName);
  +
     if Assigned(fOnMapName) then fOnMapName(MapName);
   
     //Compare map availability and CRC
  
positive.code: //Send whole game setup info at once, making sure there are no misunderstandings,
  //especially about random values (e.g. start locations)
  procedure TKMNetworking.StartGame;
  var i:integer; AllReady:boolean; Msg:TKMemoryStream;
  begin
    Assert(fLANPlayerKind = lpk_Host, 'Only host can start the game');
  
    //Check if everyone is ready to start
    AllReady := true;
    //for i := 1 to fPlayersList.Count-1 do //Exclude self
      //AllReady := AllReady and fPlayersList[i].Ready;
  
    if not AllReady then begin
      Assert(AllReady, 'Not everyone is ready to start');
      exit;
    end;
  
    Msg := TKMemoryStream.Create;
    EncodeGameSetup(Msg);
  
    //Send game setup to partners
    for i := 1 to fPlayersList.Count-1 do //Exclude self and send to [2nd to last] range
      //PacketSend(fPlayersList[i], mk_StartGame, Msg);
  
    Msg.Free;
  
    //Now we will await confirmation messages from other players and start the game
  end;
  
  
  procedure TKMNetworking.EncodeGameSetup(aStream:TKMemoryStream);
  var i:integer;
  begin
    aStream.Write(MapName);
    //aStream.Write(AllianceMode); //Fixed / changeable
    //aStream.Write(StartupConditions);
    //aStream.Write(WinConditions);
    //aStream.Write(DefeatConditions);
    aStream.Write(fPlayersList.Count);
  
    for i:=0 to fPlayersList.Count-1 do
    begin
      //aStream.Write(fPlayersList[i].PlayerType); //Human / AI
      aStream.Write(i{fPlayersList[i].StartLocID});
      //aStream.Write(fPlayersList[i].FlagColor);
      //for k:=0 to fPlayersList.Count-1
      //  aStream.Write(fPlayersList[i].Alliance[k]); //Startup
    end;
  end;
  
  
  procedure TKMNetworking.PostMessage(aText:string);
  var i:integer;
  begin
    fOnTextMessage(fPlayersList[0] + ': ' + aText);
  
    //Send to partners
    for i := 1 to fPlayersList.Count-1 do //Exclude self and send to [2nd to last] range
      PacketSend(fPlayersList[i], mk_Text, fPlayersList[0] + ': ' + aText);
  end;
  
  
  
negative.code: 
        MapName:string;
  
        fPlayers:TKMPlayersList;
  
        JoinTick:cardinal;
        fOnJoinSucc:TNotifyEvent;
  