Improved the AI for Royal Assassin.

This commit is contained in:
jendave
2011-08-06 05:31:49 +00:00
parent 5d2570dcd8
commit 4a0722439f

View File

@@ -6514,34 +6514,41 @@ public class CardFactory_Creatures {
//ability.setAfterPayMana(target); //ability.setAfterPayMana(target);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Royal Assassin")) { else if (cardName.equals("Royal Assassin")) {
final Ability_Tap ability = new Ability_Tap(card) { final Ability_Tap ability = new Ability_Tap(card) {
private static final long serialVersionUID = 1974437552336643722L; private static final long serialVersionUID = 1974437552336643722L;
@Override @Override
public boolean canPlayAI() { public boolean canPlayAI() {
CardList human = CardFactoryUtil.AI_getHumanCreature(card, true); return getCreature().size() != 0;
human = human.filter(new CardListFilter() { }//canPlayAI()
CardList getCreature() {
CardList list = CardFactoryUtil.AI_getHumanCreature(card, true);
list = list.filter(new CardListFilter() {
public boolean addCard(Card c) { public boolean addCard(Card c) {
return c.isTapped(); return CardFactoryUtil.canTarget(card, c)
&& !c.getKeyword().contains("Indestructible")
&& c.isTapped();
} }
}); });
return list;
CardListUtil.sortAttack(human); }//getCreature()
CardListUtil.sortFlying(human);
@Override
if(0 < human.size()) setTargetCard(human.get(0)); public void chooseTargetAI() {
Card best = CardFactoryUtil.AI_getBestCreature(getCreature());
return 0 < human.size(); setTargetCard(best);
} }//chooseTargetAI()
@Override @Override
public void resolve() { public void resolve() {
Card c = getTargetCard(); Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && c.isTapped() && CardFactoryUtil.canTarget(card, c)) { if (AllZone.GameAction.isCardInPlay(c)
&& c.isTapped()
&& CardFactoryUtil.canTarget(card, c)) {
AllZone.GameAction.destroy(c); AllZone.GameAction.destroy(c);
} }
}//resolve() }//resolve()
@@ -6565,7 +6572,9 @@ public class CardFactory_Creatures {
public void selectCard(Card c, PlayerZone zone) { public void selectCard(Card c, PlayerZone zone) {
if(!CardFactoryUtil.canTarget(card, c)) { if(!CardFactoryUtil.canTarget(card, c)) {
AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?)."); AllZone.Display.showMessage("Cannot target this card (Shroud? Protection?).");
} else if(c.isCreature() && zone.is(Constant.Zone.Play) && c.isTapped()) { } else if (c.isCreature()
&& zone.is(Constant.Zone.Play)
&& c.isTapped()) {
//tap ability //tap ability
card.tap(); card.tap();
@@ -6581,7 +6590,6 @@ public class CardFactory_Creatures {
ability.setBeforePayMana(target); ability.setBeforePayMana(target);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Giltspire Avenger")) { else if(cardName.equals("Giltspire Avenger")) {
final Ability_Tap ability = new Ability_Tap(card) { final Ability_Tap ability = new Ability_Tap(card) {