public KolaghanStormsinger(UUID ownerId) {
    super(
        ownerId,
        145,
        "Kolaghan Stormsinger",
        Rarity.COMMON,
        new CardType[] {CardType.CREATURE},
        "{R}");
    this.expansionSetCode = "DTK";
    this.subtype.add("Human");
    this.subtype.add("Shaman");
    this.power = new MageInt(1);
    this.toughness = new MageInt(1);

    // Haste
    this.addAbility(HasteAbility.getInstance());
    // Megamorph {R}
    this.addAbility(new MorphAbility(this, new ManaCostsImpl("{R}"), true));

    // When Kolaghan Stormsinger is turned face up, target creature gains haste until end of turn.
    Ability ability =
        new TurnedFaceUpSourceTriggeredAbility(
            new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn), false);
    ability.addTarget(new TargetCreaturePermanent());
    this.addAbility(ability);
  }
Example #2
0
  public CarnivalHellsteed(UUID ownerId) {
    super(
        ownerId,
        147,
        "Carnival Hellsteed",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{4}{B}{R}");
    this.expansionSetCode = "RTR";
    this.subtype.add("Nightmare");
    this.subtype.add("Horse");

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

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

    // Haste
    this.addAbility(HasteAbility.getInstance());

    // Unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It
    // can't block as long as it has a +1/+1 counter on it.)
    this.addAbility(new UnleashAbility());
  }
Example #3
0
  public OgreBattledriver(UUID ownerId) {
    super(
        ownerId,
        148,
        "Ogre Battledriver",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{2}{R}{R}");
    this.expansionSetCode = "M14";
    this.subtype.add("Ogre");
    this.subtype.add("Warrior");

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

    // Whenever another creature enters the battlefield under your control, that creature gets +2/+0
    // and gains haste until end of turn.
    Ability ability =
        new EntersBattlefieldAllTriggeredAbility(
            Zone.BATTLEFIELD,
            new BoostTargetEffect(2, 0, Duration.EndOfTurn),
            filter,
            false,
            true,
            rule,
            true);
    ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
    this.addAbility(ability);
  }
Example #4
0
  public UrabraskTheHidden(UUID ownerId) {
    super(
        ownerId,
        98,
        "Urabrask the Hidden",
        Rarity.MYTHIC,
        new CardType[] {CardType.CREATURE},
        "{3}{R}{R}");
    this.expansionSetCode = "NPH";
    this.supertype.add("Legendary");
    this.subtype.add("Praetor");

    this.color.setRed(true);
    this.power = new MageInt(4);
    this.toughness = new MageInt(4);

    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD,
            new GainAbilityControlledEffect(
                HasteAbility.getInstance(),
                Duration.WhileOnBattlefield,
                new FilterControlledCreaturePermanent("Creatures"))));
    this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UrabraskTheHiddenEffect()));
  }
Example #5
0
  public GoblinRuinblaster(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{2}{R}");

    this.subtype.add("Goblin");
    this.subtype.add("Shaman");
    this.power = new MageInt(2);
    this.toughness = new MageInt(1);

    // Kicker {R} (You may pay an additional {R} as you cast this spell.)
    this.addAbility(new KickerAbility("{R}"));

    // Haste
    this.addAbility(HasteAbility.getInstance());

    // When Goblin Ruinblaster enters the battlefield, if it was kicked, destroy target nonbasic
    // land.
    EntersBattlefieldTriggeredAbility ability =
        new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect(), false);
    ability.addTarget(new TargetNonBasicLandPermanent());
    this.addAbility(
        new ConditionalTriggeredAbility(
            ability,
            KickedCondition.getInstance(),
            "When {this} enters the battlefield, if it was kicked, destroy target nonbasic land."));
  }
