@Override public ProwlAbility copy() { return new ProwlAbility(this); }
public ProwlAbility(Card card, String manaString) { super(Zone.STACK, null); setRuleAtTheTop(true); name = PROWL_KEYWORD; setReminderText(card); this.addProwlCost(manaString); addWatcher(new ProwlWatcher()); }
@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 ProwlAbility) { if (((ProwlAbility) ability).isActivated(source, game)) { return true; } } } } return false; }
this.resetProwl(); for (AlternativeCost2 prowlCost : prowlCosts) { if (prowlCost.canPay(ability, sourceId, controllerId, game) return isActivated(ability, game);
public KnowledgeExploitation(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.SORCERY}, "{5}{U}{U}"); this.subtype.add(SubType.ROGUE); // Prowl {3}{U} this.addAbility(new ProwlAbility(this, "{3}{U}")); // Search target opponent's library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles their library. this.getSpellAbility().addEffect(new KnowledgeExploitationEffect()); this.getSpellAbility().addTarget(new TargetOpponent()); }
public NogginWhack(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{2}{B}{B}"); this.subtype.add(SubType.ROGUE); // Prowl {1}{B} this.addAbility(new ProwlAbility(this, "{1}{B}")); // Target player reveals three cards from their hand. You choose two of them. That player discards those cards. this.getSpellAbility().addEffect(new NogginWhackEffect()); this.getSpellAbility().addTarget(new TargetPlayer()); }
public ThievesFortune(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.TRIBAL, CardType.INSTANT}, "{2}{U}"); this.subtype.add(SubType.ROGUE); // Prowl {U} this.addAbility(new ProwlAbility(this, "{U}")); // Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. this.getSpellAbility().addEffect(new LookLibraryAndPickControllerEffect(new StaticValue(4), false, new StaticValue(1), StaticFilters.FILTER_CARD, Zone.LIBRARY, false, false)); }
public AuntiesSnitch(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.ROGUE); this.power = new MageInt(3); this.toughness = new MageInt(1); // Auntie's Snitch can't block. this.addAbility(new CantBlockAbility()); // Prowl {1}{B} this.addAbility(new ProwlAbility(this, "{1}{B}")); // Whenever a Goblin or Rogue you control deals combat damage to a player, if Auntie's Snitch is in your graveyard, you may return Auntie's Snitch to your hand. this.addAbility(new AuntiesSnitchTriggeredAbility()); }
public StinkdrinkerBandit(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.ROGUE); this.power = new MageInt(2); this.toughness = new MageInt(1); // Prowl {1}, {B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.) this.addAbility(new ProwlAbility(this, "{1}{B}")); // Whenever a Rogue you control attacks and isn't blocked, it gets +2/+1 until end of turn. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect( new StinkdrinkerBanditTriggeredAbility(), Duration.WhileOnBattlefield, filter, "Whenever a Rogue you control attacks and isn't blocked, it gets +2/+1 until end of turn"))); }
public EarwigSquad(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.ROGUE); this.power = new MageInt(5); this.toughness = new MageInt(3); // Prowl {2}{B} this.addAbility(new ProwlAbility(this, "{2}{B}")); // When Earwig Squad enters the battlefield, if its prowl cost was paid, search target opponent's library for three cards and exile them. Then that player shuffles their library. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new EarwigSquadEffect(), false); ability.addTarget(new TargetOpponent()); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, ProwlCondition.instance, "When {this} enters the battlefield, if its prowl cost was paid, search target opponent's library for three cards and exile them. Then that player shuffles their library.")); }
public LatchkeyFaerie(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}"); this.subtype.add(SubType.FAERIE); this.subtype.add(SubType.ROGUE); this.power = new MageInt(3); this.toughness = new MageInt(1); // Flying this.addAbility(FlyingAbility.getInstance()); // Prowl {2}{U} this.addAbility(new ProwlAbility(this, "{2}{U}")); // When Latchkey Faerie enters the battlefield, if its prowl cost was paid, draw a card. EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false); this.addAbility(new ConditionalInterveningIfTriggeredAbility(ability, ProwlCondition.instance, "When {this} enters the battlefield, if its prowl cost was paid, draw a card.")); }
public NotoriousThrong(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{3}{U}"); this.subtype.add(SubType.ROGUE); // Prowl {5}{U} this.addAbility(new ProwlAbility(this, "{5}{U}")); // create X 1/1 black Faerie Rogue creature tokens with flying, where X is the damage dealt to your opponents this turn. this.getSpellAbility().addEffect(new NotoriousThrongEffect()); this.getSpellAbility().addWatcher(new AmountOfDamageAPlayerReceivedThisTurnWatcher()); // If Notorious Throng's prowl cost was paid, take an extra turn after this one. Effect effect = new ConditionalOneShotEffect(new AddExtraTurnControllerEffect(), ProwlCondition.instance); effect.setText("If {this}'s prowl cost was paid, take an extra turn after this one."); this.getSpellAbility().addEffect(effect); }
public MorselTheft(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.SORCERY},"{2}{B}{B}"); this.subtype.add(SubType.ROGUE); // Prowl {1}{B} this.addAbility(new ProwlAbility(this, "{1}{B}")); // Target player loses 3 life and you gain 3 life. If Morsel Theft's prowl cost was paid, draw a card. getSpellAbility().addEffect(new LoseLifeTargetEffect(3)); Effect effect = new GainLifeEffect(3); effect.setText("and you gain 3 life"); getSpellAbility().addEffect(effect); getSpellAbility().addTarget(new TargetPlayer()); getSpellAbility().addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), ProwlCondition.instance)); }