@Override public ConditionalReplacementEffect copy() { return new ConditionalReplacementEffect(this); } }
@Override public ConditionalAsThoughEffect copy() { return new ConditionalAsThoughEffect(this); } }
@Override public ConditionalContinuousEffect copy() { return new ConditionalContinuousEffect(this); }
@Override public ConditionalOneShotEffect copy() { return new ConditionalOneShotEffect(this); }
@Override public ConditionalGainActivatedAbility copy() { return new ConditionalGainActivatedAbility(this); }
@Override public ConditionalContinuousRuleModifyingEffect copy() { return new ConditionalContinuousRuleModifyingEffect(this); }
@Override public ConditionalRequirementEffect copy() { return new ConditionalRequirementEffect(this); }
@Override public ConditionalActivatedAbility copy() { return new ConditionalActivatedAbility(this); }
@Override public ConditionalInterveningIfTriggeredAbility copy() { return new ConditionalInterveningIfTriggeredAbility(this); }
@Override public ConditionalRestrictionEffect copy() { return new ConditionalRestrictionEffect(this); }
@Override public ConditionalManaEffect copy() { return new ConditionalManaEffect(this); }
@Override public ConditionalTriggeredAbility copy() { return new ConditionalTriggeredAbility(this); }
@Override public boolean checkTrigger(GameEvent event, Game game) { ability.setSourceId(this.getSourceId()); ability.setControllerId(this.getControllerId()); return ability.checkTrigger(event, game); }
@Override public boolean checkTrigger(GameEvent event, Game game) { ability.setSourceId(this.getSourceId()); ability.setControllerId(this.getControllerId()); return ability.checkTrigger(event, game) && condition.apply(game, this); }
@Override public Mana getMana(Game game, Ability source) { return produceMana(false, game, source); }
@Override public List<Mana> getNetMana(Game game) { return new ArrayList<>(conditionalManaEffect.getNetMana(game, this)); } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { if (!initDone) { // if simpleStaticAbility, init won't be called init(source, game); } if (condition.apply(game, source)) { effect.setTargetPointer(this.targetPointer); return effect.applies(event, source, game); } else if (otherwiseEffect != null) { otherwiseEffect.setTargetPointer(this.targetPointer); return otherwiseEffect.applies(event, source, game); } return false; }
@Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { if (conditionState) { effect.setTargetPointer(this.targetPointer); return effect.replaceEvent(event, source, game); } else if (otherwiseEffect != null) { otherwiseEffect.setTargetPointer(this.targetPointer); return otherwiseEffect.replaceEvent(event, source, game); } if (!conditionState && effect.getDuration() == Duration.OneUse) { used = true; } if (!conditionState && effect.getDuration() == Duration.Custom) { this.discard(); } return true; }
@Override public boolean apply(Game game, Ability source) { ConditionalContinuousEffect effect = new ConditionalContinuousEffect( new GainControlTargetEffect(Duration.Custom), SourceOnBattlefieldCondition.instance, "gain control of target creature for as long as {this} remains on the battlefield"); game.addEffect(effect, source); return false; } }
RayneAcademyChancellorTriggeredAbility() { super(Zone.BATTLEFIELD, new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(2), new DrawCardSourceControllerEffect(1), new EnchantedSourceCondition(), "you may draw a card. You may draw an additional card if {this} is enchanted."), true); }