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:   TKMGroupEval = record
      HitPoints, Attack, AttackHorse, Defence, DefenceProjectiles: Single;
    end;
  
    TKMArmyEval = array[TKMGroupType] of TKMGroupEval;
    TKMGameEval = array[0 .. MAX_HANDS - 1] of TKMArmyEval;
  
  
    //This class evaluate self army relatively enemy armies
    TKMArmyEvaluation = class
    private
      fEvals: TKMGameEval; //Results of evaluation
  
      procedure EvaluatePower(aPlayer: TKMHandIndex; aConsiderHitChance: Boolean = False);
      function GetUnitEvaluation(aUT: TKMUnitType; aConsiderHitChance: Boolean = False): TKMGroupEval;
      function GetEvaluation(aPlayer: TKMHandIndex): TKMArmyEval;
      function GetAllianceStrength(aPlayer: TKMHandIndex; aAlliance: TKMAllianceType): TKMArmyEval;
    public
      constructor Create();
      destructor Destroy; override;
  
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;
  