anchor.diff:  
       fBalanceText: UnicodeString;
   
  -    procedure RecruitSoldiers();
  -    procedure CheckGroupsState();
  -    procedure CheckAttack();
  +    procedure RecruitSoldiers;
  +    procedure CheckGroupsState;
  +    procedure CheckAttack;
       procedure SetAttackRequest(aAttackRequest: TKMAttackRequest);
   
  -    function CombineBalanceStrings(): UnicodeString;
  +    function CombineBalanceStrings: UnicodeString;
     public
       constructor Create(aPlayer: TKMHandID; aSetup: TKMHandAISetup);
       destructor Destroy; override;
       procedure Save(SaveStream: TKMemoryStream);
       procedure Load(LoadStream: TKMemoryStream);
  -    procedure SyncLoad();
  +    procedure SyncLoad;
   
       property AttackNew: TKMArmyAttackNew read fAttackNew;
       property Defence: TKMArmyDefence read fDefence write fDefence;
  
positive.code:       repeat
          GT := TKMGroupType(GROUP_TYPE_MIN_OFF + KaMRandom(4, 'TKMArmyManagement.RecruitSoldiers')); //Pick random from overall count
          Inc(L);
        until (GroupReq[GT] > 0) OR (L > 9); // Limit number of attempts to guarantee it doesn't loop forever
  
        if (GroupReq[GT] = 0) then
          Continue; // Don't train
  
negative.code: 
      property ArmyVectorFieldScanHouses: TKMHouseTypeSet read fArmyVectorFieldScanHouses write fArmyVectorFieldScanHouses;
  
      procedure AfterMissionInit;
      procedure UpdateState(aTick: Cardinal);
      procedure OwnerUpdate(aPlayer: TKMHandID);
      procedure WarriorEquipped(aGroup: TKMUnitGroup);
  
      procedure Paint;
    end;
  
  
  