Example #6
0
  public FlinthoofBoar(UUID ownerId) {
    super(
        ownerId,
        171,
        "Flinthoof Boar",
        Rarity.UNCOMMON,
        new CardType[] {CardType.CREATURE},
        "{1}{G}");
    this.expansionSetCode = "M13";
    this.subtype.add("Boar");

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

    // Flinthoof Boar gets +1/+1 as long as you control a Mountain.
    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD, new BoostSourceWhileControlsEffect(filter, 1, 1)));

    // {R}: Flinthoof Boar gains haste until end of turn.
    this.addAbility(
        new SimpleActivatedAbility(
            Zone.BATTLEFIELD,
            new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn),
            new ManaCostsImpl("{R}")));
  }
Example #7
0
  public GeierReachBandit(UUID ownerId) {
    super(
        ownerId,
        159,
        "Geier Reach Bandit",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{2}{R}");
    this.expansionSetCode = "SOI";
    this.subtype.add("Human");
    this.subtype.add("Rogue");
    this.subtype.add("Werewolf");
    this.power = new MageInt(3);
    this.toughness = new MageInt(2);

    this.canTransform = true;
    this.secondSideCard = new VildinPackAlpha(ownerId);

    // Haste
    this.addAbility(HasteAbility.getInstance());

    // At the beginning of each upkeep, if no spells were cast last turn, transform Geier Reach
    // Bandit.
    this.addAbility(new TransformAbility());
    TriggeredAbility ability =
        new BeginningOfUpkeepTriggeredAbility(
            new TransformSourceEffect(true), TargetController.ANY, false);
    this.addAbility(
        new ConditionalTriggeredAbility(
            ability,
            NoSpellsWereCastLastTurnCondition.getInstance(),
            TransformAbility.NO_SPELLS_TRANSFORM_RULE));
  }
Example #8
0
  public AkutaBornOfAsh(UUID ownerId) {
    super(
        ownerId,
        61,
        "Akuta, Born of Ash",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{2}{B}{B}");
    this.expansionSetCode = "SOK";
    this.supertype.add("Legendary");
    this.subtype.add("Spirit");

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

    // Haste
    this.addAbility(HasteAbility.getInstance());
    // At the beginning of your upkeep, if you have more cards in hand than each opponent, you may
    // sacrifice a Swamp. If you do, return Akuta, Born of Ash from your graveyard to the
    // battlefield.
    Ability ability =
        new ConditionalTriggeredAbility(
            new BeginningOfUpkeepTriggeredAbility(
                Zone.GRAVEYARD,
                new DoIfCostPaid(
                    new ReturnSourceFromGraveyardToBattlefieldEffect(),
                    new SacrificeTargetCost(new TargetControlledPermanent(filterSwamp))),
                TargetController.YOU,
                false),
            new MoreCardsInHandThanOpponentsCondition(),
            "At the beginning of your upkeep, if you have more cards in hand than each opponent, you may sacrifice a Swamp. If you do, return {this} from your graveyard to the battlefield.");
    this.addAbility(ability);
  }
Example #9
0
 public SwordOfVengeance(UUID ownerId) {
   super(
       ownerId, 216, "Sword of Vengeance", Rarity.RARE, new CardType[] {CardType.ARTIFACT}, "{3}");
   this.expansionSetCode = "M11";
   this.subtype.add("Equipment");
   this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(3)));
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(
               FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(TrampleAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(
               VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEquippedEffect(2, 0)));
 }
Example #10
0
  public DemigodOfRevenge(UUID ownerId) {
    super(
        ownerId,
        183,
        "Demigod of Revenge",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{B/R}{B/R}{B/R}{B/R}{B/R}");
    this.expansionSetCode = "SHM";
    this.subtype.add("Spirit");
    this.subtype.add("Avatar");

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

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

    // Haste
    this.addAbility(HasteAbility.getInstance());

    // When you cast Demigod of Revenge, return all cards named Demigod of Revenge from your
    // graveyard to the battlefield.
    this.addAbility(new CastSourceTriggeredAbility(new DemigodOfRevengeReturnEffect()));
  }
Example #11
0
  public MistcutterHydra(UUID ownerId) {
    super(
        ownerId,
        162,
        "Mistcutter Hydra",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{X}{G}");
    this.expansionSetCode = "THS";
    this.subtype.add("Hydra");

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

    // Mistcutter Hydra can't be countered.
    this.addAbility(new CantBeCounteredAbility());
    // Haste
    this.addAbility(HasteAbility.getInstance());
    // protection from blue
    this.addAbility(new ProtectionAbility(filter));
    // Mistcutter Hydra enters the battlefield with X +1/+1 counters on it.
    this.addAbility(
        new EntersBattlefieldAbility(
            new EntersBattlefieldWithXCountersEffect(CounterType.P1P1.createInstance())));
  }
Example #12
0
  public LightningElemental(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{3}{R}");
    this.subtype.add("Elemental");

    this.power = new MageInt(4);
    this.toughness = new MageInt(1);
    this.addAbility(HasteAbility.getInstance());
  }
Example #13
0
  public ArcboundHybrid(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.ARTIFACT, CardType.CREATURE}, "{4}");
    this.subtype.add("Beast");
    this.power = new MageInt(0);
    this.toughness = new MageInt(0);

    // Haste
    this.addAbility(HasteAbility.getInstance());
    // Modular 2
    this.addAbility(new ModularAbility(this, 2));
  }
Example #14
0
  public MassHysteria(UUID ownerId) {
    super(ownerId, 99, "Mass Hysteria", Rarity.RARE, new CardType[] {CardType.ENCHANTMENT}, "{R}");
    this.expansionSetCode = "MRD";

    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD,
            new GainAbilityAllEffect(
                HasteAbility.getInstance(),
                Duration.WhileOnBattlefield,
                new FilterCreaturePermanent(),
                false)));
  }
