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; }