diff --git a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
index 400195cb5c..7d9ee64978 100644
--- a/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
+++ b/Mage.Verify/src/test/java/mage/verify/VerifyCardDataTest.java
@@ -59,7 +59,7 @@ public class VerifyCardDataTest {
 
     private static final Logger logger = Logger.getLogger(VerifyCardDataTest.class);
 
-    private static final String FULL_ABILITIES_CHECK_SET_CODE = "MAT"; // check all abilities and output cards with wrong abilities texts;
+    private static final String FULL_ABILITIES_CHECK_SET_CODES = "MAT"; // check ability text due mtgjson, can use multiple sets like MAT;CMD or * for all
     private static final boolean CHECK_ONLY_ABILITIES_TEXT = false; // use when checking text locally, suppresses unnecessary checks and output messages
 
     private static final boolean AUTO_FIX_SAMPLE_DECKS = false; // debug only: auto-fix sample decks by test_checkSampleDecks test run
@@ -242,6 +242,9 @@ public class VerifyCardDataTest {
 
     private final ArrayList<String> outputMessages = new ArrayList<>();
     private int failed = 0;
+    private int wrongAbilityStatsTotal = 0;
+    private int wrongAbilityStatsGood = 0;
+    private int wrongAbilityStatsBad = 0;
 
     private static void skipListCreate(String listName) {
         skipCheckLists.put(listName, new LinkedHashSet<>());
@@ -286,6 +289,8 @@ public class VerifyCardDataTest {
 
     @Test
     public void test_verifyCards() {
+        checkWrongAbilitiesTextStart();
+
         int cardIndex = 0;
         for (Card card : CardScanner.getAllCards()) {
             cardIndex++;
@@ -300,6 +305,8 @@ public class VerifyCardDataTest {
             }
         }
 
+        checkWrongAbilitiesTextEnd();
+
         printMessages(outputMessages);
         if (failed > 0) {
             Assert.fail(String.format("found %d errors in %d cards verify (see errors list above)", failed, CardScanner.getAllCards().size()));
@@ -1565,15 +1572,15 @@ public class VerifyCardDataTest {
     }
 
     private static boolean wasCheckedByAbilityText(MtgJsonCard ref) {
-        // ignore already checkd cards, so no bloated logs from duplicated cards
-        if (!CHECK_ONLY_ABILITIES_TEXT) {
+        // ignore already checked cards, so no bloated logs from duplicated cards
+        if (CHECK_ONLY_ABILITIES_TEXT) {
             return true;
         }
         if (checkedNames.contains(ref.getNameAsFace())) {
-            return false;
+            return true;
         }
         checkedNames.add(ref.getNameAsFace());
-        return true;
+        return false;
     }
 
     private void checkAll(Card card, MtgJsonCard ref, int cardIndex) {
@@ -1950,9 +1957,28 @@ public class VerifyCardDataTest {
                 .anyMatch(effectClazz::isInstance);
     }
 
+    private void checkWrongAbilitiesTextStart() {
+        System.out.println("Ability text checks started for " + FULL_ABILITIES_CHECK_SET_CODES);
+        wrongAbilityStatsTotal = 0;
+        wrongAbilityStatsGood = 0;
+        wrongAbilityStatsBad = 0;
+    }
+
+    private void checkWrongAbilitiesTextEnd() {
+        // TODO: implement tests result/stats by github actions to show in check message compared to prev version
+        System.out.println(String.format("Ability text checks ends with stats:"));
+        System.out.println(String.format(" - total: %d (100.00)", wrongAbilityStatsTotal));
+        System.out.println(String.format(" - good: %d (%.2f)", wrongAbilityStatsGood, wrongAbilityStatsGood * 100.0 / wrongAbilityStatsTotal));
+        System.out.println(String.format(" - bad: %d (%.2f)", wrongAbilityStatsBad, wrongAbilityStatsBad * 100.0 / wrongAbilityStatsTotal));
+        System.out.println(String.format(""));
+    }
+
     private void checkWrongAbilitiesText(Card card, MtgJsonCard ref, int cardIndex) {
         // checks missing or wrong text
-        if (!card.getExpansionSetCode().equals(FULL_ABILITIES_CHECK_SET_CODE) || !wasCheckedByAbilityText(ref)) {
+        if (!FULL_ABILITIES_CHECK_SET_CODES.equals("*") && !FULL_ABILITIES_CHECK_SET_CODES.contains(card.getExpansionSetCode())) {
+            return;
+        }
+        if (wasCheckedByAbilityText(ref)) {
             return;
         }
 
@@ -1960,6 +1986,7 @@ public class VerifyCardDataTest {
             return;
         }
 
+        wrongAbilityStatsTotal++;
         String refText = ref.text;
         // planeswalker fix [-7]: xxx
         refText = refText.replaceAll("\\[([\\−\\+]?\\d*)\\]\\: ", "$1: ").replaceAll("\\[\\−X\\]\\: ", "-X: ");
@@ -2071,6 +2098,12 @@ public class VerifyCardDataTest {
             }
         }
 
+        if (isFine) {
+            wrongAbilityStatsGood++;
+        } else {
+            wrongAbilityStatsBad++;
+        }
+
         // extra message for easy checks
         if (!isFine) {
             System.out.println();