public CreepingChillAbility() { super( Zone.LIBRARY, Zone.GRAVEYARD, new DoIfCostPaid( new DamagePlayersEffect(3, TargetController.OPPONENT), new ExileSourceFromGraveCost() ).addEffect(new GainLifeEffect(3)), "", true ); }
public CircleOfAfflictionTriggeredAbility() { super(Zone.BATTLEFIELD, new DoIfCostPaid(new LoseLifeTargetEffect(1), new GenericManaCost(1)), false); ((DoIfCostPaid) getEffects().get(0)).addEffect(new GainLifeEffect(1)); }
public FaithOfTheDevoted(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); // Whenever you cycle or discard a card, you may pay {1}. If you do, each opponent loses 2 life and you gain 2 life. Effect subEffect = new GainLifeEffect(2); subEffect.setText("and you gain 2 life"); DoIfCostPaid effect = new DoIfCostPaid( new LoseLifeOpponentsEffect(2), new GenericManaCost(1)); effect.addEffect(subEffect); this.addAbility(new CycleOrDiscardControllerTriggeredAbility(effect)); }
public QuietContemplation(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{2}{U}"); // Whenever you cast a noncreature spell, you may pay {1}. If you do, tap target creature an opponent controls and it doesn't untap during its controller's next untap step. DoIfCostPaid doIfCostPaid = new DoIfCostPaid(new TapTargetEffect(), new GenericManaCost(1),"Tap creature?"); Effect effect = new DontUntapInControllersNextUntapStepTargetEffect(); effect.setText("and it doesn't untap during its controller's next untap step"); doIfCostPaid.addEffect(effect); Ability ability = new SpellCastControllerTriggeredAbility(doIfCostPaid, filterNonCreature, false); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); }
public YasovaDragonclaw(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.WARRIOR); this.power = new MageInt(4); this.toughness = new MageInt(2); // Trample this.addAbility(TrampleAbility.getInstance()); // At the beginning of combat on your turn, you may pay {1}{(U/R)}{(U/R)}. If you do, gain control of target creature an opponent controls with power less than Yasova Dragonclaw's power until end of turn, untap that creature, and it gains haste until end of turn. DoIfCostPaid effect = new DoIfCostPaid(new GainControlTargetEffect(Duration.EndOfTurn, true), new ManaCostsImpl("{1}{U/R}{U/R}")); Effect effect2 = new UntapTargetEffect(); effect2.setText(", untap that creature"); effect.addEffect(effect2); effect.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn, ", and it gains haste until end of turn")); Ability ability = new BeginningOfCombatTriggeredAbility(effect, TargetController.YOU, false); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); }
public OliviaMobilizedForWar(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}{R}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VAMPIRE); this.subtype.add(SubType.KNIGHT); this.power = new MageInt(3); this.toughness = new MageInt(3); // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever another creature enters the battlefield under your control, you may discard a card. If you do, put a +1/+1 counter on that creature, // it gains haste until end of turn, and it becomes a Vampire in addition to its other types. Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setText("put a +1/+1 counter on that creature"); DoIfCostPaid doIfCostPaid = new DoIfCostPaid(effect, new DiscardCardCost()); effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); effect.setText(", it gains haste until end of turn,"); doIfCostPaid.addEffect(effect); effect = new BecomesCreatureTypeTargetEffect(Duration.WhileOnBattlefield, SubType.VAMPIRE, false); effect.setText("and it becomes a Vampire in addition to its other types"); doIfCostPaid.addEffect(effect); this.addAbility(new EntersBattlefieldControlledTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaid, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, SetTargetPointer.PERMANENT, null)); }
public EldraziObligator(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add(SubType.ELDRAZI); this.power = new MageInt(3); this.toughness = new MageInt(1); // Devoid this.addAbility(new DevoidAbility(this.color)); // Haste this.addAbility(HasteAbility.getInstance()); DoIfCostPaid costPaidEffect = new DoIfCostPaid(new GainControlTargetEffect(Duration.EndOfTurn), new ManaCostsImpl("{1}{C}")); Effect untapEffect = new UntapTargetEffect(); untapEffect.setText("untap that creature,"); Effect hasteEffect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); hasteEffect.setText("and it gains haste until end of turn"); costPaidEffect.addEffect(untapEffect); costPaidEffect.addEffect(hasteEffect); // When you cast Eldrazi Obligator, you may pay {1}{C}. If you do, gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. Ability ability = new CastSourceTriggeredAbility(costPaidEffect); Target target = new TargetCreaturePermanent(new FilterCreaturePermanent()); ability.addTarget(target); this.addAbility(ability); }
public GoblinVandal(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}"); this.subtype.add(SubType.GOBLIN); this.subtype.add(SubType.ROGUE); this.power = new MageInt(1); this.toughness = new MageInt(1); // Whenever Goblin Vandal attacks and isn't blocked, you may pay {R}. If you do, destroy target artifact defending player controls and Goblin Vandal assigns no combat damage this turn. Effect effect = new DestroyTargetEffect(); effect.setText("destroy target artifact defending player controls"); DoIfCostPaid effect2 = new DoIfCostPaid(effect, new ManaCostsImpl("{R}"), "Pay {R} to destroy artifact of defending player?"); effect = new AssignNoCombatDamageSourceEffect(Duration.EndOfTurn); effect.setText("and {this} assigns no combat damage this turn"); effect2.addEffect(effect); this.addAbility(new GoblinVandalTriggeredAbility(effect2)); }
public LorthosTheTidemaker(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{U}{U}{U}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.OCTOPUS); this.power = new MageInt(8); this.toughness = new MageInt(8); // Whenever Lorthos, the Tidemaker attacks, you may pay {8}. If you do, tap up to eight target permanents. Those permanents don't untap during their controllers' next untap steps. DoIfCostPaid effect = new DoIfCostPaid(new TapTargetEffect(), new GenericManaCost(8), "Pay {8} to tap up to 8 target permanents? (They don't untap during their controllers' next untap steps)"); AttacksTriggeredAbility ability = new AttacksTriggeredAbility(effect, false); Effect effect2 = new DontUntapInControllersNextUntapStepTargetEffect(); effect2.setText("Those permanents don't untap during their controllers' next untap steps"); effect.addEffect(effect2); ability.addTarget(new TargetPermanent(0, 8, filter, false)); this.addAbility(ability); }
public SalvageSquad(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{U}{B}"); this.subtype.add(SubType.JAWA); this.subtype.add(SubType.ARTIFICIER); this.power = new MageInt(2); this.toughness = new MageInt(2); // When you Salvage Squad enters the battlefied, you may sacrifice an artifact. If you do, you gain 2 life and draw two cards. DoIfCostPaid effect = new DoIfCostPaid(new GainLifeEffect(2), new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledArtifactPermanent()))); effect.addEffect(new DrawCardSourceControllerEffect(2)); this.addAbility(new EntersBattlefieldTriggeredAbility(effect)); }
public AAT1(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{1}{W}{U}{B}"); this.subtype.add(SubType.DROID); this.subtype.add(SubType.CONSTRUCT); this.power = new MageInt(4); this.toughness = new MageInt(4); // Whenever a repair counter is removed from a creature card your graveyard, you may pay {W/B}. If you do, target player loses 1 life and you gain 1 life. DoIfCostPaid effect = new DoIfCostPaid(new LoseLifeTargetEffect(1), new ManaCostsImpl("{W/B}")); Effect additionalEffect = new GainLifeEffect(1); additionalEffect.setText("and you gain 1 life"); effect.addEffect(additionalEffect); Ability ability = new AAT1TriggeredAbility(effect); ability.addTarget(new TargetPlayer()); this.addAbility(ability); // Repair 4 this.addAbility(new RepairAbility(4)); }
public VoltaicBrawler(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{R}{G}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.WARRIOR); this.power = new MageInt(3); this.toughness = new MageInt(2); // When Voltaic Brawler enters the battlefield, you get {E}{E}. this.addAbility(new EntersBattlefieldTriggeredAbility(new GetEnergyCountersControllerEffect(2))); // Whenever Voltaic Brawler attacks, you may pay {E}. If you do, it gets +1/+1 and gains trample until end of turn. Effect effect = new BoostSourceEffect(1, 1, Duration.EndOfTurn); effect.setText("it gets +1/+1"); DoIfCostPaid doIfCostPaid = new DoIfCostPaid(effect, new PayEnergyCost(1)); effect = new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); effect.setText("and gains trample until end of turn"); doIfCostPaid.addEffect(effect); this.addAbility(new AttacksTriggeredAbility(doIfCostPaid, false)); }
public UndercityScavenger(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.OGRE); this.subtype.add(SubType.WARRIOR); this.power = new MageInt(3); this.toughness = new MageInt(3); // When Undercity Scavenger enters the battlefield, you may sacrifice another creature. If you do, put two +1/+1 counters on Undercity Scavenger, then scry 2. this.addAbility(new EntersBattlefieldTriggeredAbility(new DoIfCostPaid( new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new SacrificeTargetCost(new TargetControlledPermanent(filter)) ).addEffect(new ScryEffect(2).concatBy(", then")))); }
public GlintSleeveSiphoner(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.ROGUE); this.power = new MageInt(2); this.toughness = new MageInt(1); // Menace this.addAbility(new MenaceAbility()); // Whenever Glint-Sleeve Siphoner enters the battlefield or attacks, you get {E}. this.addAbility(new EntersBattlefieldOrAttacksSourceTriggeredAbility(new GetEnergyCountersControllerEffect(1))); // At the beginning of your upkeep, you may pay {E}{E}. If you do, draw a card and you lose 1 life. DoIfCostPaid doIfCostPaidEffect = new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new PayEnergyCost(2)); Effect effect = new LoseLifeSourceControllerEffect(1); doIfCostPaidEffect.addEffect(effect.concatBy("and")); this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaidEffect, TargetController.YOU, false, false, "At the beginning of your upkeep, ")); }
public IroncladRevolutionary(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}{B}"); this.subtype.add(SubType.AETHERBORN); this.subtype.add(SubType.ARTIFICER); this.power = new MageInt(4); this.toughness = new MageInt(4); // When Ironclad Revolutionary enters the battlefield, you may sacrifice an artifact. If you do, put two +1/+1 counters on Ironclad Revolutionary and each opponent loses 2 life. DoIfCostPaid doEffect = new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2), true), new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledArtifactPermanent("an artifact")))); Effect effect = new LoseLifeOpponentsEffect(2); effect.setText("and each opponent loses 2 life"); doEffect.addEffect(effect); this.addAbility(new EntersBattlefieldTriggeredAbility(doEffect, false)); }
public UnderhandedDesigns(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{1}{B}"); // Whenever an artifact enters the battlefield under your control, you may pay {1}. If you do, each opponent loses 1 life and you gain 1 life. DoIfCostPaid doIfCostPaid = new DoIfCostPaid(new LoseLifeOpponentsEffect(1), new GenericManaCost(1)); Effect effect = new GainLifeEffect(1); doIfCostPaid.addEffect(effect); this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, doIfCostPaid, new FilterControlledArtifactPermanent("an artifact"), false, "Whenever an artifact enters the battlefield under your control, you may pay {1}. If you do, each opponent loses 1 life and you gain 1 life.")); // {1}{B}, Sacrifice Underhanded Designs: Destroy target creature. Activate this ability only if you control two or more artifacts. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{B}"), new PermanentsOnTheBattlefieldCondition(new FilterControlledArtifactPermanent("you control two or more artifacts"), ComparisonType.MORE_THAN, 1)); ability.addCost(new SacrificeSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); }
public AetherstormRoc(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); this.subtype.add(SubType.BIRD); this.power = new MageInt(3); this.toughness = new MageInt(3); // Flying this.addAbility(FlyingAbility.getInstance()); // Whenever Aetherstorm Roc or another creature enters the battlefield under your control, you get {E}. this.addAbility(new EntersBattlefieldControlledTriggeredAbility(new GetEnergyCountersControllerEffect(1), new FilterCreaturePermanent("{this} or another creature"))); // Whenever Aetherstorm Roc attacks, you may pay {E}{E}. If you do, put a +1/+1 counter on it and tap up to one target creature defending player controls. DoIfCostPaid doIfCostPaidEffect = new DoIfCostPaid(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), new PayEnergyCost(2)); doIfCostPaidEffect.addEffect(new TapTargetEffect()); Ability ability = new AttacksTriggeredAbility(doIfCostPaidEffect, false, "Whenever {this} attacks you may pay {E}{E}. If you do, put a +1/+1 counter on it and tap up to one target creature defending player controls."); ability.addTarget(new TargetCreaturePermanent(0, 1, new FilterCreaturePermanent("creature defending player controls"), false)); ability.setTargetAdjuster(AetherstormRocAdjuster.instance); this.addAbility(ability); }
public OloroAgelessAscetic(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}{U}{B}"); addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.GIANT); this.subtype.add(SubType.SOLDIER); this.power = new MageInt(4); this.toughness = new MageInt(5); // At the beginning of your upkeep, you gain 2 life. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new GainLifeEffect(2), TargetController.YOU, false)); // Whenever you gain life, you may pay {1}. If you do, draw a card and each opponent loses 1 life. DoIfCostPaid effect = new DoIfCostPaid(new DrawCardSourceControllerEffect(1), new GenericManaCost(1)); Effect effectToAdd = new LoseLifeOpponentsEffect(1); effectToAdd.setText("and each opponent loses 1 life"); effect.addEffect(effectToAdd); this.addAbility(new GainLifeControllerTriggeredAbility(effect, false)); // At the beginning of your upkeep, if Oloro, Ageless Ascetic is in the command zone, you gain 2 life. this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.COMMAND, new GainLifeEffect(new StaticValue(2), "if {this} is in the command zone, you gain 2 life"), TargetController.YOU, false)); }
public VraskaGolgariQueen(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.PLANESWALKER}, "{2}{B}{G}"); this.addSuperType(SuperType.LEGENDARY); this.subtype.add(SubType.VRASKA); this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(4)); // +2: You may sacrifice another permanent. If you do, you gain 1 life and draw a card. DoIfCostPaid effect = new DoIfCostPaid( new GainLifeEffect(1), new SacrificeTargetCost(new TargetControlledPermanent(filter1)) ); effect.addEffect(new DrawCardSourceControllerEffect(1).setText("and draw a card")); this.addAbility(new LoyaltyAbility(effect, 2)); // -3: Destroy target nonland permanent with converted mana cost 3 or less. Ability ability = new LoyaltyAbility(new DestroyTargetEffect(), -3); ability.addTarget(new TargetPermanent(filter2)); this.addAbility(ability); // -9: You get an emblem with "Whenever a creature you control deals combat damage to a player, that player loses the game." this.addAbility(new LoyaltyAbility( new GetEmblemEffect(new VraskaGolgariQueenEmblem()), -9 )); }