anchor.diff:  //* aTiles: Check detailed info on this type in description
   //* aRevertOnFail: do we need to revert all changes on any error while applying changes. If True, then no changes will be applied on error. If False - we will continue apply changes where possible
   //* aShowDetailedErrors: show detailed errors after. Can slow down the execution, because of logging. If aRevertOnFail is set to True, then only first error will be shown
  -//* Returns true, if there was no errors on any tile. False if there was at least 1 error.
  +//* Result: True, if there was no errors on any tile. False if there was at least 1 error.
   function TKMScriptActions.MapTilesArraySet(aTiles: array of TKMTerrainTileBrief; aRevertOnFail, aShowDetailedErrors: Boolean): Boolean;
   
     function GetTileErrorsStr(aErrorsIn: TKMTileChangeTypeSet): string;
  
positive.code: //* Version: 7000+
  //* Add AI attack 
  //* Possible targets:
  //* <pre>TKMAIAttackTarget = (
  //*  attClosestUnit, // Closest enemy unit
  //*  attClosestBuildingFromArmy, // Closest building from the group lauching the attack
  //*  attClosestBuildingFromStartPos, // Closest building from the AI's start position
  //*  attCustomPosition // Custom point defined with aCustomPosition
  //* );</pre>
  //* aHand: handID
  //* aRepeating: is attack repeating
  //* aDelay: attack delay from the game start (in ticks)
  
negative.code: //* 2. tile height (same as for MapTileHeightSet)
  //* 3. tile object (same as for MapTileObjectSet)
  //* Works much faster, then applying all changes successively for every tile, because pathfinding compute is executed only once after all changes have been done
  //* <pre>
  //* TKMTerrainTileBrief = record
  //*   X, Y: Byte;     // Tile map coordinates
  //*   Terrain: Byte;  // Terrain tile type (0..255)
  //*   Rotation: Byte; // Tile rotation (0..3)
  