anchor.diff:          CommandText:=CommandText+FileText[k];
           inc(k);
         until((FileText[k]=#32)or(k>=length(FileText)));
  -      //Now convert command into type
  -      CommandType := GetCommandTypeFromText(CommandText);
  -      if CommandType in CommandsUsedInGetMissionDetails then //Try to make it faster by only processing commands used
  +      
  +      //Try to make it faster by only processing commands used
  +      if (CommandText='SET_MAP')or(CommandText='SET_MAX_PLAYER')or
  +         (CommandText='SET_TACTIC')or(CommandText='SET_HUMAN_PLAYER') then
         begin
  -      inc(k);
  -      //Extract parameters
  -      for l:=1 to Max_Cmd do
  -        if (FileText[k]<>'!') and (k<length(FileText)) then
  -        begin
  -          Param := '';
  -          repeat
  -            Param:=Param+FileText[k];
  -            inc(k);
  -          until((k>=length(FileText))or(FileText[k]='!')or(FileText[k]=#32)); //Until we find another ! OR we run out of data
  -          //Convert to an integer, if possible
  -          if StrToIntDef(Param,-999) <> -999 then ParamList[l] := StrToInt(Param)
  -          else if l=1 then TextParam:=Param; //Accept text for first parameter
  -
  -          if FileText[k]=#32 then inc(k);
  -        end;
  -      //We now have command text and parameters, so process them
  -      GetDetailsProcessCommand(CommandType,ParamList,TextParam,Result);
  +        //Now convert command into type
  +        CommandType := GetCommandTypeFromText(CommandText);
  +        inc(k);
  +        //Extract parameters
  +        for l:=1 to Max_Cmd do
  +          if (FileText[k]<>'!') and (k<length(FileText)) then
  +          begin
  +            Param := '';
  +            repeat
  +              Param:=Param+FileText[k];
  +              inc(k);
  +            until((k>=length(FileText))or(FileText[k]='!')or(FileText[k]=#32)); //Until we find another ! OR we run out of data
  +            //Convert to an integer, if possible
  +            if StrToIntDef(Param,-999) <> -999 then ParamList[l] := StrToInt(Param)
  +            else if l=1 then TextParam:=Param; //Accept text for first parameter
  +
  +            if FileText[k]=#32 then inc(k);
  +          end;
  +        //We now have command text and parameters, so process them
  +        GetDetailsProcessCommand(CommandType,ParamList,TextParam,Result);
         end;
       end
       else
  
positive.code:   //Set default values
    Result.MapPath := '';
    Result.IsFight := -1;
    Result.TeamCount := -1;
    Result.HumanPlayerID := -1;
  
    FileText := ReadMissionFile(aFileName);
    if FileText = '' then exit;
  
    //FileText should now be formatted nicely with 1 space between each parameter/command
    k := 1;
  
negative.code:   Result := true; //Must have worked if we haven't exited by now
  end;
  
  
  procedure TMissionParser.DebugScriptError(ErrorMsg:string);
  begin
    //Just an idea, a nice way of debugging script errors. Shows the error to the user so they know exactly what they did wrong.
  