Esempio n. 1
0
  public RallyTheForces(UUID ownerId) {
    super(
        ownerId,
        73,
        "Rally the Forces",
        Rarity.COMMON,
        new CardType[] {CardType.INSTANT},
        "{2}{R}");
    this.expansionSetCode = "MBS";

    // Attacking creatures get +1/+0 and gain first strike until end of turn.
    Effect effect =
        new BoostAllEffect(
            1, 0, Duration.EndOfTurn, new FilterAttackingCreature("Attacking creatures"), false);
    effect.setText("Attacking creatures get +1/+0");
    this.getSpellAbility().addEffect(effect);
    effect =
        new GainAbilityAllEffect(
            FirstStrikeAbility.getInstance(),
            Duration.EndOfTurn,
            new FilterAttackingCreature("Attacking creatures"),
            false);
    effect.setText("and gain first strike until end of turn");
    this.getSpellAbility().addEffect(effect);
  }
Esempio n. 2
0
  public HuntersProwess(UUID ownerId) {
    super(
        ownerId, 124, "Hunter's Prowess", Rarity.RARE, new CardType[] {CardType.SORCERY}, "{4}{G}");
    this.expansionSetCode = "BNG";

    this.color.setGreen(true);

    // Until end of turn, target creature gets +3/+3 and gains trample and "Whenever this creature
    // deals combat damage to a player, draw that many cards."
    Effect effect = new BoostTargetEffect(3, 3, Duration.EndOfTurn);
    effect.setText("Until end of turn, target creature gets +3/+3");
    this.getSpellAbility().addEffect(effect);
    effect = new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn);
    effect.setText("and gains trample");
    this.getSpellAbility().addEffect(effect);
    Ability grantedAbility =
        new DealsCombatDamageToAPlayerTriggeredAbility(new HuntersProwessDrawEffect(), false, true);
    this.getSpellAbility()
        .addEffect(
            new GainAbilityTargetEffect(
                grantedAbility,
                Duration.EndOfTurn,
                "and \"Whenever this creature deals combat damage to a player, draw that many cards.\""));
    this.getSpellAbility().addTarget(new TargetCreaturePermanent(true));
  }
Esempio n. 3
0
  public DemonOfDarkSchemes(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{3}{B}{B}{B}");
    this.subtype.add("Demon");
    this.power = new MageInt(5);
    this.toughness = new MageInt(5);

    // Flying
    this.addAbility(FlyingAbility.getInstance());

    // When Demon of Dark Schemes enters the battlefield, all other creatures get -2/-2 until end of
    // turn.
    Effect effect = new BoostAllEffect(-2, -2, Duration.EndOfTurn, true);
    effect.setText("all other creatures get -2/-2 until end of turn");
    this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false));

    // Whenever another creature dies, you get {E}.
    this.addAbility(
        new DiesCreatureTriggeredAbility(new GetEnergyCountersControllerEffect(1), false, true));

    // {2}{B}, Pay {E}{E}{E}{E}: Put target creature card from a graveyard onto the battlefield
    // under your control tapped.
    effect = new ReturnFromGraveyardToBattlefieldTargetEffect(true);
    effect.setText(
        "Put target creature card from a graveyard onto the battlefield under your control tapped");
    Ability ability =
        new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{2}{B}"));
    ability.addCost(new PayEnergyCost(4));
    ability.addTarget(
        new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard")));
    this.addAbility(ability);
  }
Esempio n. 4
0
  public Spirespine(UUID ownerId) {
    super(
        ownerId,
        142,
        "Spirespine",
        Rarity.UNCOMMON,
        new CardType[] {CardType.ENCHANTMENT, CardType.CREATURE},
        "{2}{G}");
    this.expansionSetCode = "JOU";
    this.subtype.add("Beast");

    this.power = new MageInt(4);
    this.toughness = new MageInt(1);

    // Bestow 4G (If you cast this card for its bestow cost, it's an Aura spell with enchant
    // creature. It becomes a creature again if it's not attached to a creature.)
    this.addAbility(new BestowAbility(this, "{4}{G}"));
    // Spirespine blocks each turn if able.
    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD, new BlocksIfAbleSourceEffect(Duration.WhileOnBattlefield)));
    // Enchanted creature gets +4/+1 and blocks each turn if able.
    Effect effect = new BoostEnchantedEffect(4, 1, Duration.WhileOnBattlefield);
    effect.setText("Enchanted creature gets +4/+1");
    Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
    effect = new BlocksIfAbleAttachedEffect(Duration.WhileOnBattlefield, AttachmentType.AURA);
    effect.setText("and blocks each turn if able");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 5
