@Override public boolean apply(MageObject input, Game game) { Abilities<Ability> abilities; if (input instanceof Card){ abilities = ((Card)input).getAbilities(game); } else { abilities = input.getAbilities(); } return abilities.stream().anyMatch(ability -> ability.getClass().equals(abilityClass)); }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities().stream() .filter(a -> a instanceof BuybackAbility) .anyMatch(Ability::isActivated); } return false; } }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities().stream() .filter(ab -> ab instanceof EvokeAbility) .anyMatch(evoke -> ((EvokeAbility) evoke).isActivated(source, game)); } return false; } }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card != null) { return card.getAbilities().stream() .filter(a -> a instanceof DashAbility) .anyMatch(d -> ((DashAbility)d).isActivated(source, game)); } return false; } }
private void addReboundAbility(Card card, Ability source, Game game) { boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof ReboundAbility); if (!found) { Ability ability = new ReboundAbility(); game.getState().addOtherAbility(card, ability); } } }
private void addReboundAbility(Card card, Ability source, Game game) { if (filter.match(card, game)) { boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof ReboundAbility); if (!found) { Ability ability = new ReboundAbility(); game.getState().addOtherAbility(card, ability); } } } }
private void addReboundAbility(Card card, Ability source, Game game) { if (CastThroughTime.filter.match(card, game)) { boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof ReboundAbility); if (!found) { Ability ability = new ReboundAbility(); game.getState().addOtherAbility(card, ability); } } } }
break; case PARAM_ABILITIES_LIST: resInfo.add(card.getAbilities(game).stream() .map(Ability::getClass) .map(Class::getSimpleName)
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card != null) { boolean found = card.getAbilities().stream().anyMatch(ability -> ability instanceof SuspendAbility); if (!found) { found = game.getState().getAllOtherAbilities(source.getSourceId()).stream().anyMatch(ability -> ability instanceof SuspendAbility); } if (found) { if (game.getState().getZone(card.getId()) == Zone.EXILED && card.getCounters(game).getCount(CounterType.TIME) > 0) { return true; } } } return false; } }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getTargetId().equals(this.getSourceId())) { Permanent permanent = game.getPermanent(event.getSourceId()); if (permanent != null) { boolean hasFlankingAbility = permanent.getAbilities().stream().anyMatch(ability -> ability instanceof FlankingAbility); if (!hasFlankingAbility) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getSourceId())); } return true; } } } return false; }
SplitCard wholeCard = ((SplitCardHalf) spell.getCard()).getParentCard(); Abilities<Ability> aftermathHalfAbilities = wholeCard.getRightHalfCard().getAbilities(); if (aftermathHalfAbilities.stream().anyMatch(ability -> ability instanceof AftermathAbility)) { if (ty == SpellAbilityType.SPLIT_RIGHT) { artRect = ArtRect.AFTERMATH_BOTTOM;