@Override public Abilities<Ability> getAbilities() { return card.getAbilities(); }
@Override public Abilities<Ability> getAbilities(Game game) { return card.getAbilities(game); }
@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; } }
public void addCard(Card card) { setZone(card.getId(), Zone.OUTSIDE); for (Ability ability : card.getAbilities()) { addAbility(ability, card); } }
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); } } }
@Override public int calculate(Game game, Ability source, Effect effect) { int count = 0; Card card = game.getCard(source.getSourceId()); if (card != null) { for (Ability ability : card.getAbilities()) { if (ability instanceof KickerAbility) { count += ((KickerAbility) ability).getXManaValue(); } } } return count; }
private boolean isAbilityStillExists(final Game game, final Ability ability, ContinuousEffect effect) { final Card card = game.getPermanentOrLKIBattlefield(ability.getSourceId()); if (!(effect instanceof BecomesFaceDownCreatureEffect)) { if (card != null) { if (!card.getAbilities(game).contains(ability)) { return false; } } } return true; }
@Override public void setOwnerId(UUID ownerId) { super.setOwnerId(ownerId); abilities.setControllerId(ownerId); leftHalfCard.getAbilities().setControllerId(ownerId); leftHalfCard.setOwnerId(ownerId); rightHalfCard.getAbilities().setControllerId(ownerId); rightHalfCard.setOwnerId(ownerId); }
@Override public int calculate(Game game, Ability source, Effect effect) { int count = 0; Card card = game.getCard(source.getSourceId()); if (card != null) { for (Ability ability: card.getAbilities()) { if (ability instanceof KickerAbility) { count += ((KickerAbility) ability).getXManaValue(); } } } return count; }
public static SpellAbility getSpellAbilityFromEvent(GameEvent event, Game game) { if (event.getType() != GameEvent.EventType.CAST_SPELL) { return null; } Card card = game.getCard(event.getSourceId()); if (card != null) { Optional<Ability> ability = card.getAbilities(game).get(event.getTargetId()); if (ability.isPresent() && ability.get() instanceof SpellAbility) { return (SpellAbility) ability.get(); } return card.getSpellAbility(); } return null; }
@Override public int calculate(Game game, Ability source, Effect effect) { int count = 0; Card card = game.getCard(source.getSourceId()); if (card != null) { for (Ability ability : card.getAbilities()) { if (ability instanceof KickerAbility) { count += ((KickerAbility) ability).getKickedCounter(game, source); } } } return count; }
@Override public boolean apply(Game game, Ability source) { Card card = game.getCard(source.getSourceId()); if (card != null) { for (Ability ability: card.getAbilities()) { if (ability instanceof KickerAbility) { return ((KickerAbility) ability).isKicked(game, source, kickerCostText); } } } return false; } }
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); } } } }
public Commander(Card card) { this.sourceObject = card; abilities.add(new CastCommanderAbility(card)); for (Ability ability : card.getAbilities()) { if (!(ability instanceof SpellAbility)) { Ability newAbility = ability.copy(); abilities.add(newAbility); } } }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); Card card = game.getCard(cardId); if (permanent != null && card != null) { for (ActivatedAbility ability : card.getAbilities().getActivatedAbilities(Zone.BATTLEFIELD)) { permanent.addAbility(ability, source.getSourceId(), game); } } return false; } }
private void initCommander(Card commander, Ability ability, Player player) { commander.moveToZone(Zone.COMMAND, null, this, true); commander.getAbilities().setControllerId(player.getId()); ability.addEffect(new CommanderReplacementEffect(commander.getId(), alsoHand, alsoLibrary)); ability.addEffect(new CommanderCostModification(commander.getId())); getState().setValue(commander.getId() + "_castCount", 0); CommanderInfoWatcher watcher = new CommanderInfoWatcher(commander.getId(), checkCommanderDamage); getState().addWatcher(watcher); watcher.addCardInfoToCommander(this); }