- Added the keyword "CARDNAME must be blocked if able.".

- Added Inescapable Brute.
This commit is contained in:
Sloth
2012-01-27 10:56:38 +00:00
parent 144f75b34c
commit 899a574755
4 changed files with 25 additions and 3 deletions

1
.gitattributes vendored
View File

@@ -4154,6 +4154,7 @@ res/cardsfolder/i/indrik_stomphowler.txt svneol=native#text/plain
res/cardsfolder/i/induce_despair.txt -text res/cardsfolder/i/induce_despair.txt -text
res/cardsfolder/i/induce_paranoia.txt -text svneol=unset#text/plain res/cardsfolder/i/induce_paranoia.txt -text svneol=unset#text/plain
res/cardsfolder/i/inertia_bubble.txt svneol=native#text/plain res/cardsfolder/i/inertia_bubble.txt svneol=native#text/plain
res/cardsfolder/i/inescapable_brute.txt -text
res/cardsfolder/i/inexorable_tide.txt svneol=native#text/plain res/cardsfolder/i/inexorable_tide.txt svneol=native#text/plain
res/cardsfolder/i/infantry_veteran.txt svneol=native#text/plain res/cardsfolder/i/infantry_veteran.txt svneol=native#text/plain
res/cardsfolder/i/infected_vermin.txt svneol=native#text/plain res/cardsfolder/i/infected_vermin.txt svneol=native#text/plain

View File

@@ -0,0 +1,12 @@
Name:Inescapable Brute
ManaCost:5 R
Types:Creature Giant Warrior
Text:no text
PT:3/3
K:Wither
K:CARDNAME must be blocked if able.
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/inescapable_brute.jpg
SetInfo:SHM|Common|http://magiccards.info/scans/en/shm/95.jpg
Oracle:Wither (This deals damage to creatures in the form of -1/-1 counters.)\nInescapable Brute must be blocked if able.
End

View File

@@ -452,8 +452,14 @@ public class CombatUtil {
return false; return false;
} }
CardList attackersWithLure = new CardList(combat.getAttackers()); CardList attackers = new CardList(combat.getAttackers());
attackersWithLure = attackersWithLure.getKeyword("All creatures able to block CARDNAME do so."); CardList attackersWithLure = new CardList();
for (Card attacker : attackers) {
if (attacker.hasStartOfKeyword("All creatures able to block CARDNAME do so.")
|| (attacker.hasStartOfKeyword("CARDNAME must be blocked if able.")
&& combat.getBlockers(attacker).isEmpty()))
attackersWithLure.add(attacker);
}
for (final Card attacker : attackersWithLure) { for (final Card attacker : attackersWithLure) {
if (CombatUtil.canBeBlocked(attacker, combat) && CombatUtil.canBlock(attacker, blocker)) { if (CombatUtil.canBeBlocked(attacker, combat) && CombatUtil.canBlock(attacker, blocker)) {
@@ -520,6 +526,7 @@ public class CombatUtil {
// if the attacker has no lure effect, but the blocker can block another // if the attacker has no lure effect, but the blocker can block another
// attacker with lure, the blocker can't block the former // attacker with lure, the blocker can't block the former
if (!attacker.hasKeyword("All creatures able to block CARDNAME do so.") if (!attacker.hasKeyword("All creatures able to block CARDNAME do so.")
&& !(attacker.hasKeyword("CARDNAME must be blocked if able.") && combat.getBlockers(attacker).isEmpty())
&& !blocker.getMustBlockCards().contains(attacker) && CombatUtil.mustBlockAnAttacker(blocker, combat)) { && !blocker.getMustBlockCards().contains(attacker) && CombatUtil.mustBlockAnAttacker(blocker, combat)) {
return false; return false;
} }

View File

@@ -892,7 +892,9 @@ public class ComputerUtilBlock {
for (final Card attacker : ComputerUtilBlock.getAttackers()) { for (final Card attacker : ComputerUtilBlock.getAttackers()) {
blockers = ComputerUtilBlock.getPossibleBlockers(attacker, chumpBlockers, combat); blockers = ComputerUtilBlock.getPossibleBlockers(attacker, chumpBlockers, combat);
for (final Card blocker : blockers) { for (final Card blocker : blockers) {
if (CombatUtil.canBlock(attacker, blocker, combat) && ComputerUtilBlock.getBlockersLeft().contains(blocker)) { if (CombatUtil.canBlock(attacker, blocker, combat) && ComputerUtilBlock.getBlockersLeft().contains(blocker)
&& (CombatUtil.mustBlockAnAttacker(blocker, combat)
|| blocker.hasKeyword("CARDNAME blocks each turn if able."))) {
combat.addBlocker(attacker, blocker); combat.addBlocker(attacker, blocker);
ComputerUtilBlock.getBlockersLeft().removeAll(blocker); ComputerUtilBlock.getBlockersLeft().removeAll(blocker);
} }