anchor.diff:  
   
   implementation
  -uses KM_HandsCollection, KM_Game, KM_UnitGroups, KM_GameCursor, KM_Units_Warrior;
  +uses KM_HandsCollection, KM_Game, KM_Houses, KM_Units, KM_UnitGroups, KM_GameCursor, KM_Units_Warrior;
   
   
   { TKMSpectator }
  
positive.code: procedure TKMSpectator.UpdateSelect;
  var
    G: TKMUnitGroup;
  begin
    //In-game player can select only own Units
    if gGame.IsReplay or gGame.IsMapEditor then
      Selected := gHands.GetUnitByUID(GameCursor.ObjectUID)
    else
      Selected := gHands[fHandIndex].Units.GetUnitByUID(GameCursor.ObjectUID);
  
    //If Id belongs to some Warrior, try to select his group instead
    if Selected is TKMUnitWarrior then
    begin
      if gGame.IsReplay or gGame.IsMapEditor then
        G := gHands.GetGroupByMember(TKMUnitWarrior(Selected))
      else
        G := gHands[fHandIndex].UnitGroups.GetGroupByMember(TKMUnitWarrior(Selected));
  
      //Warrior might not be assigned to a group while walking out of the Barracks
      if G <> nil then
        Selected := G;
    end;
  
    //Update selected groups selected unit
    if Selected is TKMUnitGroup then
      TKMUnitGroup(Selected).SelectedUnit := TKMUnitGroup(Selected).MemberByUID(GameCursor.ObjectUID);
  
    //If there's no unit try pick a house on the Cell below
    if Selected = nil then
      if gGame.IsReplay or gGame.IsMapEditor then
        Selected := gHands.HousesHitTest(GameCursor.Cell.X, GameCursor.Cell.Y)
      else
        Selected := gHands[fHandIndex].HousesHitTest(GameCursor.Cell.X, GameCursor.Cell.Y);
  end;
  
  
  
negative.code: function TKMSpectator.HitTestCursor: TObject;
  begin
    Result := gHands.GetUnitByUID(GameCursor.ObjectUID);
    if (Result is TKMUnit) and TKMUnit(Result).IsDeadOrDying then
      Result := nil;
  
    //If there's no unit try pick a house on the Cell below
    if Result = nil then
    begin
      Result := gHands.HousesHitTest(GameCursor.Cell.X, GameCursor.Cell.Y);
      if (Result is TKMHouse) and TKMHouse(Result).IsDestroyed then
        Result := nil;
    end;
  end;
  
  
  