diff --git a/res/cardsfolder/b/bazaar_of_wonders.txt b/res/cardsfolder/b/bazaar_of_wonders.txt index 080386a3a6d..71452ec6c8d 100644 --- a/res/cardsfolder/b/bazaar_of_wonders.txt +++ b/res/cardsfolder/b/bazaar_of_wonders.txt @@ -1,9 +1,13 @@ Name:Bazaar of Wonders ManaCost:3 U U Types:World Enchantment -Text:Whenever a player casts a spell, counter it if a card with the same name is in a graveyard or a nontoken permanent with the same name is on the battlefield. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ ExileAll | TriggerDescription$ When CARDNAME enters the battlefield, exile all cards from all graveyards. SVar:ExileAll:AB$ ChangeZoneAll | Cost$ 0 | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card +T:Mode$ SpellCast | ValidCard$ Card | Execute$ TrigCounterSameGrave | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player casts a spell, counter it if a card with the same name is in a graveyard or a nontoken permanent with the same name is on the battlefield. +SVar:TrigCounterSameGrave:DB$ Counter | Defined$ TriggeredSpellAbility | SubAbility$ DBCounterSamePermanent | ConditionCheckSVar$ SharesNameGrave | ConditionSVarCompare$ GE1 +SVar:DBCounterSamePermanent:DB$ Counter | Defined$ TriggeredSpellAbility | ConditionCheckSVar$ SharesNameBattlefield | ConditionSVarCompare$ GE1 +SVar:SharesNameGrave:TriggeredCard$Valid Card.sharesNameWith Graveyard +SVar:SharesNameBattlefield:TriggeredCard$Valid Card.sharesNameWith NonToken SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bazaar_of_wonders.jpg Oracle:When Bazaar of Wonders enters the battlefield, exile all cards from all graveyards.\nWhenever a player casts a spell, counter it if a card with the same name is in a graveyard or a nontoken permanent with the same name is on the battlefield. diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index d9ec6805277..175d41f3338 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -6693,6 +6693,13 @@ public class Card extends GameEntity implements Comparable { } } return false; + } else if (restriction.equals(ZoneType.Graveyard.toString())) { + for (final Card card : Singletons.getModel().getGame().getCardsIn(ZoneType.Graveyard)) { + if (this.getName().equals(card.getName())) { + return true; + } + } + return false; } else if (restriction.equals(ZoneType.Battlefield.toString())) { for (final Card card : Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield)) { if (this.getName().equals(card.getName())) { diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 03f1aadc16e..a44c0dfb466 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -2119,7 +2119,7 @@ public class CardFactoryUtil { final String[] splitString = string.split("/", 2); String valid = splitString[0].substring(6); final List list = CardLists.getValidCards(paidList, valid, source.getController(), source); - return CardFactoryUtil.doXMath(list.size(), splitString[1], source); + return CardFactoryUtil.doXMath(list.size(), splitString.length > 1 ? splitString[1] : null, source); } int tot = 0; diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index 99210182aae..1bcfe9d1a44 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -516,43 +516,6 @@ public class MagicStack extends MyObservable { } } - /* - * Whenever a player casts a spell, counter it if a card with the same - * name is in a graveyard or a nontoken permanent with the same name is - * on the battlefield. - */ - if (sp.isSpell() && game.isCardInPlay("Bazaar of Wonders")) { - boolean found = false; - List all = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.NON_TOKEN); - final List graves = game.getCardsIn(ZoneType.Graveyard); - all.addAll(graves); - - for (final Card c : all) { - if (sp.getSourceCard().getName().equals(c.getName())) { - found = true; - } - } - - if (found) { - final List bazaars = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), CardPredicates.nameEquals("Bazaar of Wonders")); // should - // only - // be - // 1... - for (final Card bazaar : bazaars) { - final SpellAbility counter = new Ability(bazaar, ManaCost.ZERO) { - @Override - public void resolve() { - if (game.getStack().size() > 0) { - game.getStack().pop(); - } - } // resolve() - }; // SpellAbility - counter.setStackDescription(bazaar.getName() + " - counter " + sp.getSourceCard().getName() + "."); - this.add(counter); - } - } - } - if (this.getSimultaneousStackEntryList().size() > 0) { game.getPhaseHandler().passPriority(); } diff --git a/src/main/java/forge/gui/match/views/VStack.java b/src/main/java/forge/gui/match/views/VStack.java index 5ffad5ae1d8..c5b6ad4ce2a 100644 --- a/src/main/java/forge/gui/match/views/VStack.java +++ b/src/main/java/forge/gui/match/views/VStack.java @@ -186,7 +186,7 @@ public enum VStack implements IVDoc { parentCell.getBody().add(tar, "w 98%!"); stackTARs.add(tar); - if (stack.peekInstance(i).isOptionalTrigger()) { + if (spell != null && spell.isOptionalTrigger()) { tar.addMouseListener(new MouseAdapter() { @Override public void mousePressed(final MouseEvent e) {