public HauntAbility(Card card, Effect effect) { super(Zone.ALL, effect , false); creatureHaunt = card.isCreature(); addSubAbility(new HauntExileAbility(creatureHaunt)); }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { Card card = game.getCard(abilityToModify.getSourceId()); if (card != null && !card.isCreature()) { return true; } } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { Card card = game.getCard(abilityToModify.getSourceId()); if (card != null && !card.isCreature()) { return true; } } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Card card = game.getCard(event.getSourceId()); if (card != null && card.isCreature()) { return true; } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Card card = game.getCard(event.getSourceId()); if (card != null && !card.isCreature() && card.getConvertedManaCost() >= 4) { return true; } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Card card = game.getCard(event.getSourceId()); if (card != null && !card.isCreature() && card.getManaCost().getText().contains("X")) { return true; } return false; }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (abilityToModify.isControlledBy(source.getControllerId())) { Card spell = ((SpellAbility) abilityToModify).getCharacteristics(game); if (spell != null) { return spell.isCreature(); } } } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (event.getPlayerId().equals(source.getControllerId())) { Card card = game.getCard(event.getSourceId()); return card != null && !card.isCreature(); } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (event.getPlayerId().equals(source.getFirstTarget())) { Card card = game.getCard(event.getSourceId()); if (card != null && card.isCreature()) { return true; } } return false; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(this.getControllerId()).contains(event.getPlayerId())) { Card discarded = game.getCard(event.getTargetId()); if (discarded != null && discarded.isCreature()) { return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (((ZoneChangeEvent) event).getToZone() == Zone.GRAVEYARD) { Card card = game.getCard(event.getTargetId()); if (card != null && card.isCreature() && game.getOpponents(controllerId).contains(card.getOwnerId())) { return true; } } return false; }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).getToZone() == Zone.GRAVEYARD) { Card card = game.getCard(event.getTargetId()); if (card != null && card.isCreature()) { cards.add(event.getTargetId()); } } }
@Override public boolean checkTrigger(GameEvent event, Game game) { Card card = game.getCard(event.getTargetId()); if (isControlledBy(event.getPlayerId()) && card != null && card.isCreature()) { return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(this.getControllerId()).contains(event.getPlayerId())) { Card discarded = game.getCard(event.getTargetId()); if (discarded != null && !discarded.isLand() && !discarded.isCreature()) { return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Card card = game.getCard(event.getTargetId()); if (card != null && event.getPlayerId().equals(game.getControllerId(sourceId)) && card.isCreature() && game.getState().getZone(card.getId()) == Zone.GRAVEYARD && event.getData().equals("repair")) { return true; } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(getTargetPointer().getFirst(game, source)); if (player != null && player.getId().equals(event.getPlayerId())) { Card card = game.getCard(event.getSourceId()); if (card != null && !card.isCreature()) { return true; } } return false; } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && controller.hasOpponent(event.getPlayerId(), game)) { Card card = game.getCard(event.getSourceId()); if (card != null && !card.isCreature()) { return true; } } return false; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(controllerId).contains(event.getPlayerId())) { Card card = game.getCard(event.getSourceId()); if (card != null && card.isCreature()) { this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(controllerId).contains(event.getPlayerId())) { Card card = game.getCard(event.getSourceId()); if (card != null && card.isCreature()) { this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId())); return true; } } return false; }
public SupportAbility(Card card, int amount) { super(new SupportEffect(card, amount, true)); if (!card.isInstant() && !card.isSorcery()) { FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures"); if (card.isCreature()) { filter.add(AnotherPredicate.instance); filter.setMessage("other target creatures"); } addTarget(new TargetCreaturePermanent(0, amount, filter, false)); } }