anchor.diff:  end;
   
   
  -// It is not army management who will decide which unit should be recruited but rather consideration of enemy's units (Eye function)
  -//function TKMArmyManagement.GetArmyDemand(): ...;
  -//begin
  -//
  -//end;
  -
  -
   procedure TKMArmyManagement.RecruitSoldiers();
  -
     function CanEquipIron: Boolean;
     begin
       Result := fSetup.UnlimitedEquip or gGame.CheckTime(fLastEquippedTimeIron + fSetup.EquipRateIron);
     end;
  -
     function CanEquipLeather: Boolean;
     begin
       Result := fSetup.UnlimitedEquip or gGame.CheckTime(fLastEquippedTimeLeather + fSetup.EquipRateLeather);
     end;
  -
   var
     Barracks: array of TKMHouseBarracks;
     H: TKMHouse;
  
positive.code:     property Attack: TKMArmyAttack read fAttack write fAttack;
      property Defence: TKMArmyDefence read fDefence write fDefence;
      property AttackRequest: TKMAttackRequest read fAttackRequest write fAttackRequest;
      property BalanceText: UnicodeString read CombineBalanceStrings;
  
      procedure AfterMissionInit();
      procedure UpdateState(aTick: Cardinal);
      procedure OwnerUpdate(aPlayer: TKMHandIndex);
      procedure WarriorEquipped(aGroup: TKMUnitGroup);
      //function GetArmyDemand(): ...;
      procedure CheckNewThreat(aHouse: TKMHouse; aAttacker: TKMUnitWarrior); overload;
      procedure CheckNewThreat(aUnit: TKMUnit; aAttacker: TKMUnit); overload;
  
  
negative.code:     SaveStream.Write(BestEnemy);
      SaveStream.Write(BestPoint);
      SaveStream.Write( Integer(Length(Enemies)) );
      if (Length(Enemies) > 0) then
        SaveStream.Write(Enemies[0], SizeOf(Enemies[0])*Length(Enemies));
    end;
  
    with fDefendRequest do
    begin
      SaveStream.Write(PointsCnt);
      if (Length(Points) > 0) then
        SaveStream.Write(Points[0], SizeOf(Points[0])*PointsCnt);
    end;
  
    SaveStream.Write( Integer(fHostileGroups.Count) );
  