anchor.diff:  
   implementation
   uses KM_PlayersCollection, KM_Terrain, KM_Viewport, KM_Player, KM_PlayerAI, KM_ResourceGFX;
  -
  -
  -function GetCommandTypeFromText(const ACommandText: string): TKMCommandType;
  -var
  -  i: TKMCommandType;
  -begin
  -  Result := ct_Unknown;
  -  for i:=low(TKMCommandType) to high(TKMCommandType) do
  -  begin
  -    if ACommandText = '!'+COMMANDVALUES[i] then
  -    begin
  -      Result := i;
  -      break;
  -    end;
  -  end;
  -  if Result = ct_Unknown then fLog.AddToLog(ACommandText);
  -end;
   
   
   constructor TMissionParser.Create(aMode:TMissionParserMode);
  
positive.code:     procedure ProcessAttackPositions;
      procedure UnloadMission;
      function ReadMissionFile(const aFileName:string):string;
    public      { Public declarations }
      constructor Create(aMode:TMissionParserMode);
      function LoadDATFile(const aFileName:string):string;
      function SaveDATFile(const aFileName:string):boolean;
  
negative.code:   AIAttack.Target := att_ClosestUnit;
    AIAttack.Range := 0;
    AIAttack.CustomPosition := KMPoint(0,0);
  end;
  
  
  function TMissionParser.GetCommandTypeFromText(const ACommandText: string): TKMCommandType;
  var
    i: TKMCommandType;
  begin
    Result := ct_Unknown;
    for i:=low(TKMCommandType) to high(TKMCommandType) do
    begin
      if ACommandText = '!'+COMMANDVALUES[i] then
      begin
        Result := i;
        break;
      end;
    end;
    if Result = ct_Unknown then fLog.AddToLog(ACommandText);
  end;
  
  
  