0
  public SpitefulMotives(UUID ownerId) {
    super(
        ownerId,
        183,
        "Spiteful Motives",
        Rarity.UNCOMMON,
        new CardType[] {CardType.ENCHANTMENT},
        "{3}{R}");
    this.expansionSetCode = "SOI";
    this.subtype.add("Aura");

    // Flash
    this.addAbility(FlashAbility.getInstance());
    // Enchant creature
    TargetPermanent auraTarget = new TargetCreaturePermanent();
    this.getSpellAbility().addTarget(auraTarget);
    this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
    Ability ability = new EnchantAbility(auraTarget.getTargetName());
    this.addAbility(ability);
    // Enchanted creature gets +3/+0 and has first strike.
    Effect effect = new BoostEnchantedEffect(3, 0, Duration.WhileOnBattlefield);
    effect.setText("Enchanted creature gets +3/+0");
    ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
    effect = new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA);
    effect.setText("and has first strike");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 6
0
  public AvatarOfSlaughter(UUID ownerId) {
    super(
        ownerId,
        111,
        "Avatar of Slaughter",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{6}{R}{R}");
    this.expansionSetCode = "CMD";
    this.subtype.add("Avatar");
    this.power = new MageInt(8);
    this.toughness = new MageInt(8);

    // All creatures have double strike and attack each turn if able.
    Effect effect =
        new GainAbilityAllEffect(
            DoubleStrikeAbility.getInstance(),
            Duration.WhileOnBattlefield,
            new FilterCreaturePermanent("creatures"));
    effect.setText("All creatures have double strike");
    Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
    effect = new AttacksIfAbleAllEffect(new FilterCreaturePermanent("creatures"));
    effect.setText("and attack each turn if able");
    ability.addEffect(effect);
    this.addAbility(ability, new AttackedThisTurnWatcher());
  }
Esempio n. 7
0
  public InfernalScarring(UUID ownerId) {
    super(
        ownerId,
        102,
        "Infernal Scarring",
        Rarity.COMMON,
        new CardType[] {CardType.ENCHANTMENT},
        "{1}{B}");
    this.expansionSetCode = "ORI";
    this.subtype.add("Aura");

    // Enchant creature
    TargetPermanent auraTarget = new TargetCreaturePermanent();
    this.getSpellAbility().addTarget(auraTarget);
    this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
    Ability ability = new EnchantAbility(auraTarget.getTargetName());
    this.addAbility(ability);

    // Enchanted creature gets +2/+0 and has "When this creature dies, draw a card."
    Effect effect = new BoostEnchantedEffect(2, 0, Duration.WhileOnBattlefield);
    effect.setText("Enchanted creature gets +2/+0");
    ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
    effect =
        new GainAbilityAttachedEffect(
            new DiesTriggeredAbility(new DrawCardSourceControllerEffect(1)),
            AttachmentType.AURA,
            Duration.WhileOnBattlefield);
    effect.setText("and has \"When this creature dies, draw a card.\"");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 8
0
  public PollutedBonds(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.ENCHANTMENT}, "{3}{B}{B}");

    // Whenever a land enters the battlefield under an opponent's control, that player loses 2 life
    // and you gain 2 life.
    Effect effect = new LoseLifeTargetEffect(2);
    effect.setText("that player loses 2 life");
    Ability ability =
        new EntersBattlefieldAllTriggeredAbility(
            Zone.BATTLEFIELD, effect, filter, false, SetTargetPointer.PLAYER, "");
    effect = new GainLifeEffect(2);
    effect.setText("and you gain 2 life");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 9
0
  public AkiriLineSlinger(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{R}{W}");

    this.supertype.add("Legendary");
    this.subtype.add("Kor");
    this.subtype.add("Soldier");
    this.subtype.add("Ally");
    this.power = new MageInt(0);
    this.toughness = new MageInt(3);

    // First strike
    this.addAbility(FirstStrikeAbility.getInstance());

    // Vigilance
    this.addAbility(VigilanceAbility.getInstance());

    // Akiri, Line-Slinger gets +1/+0 for each artifact you control.
    Effect effect =
        new BoostSourceEffect(
            new PermanentsOnBattlefieldCount(filter),
            new StaticValue(0),
            Duration.WhileOnBattlefield);
    effect.setText("{this} gets +1/+0 for each artifact you control");
    this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));

    // Partner
    this.addAbility(PartnerAbility.getInstance());
  }