Example #15
0
  public CrimsonWisps(UUID ownerId) {
    super(ownerId, 88, "Crimson Wisps", Rarity.UNCOMMON, new CardType[] {CardType.INSTANT}, "{R}");
    this.expansionSetCode = "SHM";

    // Target creature becomes red and gains haste until end of turn.
    this.getSpellAbility().addTarget(new TargetCreaturePermanent());
    this.getSpellAbility()
        .addEffect(new BecomesColorTargetEffect(ObjectColor.RED, Duration.EndOfTurn));
    this.getSpellAbility()
        .addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));

    // Draw a card.
    this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
  }
Example #16
0
  public RealitySmasher(UUID ownerId) {
    super(ownerId, 7, "Reality Smasher", Rarity.RARE, new CardType[] {CardType.CREATURE}, "{4}{C}");
    this.expansionSetCode = "OGW";
    this.subtype.add("Eldrazi");
    this.power = new MageInt(5);
    this.toughness = new MageInt(5);

    // Trample
    this.addAbility(TrampleAbility.getInstance());
    // Haste
    this.addAbility(HasteAbility.getInstance());
    // Whenever Reality Smasher becomes the target of a spell an opponent controls, counter that
    // spell unless its controller discards a card.
    this.addAbility(new RealitySmasherTriggeredAbility());
  }
Example #17
0
  public SuqAtaLancer(UUID ownerId) {
    super(
        ownerId, 69, "Suq'Ata Lancer", Rarity.COMMON, new CardType[] {CardType.CREATURE}, "{2}{R}");
    this.expansionSetCode = "TSB";
    this.subtype.add("Human");
    this.subtype.add("Knight");

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

    // Haste
    this.addAbility(HasteAbility.getInstance());
    // Flanking
    this.addAbility(new FlankingAbility());
  }
Example #18
0
  public ShriekingMogg(UUID ownerId) {
    super(ownerId, 99, "Shrieking Mogg", Rarity.RARE, new CardType[] {CardType.CREATURE}, "{1}{R}");
    this.expansionSetCode = "NEM";
    this.subtype.add("Goblin");

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

    // Haste
    this.addAbility(HasteAbility.getInstance());

    // When Shrieking Mogg enters the battlefield, tap all other creatures.
    Ability ability = new EntersBattlefieldTriggeredAbility(new TapAllEffect(filter));
    this.addAbility(ability);
  }
