diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java
index cd0e917e9c6..548ad42d394 100644
--- a/src/main/java/forge/Card.java
+++ b/src/main/java/forge/Card.java
@@ -77,6 +77,7 @@ import forge.game.player.Player;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
import forge.util.Expressions;
+import forge.util.TextUtil;
/**
*
@@ -1977,7 +1978,6 @@ public class Card extends GameEntity implements Comparable {
if (keyword.startsWith("Permanents don't untap during their controllers' untap steps")
|| keyword.startsWith("PreventAllDamageBy")
|| keyword.startsWith("CantBlock")
- || keyword.startsWith("CantBeBlockedBy")
|| keyword.startsWith("CantEquip")
|| keyword.startsWith("SpellCantTarget")) {
continue;
@@ -2121,7 +2121,22 @@ public class Card extends GameEntity implements Comparable {
} else if (keyword.startsWith("Equip") || keyword.startsWith("Fortification")) {
// keyword parsing takes care of adding a proper description
continue;
- } else {
+ } else if (keyword.startsWith("CantBeBlockedBy")) {
+ String expression = keyword.split(" ", 2)[1];
+ boolean hasNon = expression.contains("non");
+ sbLong.append(this.getName()).append(" cannot be blocked ");
+ if( hasNon ) sbLong.append("except ");
+ sbLong.append("by ");
+ String[] parts = TextUtil.split(expression, '.');
+ for(String part : parts) {
+ if( part.equalsIgnoreCase("creature"))
+ continue;
+ sbLong.append(part.toLowerCase()).append(" ");
+ }
+ sbLong.append("creatures");
+ }
+
+ else {
if ((i != 0) && (sb.length() != 0)) {
sb.append(", ");
}
diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java
index 63dfe2282ff..86b0f31bec3 100644
--- a/src/main/java/forge/game/phase/CombatUtil.java
+++ b/src/main/java/forge/game/phase/CombatUtil.java
@@ -680,19 +680,6 @@ public class CombatUtil {
}
}
- if (attacker.hasKeyword("CARDNAME can't be blocked by black creatures.") && blocker.isBlack()) {
- return false;
- }
- if (attacker.hasKeyword("CARDNAME can't be blocked by blue creatures.") && blocker.isBlue()) {
- return false;
- }
- if (attacker.hasKeyword("CARDNAME can't be blocked by green creatures.") && blocker.isGreen()) {
- return false;
- }
- if (attacker.hasKeyword("CARDNAME can't be blocked by white creatures.") && blocker.isWhite()) {
- return false;
- }
-
if (blocker.hasKeyword("CARDNAME can block only creatures with flying.") && !attacker.hasKeyword("Flying")) {
return false;
}