Esempio n. 10
0
  public ChildhoodHorror(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{3}{B}");
    this.subtype.add("Horror");

    this.power = new MageInt(2);
    this.toughness = new MageInt(2);

    // Flying
    this.addAbility(FlyingAbility.getInstance());
    // Threshold - As long as seven or more cards are in your graveyard, Childhood Horror gets +2/+2
    // and can't block.
    Ability thresholdAbility =
        new SimpleStaticAbility(
            Zone.BATTLEFIELD,
            new ConditionalContinuousEffect(
                new BoostSourceEffect(2, 2, Duration.WhileOnBattlefield),
                new CardsInControllerGraveCondition(7),
                "If seven or more cards are in your graveyard, Childhood Horror gets +2/+2"));

    Effect effect =
        new ConditionalRestrictionEffect(
            new CantBlockSourceEffect(Duration.WhileOnBattlefield),
            new CardsInControllerGraveCondition(7));
    effect.setText("and can't block");
    thresholdAbility.addEffect(effect);
    thresholdAbility.setAbilityWord(AbilityWord.THRESHOLD);
    this.addAbility(thresholdAbility);
  }
Esempio n. 11
0
  public MythRealized(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.ENCHANTMENT}, "{W}");

    // Whenever you cast a noncreature spell, put a lore counter on Myth Realized.
    this.addAbility(
        new SpellCastControllerTriggeredAbility(
            new AddCountersSourceEffect(CounterType.LORE.createInstance()),
            filterNonCreature,
            false));

    // 2W: Put a lore counter on Myth Realized.
    this.addAbility(
        new SimpleActivatedAbility(
            Zone.BATTLEFIELD,
            new AddCountersSourceEffect(CounterType.LORE.createInstance()),
            new ManaCostsImpl("{2}{W}")));

    // W: Until end of turn, Myth Realized becomes a Monk Avatar creature in addition to its other
    // types and gains "This creature's power and toughness are each equal to the number of lore
    // counters on it."
    Effect effect =
        new BecomesCreatureSourceEffect(new MythRealizedToken(), null, Duration.EndOfTurn);
    effect.setText(
        "Until end of turn, {this} becomes a Monk Avatar creature in addition to its other types");
    Ability ability =
        new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{W}"));
    ability.addEffect(new MythRealizedSetPTEffect(Duration.EndOfTurn));
    this.addAbility(ability);
  }
