diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index f4d0fd40e0f..a70fdd706d1 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -3066,12 +3066,8 @@ public class CardFactoryUtil { public static void checkEquipmentOnControllerChange(PlayerZone from, PlayerZone to, Card c) { - if (!c.isEquipped()) - ; - else if (!from.equals(to)) - { + if (c.isEquipped() && !from.equals(to)) c.unEquipAllCards(); - } } //may return null diff --git a/src/forge/CardFactory_Planeswalkers.java b/src/forge/CardFactory_Planeswalkers.java index 33f873454e8..83a66d37425 100644 --- a/src/forge/CardFactory_Planeswalkers.java +++ b/src/forge/CardFactory_Planeswalkers.java @@ -1942,6 +1942,11 @@ class CardFactory_Planeswalkers { return CardFactoryUtil.canTarget(card2, c); } }); + if (list.size() > 0) { + CardListUtil.sortCMC(list); + setTargetCard(list.get(0)); + } + return card2.getCounters(Counters.LOYALTY) < 8 && list.size() > 0; } @@ -1961,13 +1966,9 @@ class CardFactory_Planeswalkers { "Main2")) && AllZone.Stack.size() == 0; }//canPlay() - @Override - public void chooseTargetAI() { - Card c = getPermanent(); - - if(getPermanent() != null) setTargetCard(c); - }//chooseTargetAI() + + /* Card getPermanent() { PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Human); int highestCost = 0; @@ -1975,7 +1976,7 @@ class CardFactory_Planeswalkers { CardList perms = new CardList(play.getCards()); perms = perms.filter(new CardListFilter() { public boolean addCard(Card c) { - return CardFactoryUtil.canTarget(card2, c) /* && c.isTapped()*/; + return CardFactoryUtil.canTarget(card2, c); } }); @@ -1993,6 +1994,8 @@ class CardFactory_Planeswalkers { return null; } + */ + };//SpellAbility ability1 /* diff --git a/src/forge/ComputerAI_General.java b/src/forge/ComputerAI_General.java index cdbcaa1766b..00b0536d153 100644 --- a/src/forge/ComputerAI_General.java +++ b/src/forge/ComputerAI_General.java @@ -294,18 +294,25 @@ public class ComputerAI_General implements Computer { CardList attList = new CardList(); attList.addAll(AllZone.Combat.getAttackers()); - attList.addAll(AllZone.pwCombat.getAttackers()); - + CardList pwAttList = new CardList(); + pwAttList.addAll(AllZone.pwCombat.getAttackers()); + for(Card c:list) CombatUtil.checkDeclareBlockers(c); - for (Card a:attList){ CardList blockList = AllZone.Combat.getBlockers(a); for (Card b:blockList) CombatUtil.checkBlockedAttackers(a, b); } + + for (Card a:pwAttList){ + CardList blockList = AllZone.pwCombat.getBlockers(a); + for (Card b:blockList) + CombatUtil.checkBlockedAttackers(a, b); + } + AllZone.Phase.setNeedToNextPhase(true); } diff --git a/src/forge/GUI_Filter.java b/src/forge/GUI_Filter.java index 80ee69dfe90..47f0dd2cb75 100644 --- a/src/forge/GUI_Filter.java +++ b/src/forge/GUI_Filter.java @@ -39,6 +39,7 @@ public class GUI_Filter extends javax.swing.JDialog { private JTextField NameText; private JLabel jLabel5; private JTextField cardText; + private JTextField cardType; private JPanel jPanel1; private JCheckBox jCheckBoxColorless; private JCheckBox jCheckBoxWhite; diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 49bb89fcafb..97e2f881c19 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -14071,7 +14071,7 @@ public class GameActionUtil { for(int i = 0; i < creature.size(); i++) { c = creature.get(i); - if((c.getText().equals("") && c.getKeyword().size() == 0) + if(((c.getText().equals("") || c.getText().trim().equals("Token")) && c.getKeyword().size() == 0) || c.isFaceDown()) { c.addSemiPermanentAttackBoost(2); c.addSemiPermanentDefenseBoost(2); diff --git a/src/forge/GuiDisplay3.java b/src/forge/GuiDisplay3.java index fe0bba88087..566134dd3e7 100644 --- a/src/forge/GuiDisplay3.java +++ b/src/forge/GuiDisplay3.java @@ -365,6 +365,7 @@ public class GuiDisplay3 extends JFrame implements CardContainer, Display, NewCo CardPanel cardPanel = (CardPanel) o; CardList att = new CardList(AllZone.Combat.getAttackers()); + //CardList block = AllZone.Combat.getAllBlockers(); if((cardPanel.getCard().isTapped() || cardPanel.getCard().hasSickness() || ((cardPanel.getCard().getKeyword().contains("Vigilance")) && att.contains(cardPanel.getCard()))) && (inputControl.input instanceof Input_Attack)) { @@ -377,10 +378,20 @@ public class GuiDisplay3 extends JFrame implements CardContainer, Display, NewCo } //right click: if(e.isMetaDown()) { - if(att.contains(cardPanel.getCard())) { + if(att.contains(cardPanel.getCard()) && (inputControl.input instanceof Input_Attack)) { cardPanel.getCard().untap(); AllZone.Combat.removeFromCombat(cardPanel.getCard()); } + + /* + // won't work yet: + else if (block.contains(cardPanel.getCard()) && inputControl.input instanceof Input_Block) + { + Card crd = cardPanel.getCard(); + AllZone.Combat.removeFromCombat(crd); + } + */ + } else inputControl.selectCard(cardPanel.getCard(), AllZone.Human_Play); diff --git a/src/forge/Spell_Permanent.java b/src/forge/Spell_Permanent.java index d0bfe71fc36..e451ee42593 100644 --- a/src/forge/Spell_Permanent.java +++ b/src/forge/Spell_Permanent.java @@ -29,9 +29,27 @@ public class Spell_Permanent extends Spell { public boolean canPlayAI() { //check on legendary crap if(getSourceCard().getType().contains("Legendary")) { - CardList list = new CardList(AllZone.Computer_Play.getCards()); - return !list.containsName(getSourceCard().getName()); + CardList list = new CardList(AllZone.Computer_Play.getCards()); + if (list.containsName(getSourceCard().getName()) /*&& + !getSourceCard().getName().equals("Flagstones of Trokair")*/) + return false; } + if(getSourceCard().getType().contains("Planeswalker")) { + CardList list = new CardList(AllZone.Computer_Play.getCards()); + list = list.getType("Planeswalker"); + + Card c = getSourceCard(); + for (int i=0;i 0) { + return false; + } + } + } + return true; }//canPlayAI()