anchor.diff:      property Evaluation[aPlayer: TKMHandIndex]: TKMArmyEval read GetEvaluation;
       property AllianceEvaluation[aPlayer: TKMHandIndex; aAlliance: TKMAllianceType]: TKMArmyEval read GetAllianceStrength;
   
  -    //function AttackForceChance(aOponent: TKMHandIndex; aGroups: TKMUnitGroupArray): Single;
  +    function CompareStrength(aPlayer, aOponent: TKMHandIndex): Single;
       function CompareAllianceStrength(aPlayer, aOponent: TKMHandIndex): Single;
       procedure UpdateState(aTick: Cardinal);
     end;
  
positive.code: 
  
  procedure TKMArmyEvaluation.UpdateState(aTick: Cardinal);
  var
    PL: TKMHandIndex;
  begin
    PL := aTick mod gHands.Count;
    if gHands[PL].Enabled then
      EvaluatePower(PL, True);
  end;
  
  
negative.code:   PL: Integer;
    GT: TKMGroupType;
  begin
    FillChar(Result, SizeOf(Result), #0);
    for PL := 0 to gHands.Count - 1 do
      if gHands[PL].Enabled AND (gHands[aPlayer].Alliances[PL] = aAlliance) then
        for GT := Low(TKMGroupType) to High(TKMGroupType) do
          with Result[GT] do
          begin
            Hitpoints          := Hitpoints          + fEvals[PL,GT].Hitpoints;
            Attack             := Attack             + fEvals[PL,GT].Attack;
            AttackHorse        := AttackHorse        + fEvals[PL,GT].AttackHorse;
            Defence            := Defence            + fEvals[PL,GT].Defence;
            DefenceProjectiles := DefenceProjectiles + fEvals[PL,GT].DefenceProjectiles;
          end;
  end;
  
  
  // Approximate way how to compute strength of 2 alliances
  function TKMArmyEvaluation.CompareAllianceStrength(aPlayer, aOponent: TKMHandIndex): Single;
  var
    Sum, Diff: Single;
    GT: TKMGroupType;
  