Esempio n. 12
0
  public SakashimasStudent(UUID ownerId) {
    super(
        ownerId,
        24,
        "Sakashima's Student",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{2}{U}{U}");
    this.expansionSetCode = "PC2";
    this.subtype.add("Human");
    this.subtype.add("Ninja");

    this.power = new MageInt(0);
    this.toughness = new MageInt(0);

    // Ninjutsu {1}{U}
    this.addAbility(new NinjutsuAbility(new ManaCostsImpl("{1}{U}")));

    // You may have Sakashima's Student enter the battlefield as a copy of any creature on the
    // battlefield, except it's still a Ninja in addition to its other creature types.
    Effect effect =
        new CopyPermanentEffect(new FilterCreaturePermanent(), new AddSubtypeApplier("Ninja"));
    effect.setText(
        "as a copy of any creature on the battlefield, except it's a Ninja in addition to its other creature types");
    this.addAbility(new EntersBattlefieldAbility(effect, true));
  }
Esempio n. 13
0
  public DauntlessEscort(UUID ownerId) {
    super(
        ownerId,
        67,
        "Dauntless Escort",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{1}{G}{W}");
    this.expansionSetCode = "ARB";
    this.subtype.add("Rhino");
    this.subtype.add("Soldier");

    this.color.setGreen(true);
    this.color.setWhite(true);
    this.power = new MageInt(3);
    this.toughness = new MageInt(3);

    // Sacrifice Dauntless Escort: Creatures you control are indestructible this turn.
    FilterPermanent filter = new FilterControlledCreaturePermanent("Creatures you control");
    Effect effect =
        new GainAbilityAllEffect(
            IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, false);
    effect.setText("Creatures you control are indestructible this turn");
    this.addAbility(
        new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new SacrificeSourceCost()));
  }
Esempio n. 14
0
  public WildBeastmaster(UUID ownerId) {
    super(
        ownerId,
        139,
        "Wild Beastmaster",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{2}{G}");
    this.expansionSetCode = "RTR";
    this.subtype.add("Human");
    this.subtype.add("Shaman");
    this.color.setGreen(true);
    this.power = new MageInt(1);
    this.toughness = new MageInt(1);

    // Whenever Wild Beastmaster attacks, each other creature you control gets +X/+X until end of
    // turn, where X is Wild Beastmaster's power.
    SourcePermanentPowerCount creaturePower = new SourcePermanentPowerCount();
    Effect effect =
        new BoostControlledEffect(
            creaturePower,
            creaturePower,
            Duration.EndOfTurn,
            new FilterCreaturePermanent(),
            true,
            true);
    effect.setText(EFFECT_TEXT);
    this.addAbility(new AttacksTriggeredAbility(effect, false));
  }
Esempio n. 15
0
  public KalemneDiscipleOfIroas(UUID ownerId) {
    super(
        ownerId,
        999,
        "Kalemne, Disciple of Iroas",
        Rarity.MYTHIC,
        new CardType[] {CardType.CREATURE},
        "{2}{R}{W}");
    this.expansionSetCode = "C15";
    this.supertype.add("Legendary");
    this.subtype.add("Giant");
    this.subtype.add("Soldier");
    this.power = new MageInt(3);
    this.toughness = new MageInt(3);

    // Double strike
    this.addAbility(DoubleStrikeAbility.getInstance());

    // Vigilance
    this.addAbility(VigilanceAbility.getInstance());

    // Whenever you cast a creature spell with converted mana cost 5 or greater, you get an
    // experience counter.
    Effect effect =
        new AddCountersControllerEffect(CounterType.EXPERIENCE.createInstance(1), false);
    effect.setText("you get an experience counter");
    Ability ability = new SpellCastControllerTriggeredAbility(effect, filterSpell, false);
    this.addAbility(ability);

    // Kalemne, Disciple of Iroas gets +1/+1 for each experience counter you have.
    DynamicValue value = new SourceControllerExperienceCountersCount();
    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD, new BoostSourceEffect(value, value, Duration.WhileOnBattlefield)));
  }
Esempio n. 16
0
  public AjanisPresence(UUID ownerId) {
    super(ownerId, 2, "Ajani's Presence", Rarity.COMMON, new CardType[] {CardType.INSTANT}, "{W}");
    this.expansionSetCode = "JOU";

    // Strive - Ajani's Presence costs {2}{W} more to cast for each target beyond the first.
    this.addAbility(new StriveAbility("{2}{W}"));

    // Any number of target creatures each get +1/+1 and gain indestructible until end of turn.
    Effect effect = new BoostTargetEffect(1, 1, Duration.EndOfTurn);
    effect.setText("Any number of target creatures each get +1/+1");
    this.getSpellAbility().addEffect(effect);
    effect = new GainAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn);
    effect.setText("and gain indestructible until end of turn");
    this.getSpellAbility().addEffect(effect);
    this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE));
  }
Esempio n. 17
0
  public GorillaWarCry(UUID ownerId) {
    super(
        ownerId,
        124,
        "Gorilla War Cry",
        Rarity.COMMON,
        new CardType[] {CardType.INSTANT},
        "{1}{R}");
    this.expansionSetCode = "ME4";

    // Cast Gorilla War Cry only during combat before blockers are declared.
    Ability ability = new SimpleStaticAbility(Zone.ALL, new GorillaWarCryRuleModifyingEffect());
    ability.setRuleAtTheTop(true);
    this.addAbility(ability);

    // All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more
    // creatures.)</i>
    Effect effect =
        new GainAbilityAllEffect(
            new MenaceAbility(), Duration.EndOfTurn, new FilterCreaturePermanent());
    effect.setText(
        "All creatures gain menace until end of turn. <i>(They can't be blocked except by two or more creatures.)</i>");
    this.getSpellAbility().addEffect(effect);

    // Draw a card at the beginning of the next turn's upkeep.
    this.getSpellAbility()
        .addEffect(
            new CreateDelayedTriggeredAbilityEffect(
                new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(
                    new DrawCardSourceControllerEffect(1)),
                false));
  }