Example #19
0
  public AkromaAngelOfWrath(UUID ownerId, CardSetInfo setInfo) {
    super(ownerId, setInfo, new CardType[] {CardType.CREATURE}, "{5}{W}{W}{W}");
    this.supertype.add("Legendary");
    this.subtype.add("Angel");

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

    this.addAbility(FlyingAbility.getInstance());
    this.addAbility(FirstStrikeAbility.getInstance());
    this.addAbility(VigilanceAbility.getInstance());
    this.addAbility(TrampleAbility.getInstance());
    this.addAbility(HasteAbility.getInstance());
    // protection from black and from red
    this.addAbility(ProtectionAbility.from(ObjectColor.BLACK, ObjectColor.RED));
  }
Example #20
0
  public ActOfTreason(UUID ownerId) {
    super(
        ownerId,
        124,
        "Act of Treason",
        Rarity.UNCOMMON,
        new CardType[] {CardType.SORCERY},
        "{2}{R}");
    this.expansionSetCode = "M10";

    // Gain control of target creature until end of turn. Untap that creature.
    // It gains haste until end of turn. (It can attack and {T} this turn.)
    this.getSpellAbility().addTarget(new TargetCreaturePermanent());
    this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn));
    this.getSpellAbility().addEffect(new UntapTargetEffect());
    this.getSpellAbility()
        .addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
  }
Example #21
0
 public SewnEyeDrake(UUID ownerId) {
   super(
       ownerId,
       135,
       "Sewn-Eye Drake",
       Rarity.COMMON,
       new CardType[] {CardType.CREATURE},
       "{2}{U/R}{B}");
   this.expansionSetCode = "ARB";
   this.subtype.add("Zombie");
   this.subtype.add("Drake");
   this.color.setBlack(true);
   this.color.setBlue(true);
   this.color.setRed(true);
   this.power = new MageInt(3);
   this.toughness = new MageInt(1);
   this.addAbility(FlyingAbility.getInstance());
   this.addAbility(HasteAbility.getInstance());
 }
Example #22
0
  @Override
  public boolean apply(Game game, Ability source) {
    Card card = game.getCard(source.getFirstTarget());
    if (card != null) {
      card.addAbility(HasteAbility.getInstance());
      card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getId(), source.getControllerId());

      ExileTargetEffect exileEffect = new ExileTargetEffect();
      exileEffect.setTargetPointer(new FixedTarget(card.getId()));
      DelayedTriggeredAbility delayedAbility = new AtEndOfTurnDelayedTriggeredAbility(exileEffect);
      delayedAbility.setSourceId(source.getSourceId());
      delayedAbility.setControllerId(source.getControllerId());
      game.addDelayedTriggeredAbility(delayedAbility);

      return true;
    }

    return false;
  }
