anchor.diff:  end;
   
   
  +// Use separate function to check if script is worth to compile
  +// Compilation will add 6 global vars for States/Actions/Utils/S/A/U
  +// So we have to compile or not compile script in both LoadFromFile and Load procedures
  +// to have no problems with number of global variables declared
  +function TKMScripting.IsScriptCodeNeedToCompile: Boolean;
  +begin
  +  // No need to colpile script if its empty
  +  Result := Trim(fScriptCode) <> '';
  +end;
  +
  +
   procedure TKMScripting.LoadFromFile(const aFileName, aCampaignDataTypeFile: UnicodeString; aCampaignData: TKMemoryStream);
   begin
     RecreateValidationIssues;
   
     if not fPreProcessor.PreProcessFile(aFileName, fScriptCode) then
       Exit; // Continue only if PreProcess was successful;
  +
  +  // Do not continue compilation, if not needed, same as we do in Load procedure
  +  if not IsScriptCodeNeedToCompile then
  +    Exit;
   
     //Parse console commands procedures
     if gScriptEvents.HasConsoleCommands then
  
positive.code:   gScriptEvents.Load(LoadStream);
    fIDCache.Load(LoadStream);
  
    if fScriptCode <> '' then
      CompileScript;
  
    LoadStream.CheckMarker('ScriptVars');
  
negative.code:     fIDCache: TKMScriptingIdCache;
      fUtils: TKMScriptUtils;
  
      function IsScriptCodeNeedToCompile: Boolean;
      procedure AddError(aMsg: TPSPascalCompilerMessage);
      procedure CompileScript;
      procedure LinkRuntime;
  