Esempio n. 18
0
  public CavernLampad(UUID ownerId) {
    super(
        ownerId,
        81,
        "Cavern Lampad",
        Rarity.COMMON,
        new CardType[] {CardType.ENCHANTMENT, CardType.CREATURE},
        "{3}{B}");
    this.expansionSetCode = "THS";
    this.subtype.add("Nymph");

    this.color.setBlack(true);
    this.power = new MageInt(2);
    this.toughness = new MageInt(2);

    // Bestow {5}{B} (If you cast this card for its bestow cost, it's an Aura spell with enchant
    // creature. It becomes a creature again if it's not attached to a creature.)
    this.addAbility(new BestowAbility(this, "{5}{B}"));
    // Intimidate
    this.addAbility(IntimidateAbility.getInstance());
    // Enchanted creature gets +2/+2 and has intimidate.
    Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2));
    Effect effect =
        new GainAbilityAttachedEffect(IntimidateAbility.getInstance(), AttachmentType.AURA);
    effect.setText("and has intimidate");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 19
0
  public GnarledScarhide(UUID ownerId) {
    super(
        ownerId,
        72,
        "Gnarled Scarhide",
        Rarity.UNCOMMON,
        new CardType[] {CardType.ENCHANTMENT, CardType.CREATURE},
        "{B}");
    this.expansionSetCode = "JOU";
    this.subtype.add("Minotaur");

    this.power = new MageInt(2);
    this.toughness = new MageInt(1);

    // Bestow {3}{B}
    this.addAbility(new BestowAbility(this, "{3}{B}"));
    // Gnarled Scarhide can't block.
    this.addAbility(new CantBlockAbility());
    // Enchanted creature gets +2/+1 and can't block.
    Ability ability =
        new SimpleStaticAbility(
            Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 1, Duration.WhileOnBattlefield));
    Effect effect = new CantBlockAttachedEffect(AttachmentType.AURA);
    effect.setText("and can't block");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 20
0
  public MasterOfWaves(UUID ownerId) {
    super(
        ownerId,
        53,
        "Master of Waves",
        Rarity.MYTHIC,
        new CardType[] {CardType.CREATURE},
        "{3}{U}");
    this.expansionSetCode = "THS";
    this.subtype.add("Merfolk");
    this.subtype.add("Wizard");

    this.power = new MageInt(2);
    this.toughness = new MageInt(1);

    // Protection from red
    this.addAbility(new ProtectionAbility(filterProtection));
    // Elemental creatures you control get +1/+1.
    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD,
            new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filterBoost, false)));
    // When Master of Waves enters the battlefield, put a number of 1/0 blue Elemental creature
    // tokens onto the battlefield equal to your devotion to blue.
    // <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to
    // blue.)</i>
    Effect effect =
        new CreateTokenEffect(
            new MasterOfWavesElementalToken(), new DevotionCount(ColoredManaSymbol.U));
    effect.setText(
        "put a number of 1/0 blue Elemental creature tokens onto the battlefield equal to your devotion to blue. <i>(Each {U} in the mana costs of permanents you control counts toward your devotion to blue.)</i>");
    this.addAbility(new EntersBattlefieldTriggeredAbility(effect));
  }
Esempio n. 21
0
  public GeralfsMasterpiece(UUID ownerId) {
    super(
        ownerId,
        65,
        "Geralf's Masterpiece",
        Rarity.MYTHIC,
        new CardType[] {CardType.CREATURE},
        "{3}{U}{U}");
    this.expansionSetCode = "SOI";
    this.subtype.add("Zombie");
    this.subtype.add("Horror");
    this.power = new MageInt(7);
    this.toughness = new MageInt(7);

    // Flying
    this.addAbility(FlyingAbility.getInstance());

    // Geralf's Masterpiece gets -1/-1 for each card in your hand.
    DynamicValue count = new SignInversionDynamicValue(new CardsInControllerHandCount());
    Effect effect = new BoostSourceEffect(count, count, Duration.WhileOnBattlefield);
    effect.setText("{this} gets -1/-1 for each card in your hand");
    this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));

    // {3}{U}, Discard three cards: Return Geralf's Masterpiece from your graveyard to the
    // battlefield tapped.
    Ability ability =
        new SimpleActivatedAbility(
            Zone.GRAVEYARD,
            new ReturnSourceFromGraveyardToBattlefieldEffect(true),
            new ManaCostsImpl("{3}{U}"));
    ability.addCost(new DiscardTargetCost(new TargetCardInHand(3, new FilterCard("three cards"))));
    this.addAbility(ability);
  }
