@Override public RemoveDelayedTriggeredAbilityEffect copy() { return new RemoveDelayedTriggeredAbilityEffect(this); }
public GiantOysterLeaveUntapDelayedTriggeredAbility(UUID abilityToCancel) { super(new RemoveAllCountersTargetEffect(CounterType.M1M1), Duration.EndOfGame, true, false); this.addEffect(new RemoveDelayedTriggeredAbilityEffect(abilityToCancel)); }
@Override public boolean apply(Game game, Ability source) { MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null) { //create special action UnlessPaysDelayedEffectAction newAction = new UnlessPaysDelayedEffectAction(); //create delayed triggered ability UUID turnPlayer = affectedPlayersTurn ? getTargetPointer().getFirst(game, source) : source.getControllerId(); effect.setTargetPointer(new FixedTarget(getTargetPointer().getFirst(game, source))); UnlessPaysDelayedEffectTriggeredAbility delayedAbility = new UnlessPaysDelayedEffectTriggeredAbility(turnPlayer, step, effect); delayedAbility.setSpecialActionId(newAction.getId()); UUID delayedAbilityId = game.addDelayedTriggeredAbility(delayedAbility, source); // update special action newAction.addCost(cost); Effect removeEffect = new RemoveDelayedTriggeredAbilityEffect(delayedAbilityId); newAction.addEffect(removeEffect); newAction.addEffect(new RemoveSpecialActionEffect(newAction.getId())); newAction.setSourceId(source.getSourceId()); newAction.setControllerId(getTargetPointer().getFirst(game, source)); removeEffect.setText(sourceObject.getIdName() + " - Pay " + cost.getText() + " to remove the triggered ability."); game.getState().getSpecialActions().add(newAction); return true; } return false; }