static { filter.add( Predicates.or( new CardTypePredicate(CardType.INSTANT), new CardTypePredicate(CardType.SORCERY))); filterPermanent.add(Predicates.not(new TokenPredicate())); filterPermanent.add(new AnotherPredicate()); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { // Find the two permanents to meld. UUID sourceId = source.getSourceId(); FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature named " + meldWithName); filter.add(new NamePredicate(meldWithName)); TargetPermanent target = new TargetControlledCreaturePermanent(filter); Set<UUID> meldWithList = target.possibleTargets(sourceId, source.getControllerId(), game); if (meldWithList.isEmpty()) { return false; // possible permanent has left the battlefield meanwhile } UUID meldWithId; if (meldWithList.size() == 1) { meldWithId = meldWithList.iterator().next(); } else { controller.choose(Outcome.BoostCreature, target, sourceId, game); meldWithId = target.getFirstTarget(); } // Exile the two permanents to meld. Permanent sourcePermanent = game.getPermanent(sourceId); Permanent meldWithPermanent = game.getPermanent(meldWithId); if (sourcePermanent != null && meldWithPermanent != null) { sourcePermanent.moveToExile(null, "", sourceId, game); meldWithPermanent.moveToExile(null, "", sourceId, game); // Create the meld card and move it to the battlefield. Card sourceCard = game.getExile().getCard(sourceId, game); Card meldWithCard = game.getExile().getCard(meldWithId, game); if (!sourceCard.isCopy() && !meldWithCard.isCopy()) { meldCard.setOwnerId(controller.getId()); meldCard.setTopHalfCard(meldWithCard, game); meldCard.setBottomHalfCard(sourceCard, game); meldCard.setMelded(true); game.addMeldCard(meldCard.getId(), meldCard); game.getState().addCard(meldCard); meldCard.setZone(Zone.EXILED, game); meldCard.moveToZone(Zone.BATTLEFIELD, sourceId, game, false); } return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { Choice typeChoice = new ChoiceImpl(true); typeChoice.setMessage("Choose a creature type:"); typeChoice.setChoices(CardRepository.instance.getCreatureTypes()); while (!player.choose(Outcome.BoostCreature, typeChoice, game)) { if (!player.canRespond()) { return false; } } FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent(); filter.add(new SubtypePredicate(typeChoice.getChoice())); return new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filter)) .apply(game, source); } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Permanent sourcePermanent = game.getPermanent(event.getSourceId()); if (sourcePermanent != null && filter.match(sourcePermanent, sourceId, controllerId, game)) { if (setTargetPointer) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getSourceId())); } } return true; } return false; }
static { filter.add(new PowerPredicate(Filter.ComparisonType.LessThan, 3)); filter2.add(new AnotherPredicate()); }
static { filter.add(new ColorPredicate(ObjectColor.GREEN)); }
static { filter1.add(new SubtypePredicate("Vampire")); filter2.add(new SubtypePredicate("Vampire")); filter2.add(Predicates.not(new TappedPredicate())); }
static { filter.add(new AnotherPredicate()); }
static { filter.add(new SupertypePredicate("Legendary")); }
static { filter.add(new SubtypePredicate("Ally")); }
static { filter.add(new ColorPredicate(ObjectColor.RED)); }
static { filter.add(new ColorPredicate(ObjectColor.WHITE)); filter.add(new AnotherPredicate()); }
static { FILTER1.add(new SubtypePredicate("Ally")); }
static { filter.add(Predicates.not(new SubtypePredicate("Ogre"))); }
static { filter.add(new ColorPredicate(ObjectColor.BLACK)); }
static { filterCreatures.add(new ColorPredicate(ObjectColor.BLACK)); filterCreature.add(new AnotherPredicate()); filterCreature.add(new ColorPredicate(ObjectColor.BLACK)); }
static { filterGreen.add(new AnotherPredicate()); filterGreen.add(new ColorPredicate(ObjectColor.GREEN)); filterRed.add(new AnotherPredicate()); filterRed.add(new ColorPredicate(ObjectColor.RED)); }
static { filterPermanent.add(new AnotherPredicate()); filterCard.add(Predicates.not(new SupertypePredicate("Legendary"))); }
static { filter.add(new AbilityPredicate(DefenderAbility.class)); }
@Override public String getMessage() { return filter.getMessage(); }
static { filter.add(new MulticoloredPredicate()); }
static { filter.add(new SubtypePredicate("Spirit")); }
static { filter.add(new SubtypePredicate("Elf")); }
static { filterCreature.add((new SubtypePredicate("Ninja"))); }
@Override public String getRule() { return "Whenever a " + filter.getMessage() + " attacks, " + super.getRule(); }
static { filter.add(Predicates.not(new TappedPredicate())); }
static { filter.add(new SubtypePredicate("Knight")); }