Esempio n. 22
0
  public WheelAndDeal(UUID ownerId) {
    super(ownerId, 121, "Wheel and Deal", Rarity.RARE, new CardType[] {CardType.INSTANT}, "{3}{U}");
    this.expansionSetCode = "ONS";

    // Any number of target opponents each discards his or her hand and draws seven cards.
    Effect effect = new DiscardHandTargetEffect();
    effect.setText("Any number of target opponents each discards his or her hand");
    this.getSpellAbility().addTarget(new TargetPlayer(0, Integer.MAX_VALUE, false, filter));
    this.getSpellAbility().addEffect(effect);
    effect = new DrawCardTargetEffect(7);
    effect.setText("and draws seven cards");
    this.getSpellAbility().addEffect(effect);

    // Draw a card.
    this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
  }
  public KarametraGodOfHarvests(UUID ownerId) {
    super(
        ownerId,
        148,
        "Karametra, God of Harvests",
        Rarity.MYTHIC,
        new CardType[] {CardType.ENCHANTMENT, CardType.CREATURE},
        "{3}{G}{W}");
    this.expansionSetCode = "BNG";
    this.supertype.add("Legendary");
    this.subtype.add("God");

    this.power = new MageInt(6);
    this.toughness = new MageInt(7);

    // Indestructible
    this.addAbility(IndestructibleAbility.getInstance());
    // As long as your devotion to green and white is less than seven, Karametra isn't a creature.
    Effect effect =
        new LoseCreatureTypeSourceEffect(
            new DevotionCount(ColoredManaSymbol.G, ColoredManaSymbol.W), 7);
    effect.setText(
        "As long as your devotion to green and white is less than seven, Karametra isn't a creature");
    this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
    // Whenever you cast a creature spell, you may search your library for a Forest or Plains card,
    // put it onto the battlefield tapped, then shuffle your library.
    this.addAbility(
        new SpellCastControllerTriggeredAbility(
            new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), true),
            new FilterCreatureSpell("a creature spell"),
            true));
  }
Esempio n. 24
0
  public JaceTheLivingGuildpact(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.PLANESWALKER}, "{2}{U}{U}");
    this.subtype.add("Jace");

    this.addAbility(new PlanswalkerEntersWithLoyalityCountersAbility(5));

    // +1: Look at the top two cards of your library. Put one of them into your graveyard.
    Effect effect =
        new LookLibraryAndPickControllerEffect(
            new StaticValue(2),
            false,
            new StaticValue(1),
            new FilterCard(),
            Zone.LIBRARY,
            true,
            false,
            false,
            Zone.GRAVEYARD,
            false);
    effect.setText(
        "Look at the top two cards of your library. Put one of them into your graveyard");
    this.addAbility(new LoyaltyAbility(effect, 1));

    // -3: Return another target nonland permanent to its owner's hand.
    LoyaltyAbility ability = new LoyaltyAbility(new ReturnToHandTargetEffect(), -3);
    ability.addTarget(new TargetPermanent(filter));
    this.addAbility(ability);

    // -8: Each player shuffles his or her hand and graveyard into his or her library. You draw
    // seven cards.
    this.addAbility(new LoyaltyAbility(new JaceTheLivingGuildpactEffect(), -8));
  }
Esempio n. 25
0
  public NimbusNaiad(UUID ownerId) {
    super(
        ownerId,
        56,
        "Nimbus Naiad",
        Rarity.COMMON,
        new CardType[] {CardType.ENCHANTMENT, CardType.CREATURE},
        "{2}{U}");
    this.expansionSetCode = "THS";
    this.subtype.add("Nymph");

    this.power = new MageInt(2);
    this.toughness = new MageInt(2);

    // Bestow {4}{U} (If you cast this card for its bestow cost, it's an Aura spell with enchant
    // creature. It becomes a creature again if it's not attached to a creature.)
    this.addAbility(new BestowAbility(this, "{4}{U}"));
    // Flying
    this.addAbility(FlyingAbility.getInstance());
    // Enchanted creature gets +2/+2 and has flying.
    Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2));
    Effect effect = new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA);
    effect.setText("and has flying");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 26
