@Override public AtTheEndOfCombatDelayedTriggeredAbility copy() { return new AtTheEndOfCombatDelayedTriggeredAbility(this); }
@Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null) { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(permanent, game)); game.addDelayedTriggeredAbility(delayedAbility, source); return true; } return false; }
InfiniteAuthorityTriggeredAbility() { super(Zone.BATTLEFIELD, new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new InfiniteAuthorityEffect()))); }
public TeferisVeil(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); // Whenever a creature you control attacks, it phases out at end of combat. Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new PhaseOutTargetEffect("it", false))); effect.setText("it phases out at end of combat"); this.addAbility(new AttacksCreatureYouControlTriggeredAbility(effect, false, true)); }
public WallOfTears(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.subtype.add(SubType.WALL); this.power = new MageInt(0); this.toughness = new MageInt(4); // Defender this.addAbility(DefenderAbility.getInstance()); // Whenever Wall of Tears blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); }
public DreadWight(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); this.subtype.add(SubType.ZOMBIE); this.power = new MageInt(3); this.toughness = new MageInt(4); // At end of combat, put a paralyzation counter on each creature blocking or blocked by Dread Wight and tap those creatures. Each of those creatures doesn't untap during its controller's untap step for as long as it has a paralyzation counter on it. Each of those creatures gains "{4}: Remove a paralyzation counter from this creature." this.addAbility(new DreadWightTriggeredAbility( new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility( new DreadWightEffect())))); }
public FickleEfreet(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{R}"); this.subtype.add(SubType.EFREET); this.power = new MageInt(5); this.toughness = new MageInt(2); // Whenever Fickle Efreet attacks or blocks, flip a coin at end of combat. If you lose the flip, an opponent gains control of Fickle Efreet. this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new FickleEfreetChangeControlEffect()), true), false)); }
public KaijinOfTheVanishingTouch(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}"); this.subtype.add(SubType.SPIRIT); this.power = new MageInt(0); this.toughness = new MageInt(3); // Defender this.addAbility(DefenderAbility.getInstance()); // Whenever Kaijin of the Vanishing Touch blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); }
public LowlandBasilisk(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}"); this.subtype.add(SubType.BASILISK); this.power = new MageInt(1); this.toughness = new MageInt(3); // Whenever Lowland Basilisk deals damage to a creature, destroy that creature at end of combat. this.addAbility(new DealsDamageToACreatureTriggeredAbility( new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect("destroy that creature at end of combat")), true), false, false, true)); }
public void exileTokensCreatedAtEndOfCombat(Game game, Ability source) { for (Permanent tokenPermanent : addedTokenPermanents) { ExileTargetEffect exileEffect = new ExileTargetEffect(null, "", Zone.BATTLEFIELD); exileEffect.setTargetPointer(new FixedTarget(tokenPermanent, game)); game.addDelayedTriggeredAbility(new AtTheEndOfCombatDelayedTriggeredAbility(exileEffect), source); } } }
public MarduBlazebringer(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}"); this.subtype.add(SubType.OGRE); this.subtype.add(SubType.WARRIOR); this.power = new MageInt(4); this.toughness = new MageInt(4); // When Mardu Blazebringer attacks or blocks, sacrifice it at end of combat. this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())), false)); }
public CeremonialGuard(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}"); this.subtype.add(SubType.HUMAN); this.subtype.add(SubType.SOLDIER); this.power = new MageInt(3); this.toughness = new MageInt(4); // When Ceremonial Guard attacks or blocks, destroy it at end of combat. this.addAbility(new AttacksOrBlocksTriggeredAbility( new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new DestroySourceEffect())), false)); }
public CrumblingColossus(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{5}"); this.subtype.add(SubType.GOLEM); this.power = new MageInt(7); this.toughness = new MageInt(4); this.addAbility(TrampleAbility.getInstance()); this.addAbility(new AttacksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())), false)); }
public FogElemental(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{U}"); this.subtype.add(SubType.ELEMENTAL); this.power = new MageInt(4); this.toughness = new MageInt(4); // Flying this.addAbility(FlyingAbility.getInstance()); // When Fog Elemental attacks or blocks, sacrifice it at end of combat. this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())), false)); }
public RunawayCarriage(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{4}"); this.subtype.add(SubType.CONSTRUCT); this.power = new MageInt(5); this.toughness = new MageInt(6); // Trample this.addAbility(TrampleAbility.getInstance()); // When Runaway Carriage attacks or blocks, sacrifice it at end of combat. this.addAbility(new AttacksOrBlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new SacrificeSourceEffect())), false)); }
public CinderWall(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{R}"); this.subtype.add(SubType.WALL); this.power = new MageInt(3); this.toughness = new MageInt(3); // Defender this.addAbility(DefenderAbility.getInstance()); // When Cinder Wall blocks, destroy it at end of combat. this.addAbility(new BlocksTriggeredAbility( new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroySourceEffect())), false, false, true )); }
public AetherMembrane(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}"); this.subtype.add(SubType.WALL); this.power = new MageInt(0); this.toughness = new MageInt(5); // Defender this.addAbility(DefenderAbility.getInstance()); // Reach this.addAbility(ReachAbility.getInstance()); // Whenever Aether Membrane blocks a creature, return that creature to its owner's hand at end of combat. Effect effect = new ReturnToHandTargetEffect(); effect.setText("return that creature to its owner's hand at end of combat"); this.addAbility(new BlocksTriggeredAbility(new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(effect)), false, true)); }
public Deathgazer(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}"); this.subtype.add(SubType.LIZARD); this.power = new MageInt(2); this.toughness = new MageInt(2); // Whenever Deathgazer blocks or becomes blocked by a nonblack creature, destroy that creature at end of combat. Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); }
public SerpentineBasilisk(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{G}{G}"); this.subtype.add(SubType.BASILISK); this.power = new MageInt(2); this.toughness = new MageInt(3); // Whenever Serpentine Basilisk deals combat damage to a creature, destroy that creature at end of combat. this.addAbility(new DealsCombatDamageToACreatureTriggeredAbility( new CreateDelayedTriggeredAbilityEffect( new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect("destroy that creature at end of combat")), true), false, true)); // Morph {1}{G}{G} this.addAbility(new MorphAbility(this, new ManaCostsImpl("{1}{G}{G}"))); }
public Abomination(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); this.subtype.add(SubType.HORROR); this.power = new MageInt(2); this.toughness = new MageInt(6); // Whenever Abomination blocks or becomes blocked by a green or white creature, destroy that creature at end of combat. Effect effect = new CreateDelayedTriggeredAbilityEffect(new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()), true); effect.setText("destroy that creature at end of combat"); this.addAbility(new BlocksOrBecomesBlockedTriggeredAbility(effect, filter, false)); }