Example #23
0
  public ChandrasPhoenix(UUID ownerId) {
    super(
        ownerId,
        126,
        "Chandra's Phoenix",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{1}{R}{R}");
    this.expansionSetCode = "M12";
    this.subtype.add("Phoenix");

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

    this.addAbility(FlyingAbility.getInstance());
    this.addAbility(HasteAbility.getInstance());
    this.addAbility(new ChandrasPhoenixTriggeredAbility());
  }
Example #24
0
  public MinotaurAggressor(UUID ownerId) {
    super(
        ownerId,
        100,
        "Minotaur Aggressor",
        Rarity.UNCOMMON,
        new CardType[] {CardType.CREATURE},
        "{6}{R}");
    this.expansionSetCode = "RTR";
    this.subtype.add("Minotaur");
    this.subtype.add("Berserker");

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

    // First strike, haste
    this.addAbility(FirstStrikeAbility.getInstance());
    this.addAbility(HasteAbility.getInstance());
  }
Example #25
0
  public LuBuMasterAtArms(UUID ownerId) {
    super(
        ownerId,
        108,
        "Lu Bu, Master-at-Arms",
        Rarity.RARE,
        new CardType[] {CardType.CREATURE},
        "{5}{R}");
    this.expansionSetCode = "ME3";
    this.supertype.add("Legendary");
    this.subtype.add("Human");
    this.subtype.add("Soldier");
    this.subtype.add("Warrior");
    this.power = new MageInt(4);
    this.toughness = new MageInt(3);

    // Haste; horsemanship
    this.addAbility(HasteAbility.getInstance());
    this.addAbility(HorsemanshipAbility.getInstance());
  }
  public ConcordantCrossroads(UUID ownerId) {
    super(
        ownerId,
        114,
        "Concordant Crossroads",
        Rarity.RARE,
        new CardType[] {CardType.ENCHANTMENT},
        "{G}");
    this.expansionSetCode = "ME3";
    this.supertype.add("World");

    // All creatures have haste.
    this.addAbility(
        new SimpleStaticAbility(
            Zone.BATTLEFIELD,
            new GainAbilityAllEffect(
                HasteAbility.getInstance(),
                Duration.WhileOnBattlefield,
                new FilterCreaturePermanent("Creatures"))));
  }
Example #27
0
 @Override
 public void build() {
   // Creatures you control have flying, first strike, vigilance, trample, haste, and protection
   // from black and from red.
   CompoundAbility abilities =
       new CompoundAbility(
           FlyingAbility.getInstance(),
           FirstStrikeAbility.getInstance(),
           VigilanceAbility.getInstance(),
           TrampleAbility.getInstance(),
           HasteAbility.getInstance(),
           new ProtectionAbility(filterBlack),
           new ProtectionAbility(filterRed));
   this.addAbility(
       new SimpleStaticAbility(
           Constants.Zone.BATTLEFIELD,
           new GainAbilityControlledEffect(
               abilities,
               Constants.Duration.WhileOnBattlefield,
               new FilterControlledCreaturePermanent("Creatures you control"))));
 }
Example #28
0
 public SwiftfootBoots(UUID ownerId) {
   super(
       ownerId,
       219,
       "Swiftfoot Boots",
       Rarity.UNCOMMON,
       new CardType[] {CardType.ARTIFACT},
       "{2}");
   this.expansionSetCode = "M12";
   this.subtype.add("Equipment");
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(
               HexproofAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(
       new SimpleStaticAbility(
           Zone.BATTLEFIELD,
           new GainAbilityAttachedEffect(HasteAbility.getInstance(), AttachmentType.EQUIPMENT)));
   this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
 }
Example #29
0
  public RakdosRagemutt(UUID ownerId) {
    super(
        ownerId,
        185,
        "Rakdos Ragemutt",
        Rarity.UNCOMMON,
        new CardType[] {CardType.CREATURE},
        "{3}{B}{R}");
    this.expansionSetCode = "RTR";
    this.subtype.add("Elemental");
    this.subtype.add("Hound");

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

    // Lifelink
    this.addAbility(LifelinkAbility.getInstance());
    // Haste
    this.addAbility(HasteAbility.getInstance());
  }
Example #30
0
  public TraitorousBlood(UUID ownerId) {
    super(
        ownerId,
        166,
        "Traitorous Blood",
        Rarity.COMMON,
        new CardType[] {CardType.SORCERY},
        "{1}{R}{R}");
    this.expansionSetCode = "ISD";

    this.color.setRed(true);

    // Gain control of target creature until end of turn. Untap it. It gains trample and haste until
    // end of turn.
    this.getSpellAbility().addTarget(new TargetCreaturePermanent());
    this.getSpellAbility().addEffect(new GainControlTargetEffect(Duration.EndOfTurn));
    this.getSpellAbility().addEffect(new UntapTargetEffect());
    this.getSpellAbility()
        .addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
    this.getSpellAbility()
        .addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
  }