0
  public TransmogrifyingLicid(UUID ownerId) {
    super(
        ownerId,
        141,
        "Transmogrifying Licid",
        Rarity.UNCOMMON,
        new CardType[] {CardType.ARTIFACT, CardType.CREATURE},
        "{3}");
    this.expansionSetCode = "EXO";
    this.subtype.add("Licid");
    this.power = new MageInt(2);
    this.toughness = new MageInt(2);

    // {1}, {tap}: Transmogrifying Licid loses this ability and becomes an Aura enchantment with
    // enchant creature. Attach it to target creature. You may pay {1} to end this effect.
    this.addAbility(new LicidAbility(new GenericManaCost(1), new GenericManaCost(1)));

    // Enchanted creature gets +1/+1 and is an artifact in addition to its other types.
    Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1));
    Effect effect =
        new AddCardTypeAttachedEffect(
            CardType.ARTIFACT, Duration.WhileOnBattlefield, AttachmentType.AURA);
    effect.setText("and is an artifact in addition to its other types");
    ability.addEffect(effect);
    this.addAbility(ability);
  }
Esempio n. 27
0
  public PullFromTheDeep(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.SORCERY}, "{2}{U}{U}");

    // Return up to one target instant card and up to one target sorcery card from your graveyard to
    // your hand. Exile Pull from the Deep.
    Effect effect = new ReturnToHandTargetEffect();
    effect.setText("Return up to one target instant card");
    this.getSpellAbility().addEffect(effect);
    this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, filterInstant));
    effect = new ReturnToHandTargetEffect();
    effect.setText("and up to one target sorcery card from your graveyard to your hand");
    effect.setTargetPointer(new SecondTargetPointer());
    this.getSpellAbility().addEffect(effect);
    this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 1, filterSorcery));
    this.getSpellAbility().addEffect(ExileSpellEffect.getInstance());
  }
Esempio n. 28
0
  public GempalmPolluter(UUID ownerId) {
    super(
        ownerId,
        70,
        "Gempalm Polluter",
        Rarity.COMMON,
        new CardType[] {CardType.CREATURE},
        "{5}{B}");
    this.expansionSetCode = "LGN";
    this.subtype.add("Zombie");
    this.power = new MageInt(4);
    this.toughness = new MageInt(3);

    // Cycling {B}{B}
    this.addAbility(new CyclingAbility(new ManaCostsImpl("{B}{B}")));

    // When you cycle Gempalm Polluter, you may have target player lose life equal to the number of
    // Zombies on the battlefield.
    Effect effect = new LoseLifeTargetEffect(new PermanentsOnBattlefieldCount(filter));
    effect.setText(
        "you may have target player lose life equal to the number of Zombies on the battlefield");
    Ability ability = new CycleTriggeredAbility(effect, true);
    ability.addTarget(new TargetPlayer());
    this.addAbility(ability);
  }
Esempio n. 29
0
  public GethsGrimoire(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.ARTIFACT}, "{4}");

    Effect drawTrigger = new DrawCardSourceControllerEffect(1);
    drawTrigger.setText("You may draw a card.");
    // Whenever an opponent discards a card, you may draw a card.
    this.addAbility(new DiscardsACardOpponentTriggeredAbility(drawTrigger, true));
  }
Esempio n. 30
0
  public WellOfIdeas(UUID ownerId) {
    super(
        ownerId, 20, "Well of Ideas", Rarity.RARE, new CardType[] {CardType.ENCHANTMENT}, "{5}{U}");
    this.expansionSetCode = "C14";

    // When Well of Ideas enters the battlefield, draw two cards.
    this.addAbility(
        new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(2), false));

    // At the beginning of each other player's draw step, that player draws an additional card.
    Effect effect = new DrawCardTargetEffect(1);
    effect.setText("that player draws an additional card");
    this.addAbility(new BeginningOfDrawTriggeredAbility(effect, TargetController.NOT_YOU, false));

    // At the beginning of your draw step, draw two additional cards.
    effect = new DrawCardTargetEffect(2);
    effect.setText("draw two additional cards");
    this.addAbility(new BeginningOfDrawTriggeredAbility(effect, TargetController.YOU, false));
  }