public UndercityReachesPlane() { this.setName("Plane - Undercity Reaches"); this.setExpansionSetCodeForImage("PCA"); // Whenever a creature deals combat damage to a player, its controller may a draw a card Ability ability = new UndercityReachesTriggeredAbility(); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. Effect chaosEffect = new MaximumHandSizeControllerEffect(Integer.MAX_VALUE, Duration.EndOfGame, HandSizeModification.SET); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
@Override public ActivateIfConditionActivatedAbility copy() { return new ActivateIfConditionActivatedAbility(this); }
public SundialOfTheInfinite(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{2}"); // {1}, {tap}: End the turn. Activate this ability only during your turn. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new EndTurnEffect(), new GenericManaCost(1), MyTurnCondition.instance); ability.addCost(new TapSourceCost()); this.addAbility(ability); }
public AcademyAtTolariaWestPlane() { this.setName("Plane - Academy at Tolaria West"); this.setExpansionSetCodeForImage("PCA"); // At the beginning of your end step, if you have 0 cards in hand, draw seven cards Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new DrawCardsActivePlayerEffect(7), TargetController.ANY, HellbentAPCondition.instance, false); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, discard your hand Effect chaosEffect = new DiscardHandControllerEffect(); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public ShuFarmer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{W}"); this.subtype.add(SubType.HUMAN); this.power = new MageInt(1); this.toughness = new MageInt(1); // {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance); this.addAbility(ability); }
public FieldsOfSummerPlane() { this.setName("Plane - Fields of Summer"); this.setExpansionSetCodeForImage("PCA"); // Whenever a player casts a spell, that player may gain 2 life SpellCastAllTriggeredAbility ability = new SpellCastAllTriggeredAbility(Zone.COMMAND, new FieldsOfSummerEffect(), filter, false, SetTargetPointer.PLAYER); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, you may gain 10 life Effect chaosEffect = new GainLifeEffect(10); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public TapestryOfTheAges(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); // {2}, {T}: Draw a card. Activate this ability only if you've cast a noncreature spell this turn. Ability ability = new ActivateIfConditionActivatedAbility( Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new ManaCostsImpl<>("{2}"), PlayerCastNonCreatureSpellCondition.instance); ability.addCost(new TapSourceCost()); this.addAbility(ability, new PlayerCastNonCreatureSpellWatcher()); }
public TheDarkBaronyPlane() { this.setName("Plane - The Dark Barony"); this.setExpansionSetCodeForImage("PCA"); // Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life Ability ability = new PutCardIntoGraveFromAnywhereAllTriggeredAbility(Zone.COMMAND, new LoseLifeTargetEffect(1), false, filter, TargetController.ANY, SetTargetPointer.PLAYER); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, each player dicards a card Effect chaosEffect = new DiscardEachPlayerEffect(TargetController.OPPONENT); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public DisruptingScepter(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}"); // {3}, {tap}: Target player discards a card. Activate this ability only during your turn. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl("{3}"), MyTurnCondition.instance); ability.addTarget(new TargetPlayer()); ability.addCost(new TapSourceCost()); this.addAbility(ability); }
public TheGreatForestPlane() { this.setName("Plane - The Great Forest"); this.setExpansionSetCodeForImage("PCA"); // Each creature assigns combat damage equal to its toughness rather than its power Ability ability = new SimpleStaticAbility(Zone.COMMAND, new TheGreatForestCombatDamageRuleEffect()); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn Effect chaosEffect = new BoostControlledEffect(0, 2, Duration.EndOfTurn); Target chaosTarget = null; Effect chaosEffect2 = new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn); Target chaosTarget2 = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); chaosEffects.add(chaosEffect2); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); chaosTargets.add(chaosTarget2); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public ScepterOfFugue(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{B}{B}"); // {1}{B}, {tap}: Target player discards a card. Activate this ability only during your turn. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new DiscardTargetEffect(1), new ManaCostsImpl("{1}{B}"), MyTurnCondition.instance); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetPlayer()); this.addAbility(ability); }
public AkoumPlane() { this.setName("Plane - Akoum"); this.setExpansionSetCodeForImage("PCA"); // Players may cast enchantment spells as if they had flash SimpleStaticAbility ability = new SimpleStaticAbility(Zone.COMMAND, new CastAsThoughItHadFlashAllEffect(Duration.Custom, filterCard, true)); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, destroy target creature that isn't enchanted Effect chaosEffect = new DestroyTargetEffect("destroy target creature that isn't enchanted"); Target chaosTarget = new TargetCreaturePermanent(filter); List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public EndlessAtlas(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}"); // {2}, {T}: Draw a card. Activate this ability only if you control three or more lands with the same name. Ability ability = new ActivateIfConditionActivatedAbility( Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2), new EndlessAtlasCondition() ); ability.addCost(new TapSourceCost()); this.addAbility(ability); }
public LetheLakePlane() { this.setName("Plane - Lethe Lake"); this.setExpansionSetCodeForImage("PCA"); // At the beginning of your upkeep, put the top ten cards of your libary into your graveyard Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.COMMAND, new PutLibraryIntoGraveTargetEffect(10).setText("that player puts the top 10 cards of their library into their graveyard"), TargetController.ANY, false, true); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, target player puts the top ten cards of his or her library into his or her graveyard Effect chaosEffect = new PutTopCardOfLibraryIntoGraveTargetEffect(10); Target chaosTarget = new TargetPlayer(); List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public TempleElder(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.CLERIC); this.power = new MageInt(1); this.toughness = new MageInt(2); // {tap}: You gain 1 life. Activate this ability only during your turn, before attackers are declared. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(1), new TapSourceCost(), MyTurnBeforeAttackersDeclaredCondition.instance); this.addAbility(ability); }
public TurriIslandPlane() { this.setName("Plane - Turri Island"); this.setExpansionSetCodeForImage("PCA"); // Creature spells cost {2} less to cast. Ability ability = new SimpleStaticAbility(Zone.COMMAND, new TurriIslandEffect(2)); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. Effect chaosEffect = new RevealLibraryPutIntoHandEffect(3, new FilterCreatureCard("creature cards"), Zone.GRAVEYARD); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public GhostTown(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.LAND},""); // {tap}: Add {C}. this.addAbility(new ColorlessManaAbility()); // {0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn. this.addAbility(new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new GenericManaCost(0), new InvertCondition(MyTurnCondition.instance))); }
public HedronFieldsOfAgadeemPlane() { this.setName("Plane - Hedron Fields of Agadeem"); this.setExpansionSetCodeForImage("PCA"); // Creatures with power 7 or greater can't attack or block Ability ability = new SimpleStaticAbility(Zone.COMMAND, new HedronFieldsOfAgadeemRestrictionEffect()); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature with annhilator 1 Effect chaosEffect = new CreateTokenEffect(new EldraziAnnihilatorToken()); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }
public WandOfIth(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{4}"); // {3}, {T}: Target player reveals a card at random from their hand. If it's a land card, that player discards it unless he or she pays 1 life. If it isn't a land card, the player discards it unless he or she pays life equal to its converted mana cost. Activate this ability only during your turn. Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new WandOfIthEffect(), new GenericManaCost(3), MyTurnCondition.instance); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetPlayer()); this.addAbility(ability); }
public TheEonFogPlane() { this.setName("Plane - The Eon Fog"); this.setExpansionSetCodeForImage("PCA"); // All players miss their untap step Ability ability = new SimpleStaticAbility(Zone.COMMAND, new TheEonFogSkipUntapStepEffect(Duration.Custom, true)); this.getAbilities().add(ability); // Active player can roll the planar die: Whenever you roll {CHAOS}, untap all permanents you control Effect chaosEffect = new UntapAllControllerEffect(new FilterControlledPermanent()); Target chaosTarget = null; List<Effect> chaosEffects = new ArrayList<Effect>(); chaosEffects.add(chaosEffect); List<Target> chaosTargets = new ArrayList<Target>(); chaosTargets.add(chaosTarget); ActivateIfConditionActivatedAbility chaosAbility = new ActivateIfConditionActivatedAbility(Zone.COMMAND, new RollPlanarDieEffect(chaosEffects, chaosTargets), new GenericManaCost(0), MainPhaseStackEmptyCondition.instance); chaosAbility.addWatcher(new PlanarRollWatcher()); this.getAbilities().add(chaosAbility); chaosAbility.setMayActivate(TargetController.ANY); this.getAbilities().add(new SimpleStaticAbility(Zone.ALL, new PlanarDieRollCostIncreasingEffect(chaosAbility.getOriginalId()))); } }