@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent == null) { return false; } if (!permanent.getImprinted().isEmpty()) { Card card = game.getCard(permanent.getImprinted().get(0)); if (card != null) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); return true; } } return false; }
@Override public boolean apply(Game game, Ability source) { int value = source.getManaCostsToPay().getX(); // should this be random across card names, or card printings? CardCriteria criteria = new CardCriteria().types(CardType.CREATURE).convertedManaCost(value); List<CardInfo> options = CardRepository.instance.findCards(criteria); if (options == null || options.isEmpty()) { game.informPlayers("No random creature card with converted mana cost of " + value + " was found."); return false; } EmptyToken token = new EmptyToken(); // search for a non custom set creature while (!options.isEmpty()) { int index = RandomUtil.nextInt(options.size()); ExpansionSet expansionSet = Sets.findSet(options.get(index).getSetCode()); if (expansionSet == null || expansionSet.getSetType() == SetType.CUSTOM_SET) { options.remove(index); } else { Card card = options.get(index).getCard(); if (card != null) { CardUtil.copyTo(token).from(card); break; } else { options.remove(index); } } } token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), false, false); return true; } }
if (enchantedArtifact != null) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(enchantedArtifact); token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId());
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); if (permanent == null) { permanent = (Permanent) game.getLastKnownInformation(source.getFirstTarget(), Zone.BATTLEFIELD); } if (permanent != null) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(permanent); token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); return true; } return false; }
for (int i = 0; i < count; i++) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(origNactalWarPride); token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId(), true, true);
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Set<Card> cardsToExile = new HashSet<>(this.getTargetPointer().getTargets(game, source).size()); for (UUID targetId : this.getTargetPointer().getTargets(game, source)) { Card card = controller.getGraveyard().get(targetId, game); if (card != null) { cardsToExile.add(card); } } controller.moveCardsToExile(cardsToExile, source, game, true, null, ""); for (Card card : cardsToExile) { if (game.getState().getZone(card.getId()) == Zone.EXILED) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); token.removePTCDA(); token.getPower().modifyBaseValue(4); token.getToughness().modifyBaseValue(4); token.getColor(game).setColor(ObjectColor.BLACK); token.getSubtype(game).clear(); token.getSubtype(game).add(SubType.ZOMBIE); token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); } } return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card == null) { return false; } Player controller = game.getPlayer(card.getOwnerId()); if (controller == null) { return false; } EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); // needed so that entersBattlefied triggered abilities see the attributes (e.g. Master Biomancer) token.getColor(game).setColor(ObjectColor.WHITE); if (!token.hasSubtype(SubType.ZOMBIE, game)) { token.getSubtype(game).add(0, SubType.ZOMBIE); } token.getManaCost().clear(); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.EMBALMED_CREATURE, token.getId(), source.getSourceId(), controller.getId())); token.putOntoBattlefield(1, game, source.getSourceId(), controller.getId(), false, false, null); // Probably it makes sense to remove also the Embalm ability (it's not shown on the token cards). // Also it can never get active or? But it's not mentioned in the reminder text. return true; } }
CardUtil.copyTo(token).from(copyFrom); // needed so that entersBattlefied triggered abilities see the attributes (e.g. Master Biomancer) applier.apply(game, token, source, targetId); if (becomesArtifact) {
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card == null) { return false; } Player controller = game.getPlayer(card.getOwnerId()); if (controller == null) { return false; } EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(card); // needed so that entersBattlefied triggered abilities see the attributes (e.g. Master Biomancer) token.getColor(game).setColor(ObjectColor.BLACK); if (!token.hasSubtype(SubType.ZOMBIE, game)) { token.getSubtype(game).add(0, SubType.ZOMBIE); } token.getManaCost().clear(); token.removePTCDA(); token.getPower().modifyBaseValue(4); token.getToughness().modifyBaseValue(4); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ETERNALIZED_CREATURE, token.getId(), source.getSourceId(), controller.getId())); token.putOntoBattlefield(1, game, source.getSourceId(), controller.getId(), false, false, null); // Probably it makes sense to remove also the Eternalize ability (it's not shown on the token cards). // Also it can never get active or? But it's not mentioned in the reminder text. return true; } }
&& cardChosen.moveToExile(exileId, sourceObject.getIdName(), source.getSourceId(), game)) { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(cardChosen); token.removePTCDA(); token.getPower().modifyBaseValue(4);