diff --git a/res/cardsfolder/a/anurid_swarmsnapper.txt b/res/cardsfolder/a/anurid_swarmsnapper.txt index c7f00984eec..c9ce61a5db6 100644 --- a/res/cardsfolder/a/anurid_swarmsnapper.txt +++ b/res/cardsfolder/a/anurid_swarmsnapper.txt @@ -5,7 +5,6 @@ Text:no text PT:1/4 K:Reach A:AB$ Pump | Cost$ 1 G | Defined$ Self | KW$ HIDDEN CARDNAME can block an additional creature. | SpellDescription$ CARDNAME can block an additional creature this turn. -SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/anurid_swarmsnapper.jpg SetInfo:JUD|Uncommon|http://magiccards.info/scans/en/ju/105.jpg diff --git a/res/cardsfolder/l/luminous_guardian.txt b/res/cardsfolder/l/luminous_guardian.txt index a45c0cff59a..08be77ad3a3 100644 --- a/res/cardsfolder/l/luminous_guardian.txt +++ b/res/cardsfolder/l/luminous_guardian.txt @@ -5,7 +5,6 @@ Text:no text PT:1/4 A:AB$ Pump | Cost$ W | Defined$ Self | NumDef$ 1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. A:AB$ Pump | Cost$ 2 | Defined$ Self | KW$ HIDDEN CARDNAME can block an additional creature. | SpellDescription$ CARDNAME can block an additional creature this turn. -SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/luminous_guardian.jpg SetInfo:ODY|Uncommon|http://magiccards.info/scans/en/od/31.jpg diff --git a/res/cardsfolder/m/mounted_archers.txt b/res/cardsfolder/m/mounted_archers.txt index 80a3da499ca..e0a1d109058 100644 --- a/res/cardsfolder/m/mounted_archers.txt +++ b/res/cardsfolder/m/mounted_archers.txt @@ -5,7 +5,6 @@ Text:no text PT:2/3 K:Reach A:AB$ Pump | Cost$ W | Defined$ Self | KW$ HIDDEN CARDNAME can block an additional creature. | SpellDescription$ CARDNAME can block an additional creature this turn. -SVar:RemAIDeck:True SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/mounted_archers.jpg SetInfo:TMP|Common|http://magiccards.info/scans/en/tp/242.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index 2532eafb7f9..9c219a5673d 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -529,6 +529,24 @@ public class AbilityFactoryPump { || !CombatUtil.canBlock(card)) { return false; } + } else if (keyword.endsWith("CARDNAME can block an additional creature.")) { + if (ph.isPlayerTurn(computer) + || !ph.getPhase().equals(PhaseType.COMBAT_DECLARE_ATTACKERS_INSTANT_ABILITY)) { + return false; + } + int canBlockNum = 1 + card.getKeywordAmount("CARDNAME can block an additional creature."); + int possibleBlockNum = 0; + for (Card attacker : AllZone.getCombat().getAttackerList()) { + if (CombatUtil.canBlock(attacker, card)) { + possibleBlockNum++; + if (possibleBlockNum > canBlockNum) { + break; + } + } + } + if (possibleBlockNum <= canBlockNum) { + return false; + } } else if (keyword.equals("Shroud") || keyword.equals("Hexproof")) { if (!AbilityFactory.predictThreatenedObjects(sa.getAbilityFactory()).contains(card)) { return false; @@ -597,13 +615,13 @@ public class AbilityFactoryPump { // is the creature blocking and unable to destroy the attacker // or would be destroyed itself? if (c.isBlocking()) { - if (CombatUtil.blockerWouldBeDestroyed(c)) { + if (defense > 0 && CombatUtil.blockerWouldBeDestroyed(c)) { return true; } CardList blockedBy = AllZone.getCombat().getAttackersBlockedBy(c); // For now, Only care the first creature blocked by a card. // TODO Add in better BlockAdditional support - if (blockedBy.size() != 0 && !CombatUtil.attackerWouldBeDestroyed(blockedBy.get(0))) { + if (!blockedBy.isEmpty() && attack > 0 && !CombatUtil.attackerWouldBeDestroyed(blockedBy.get(0))) { return true; } }