[MOM] Implement Complete the Circuit

This commit is contained in:
theelk801 2023-04-17 18:26:27 -04:00
parent 7160a907c9
commit a7a45763b3
3 changed files with 99 additions and 1 deletions

View file

@ -1,6 +1,7 @@
package mage.abilities.common.delayed;
import mage.abilities.DelayedTriggeredAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.CopyTargetSpellEffect;
import mage.constants.Duration;
import mage.filter.FilterSpell;
@ -16,19 +17,26 @@ import mage.target.targetpointer.FixedTarget;
public class CopyNextSpellDelayedTriggeredAbility extends DelayedTriggeredAbility {
private final FilterSpell filter;
private final String rule;
public CopyNextSpellDelayedTriggeredAbility() {
this(StaticFilters.FILTER_SPELL_INSTANT_OR_SORCERY);
}
public CopyNextSpellDelayedTriggeredAbility(FilterSpell filter) {
super(new CopyTargetSpellEffect(true), Duration.EndOfTurn);
this(filter, new CopyTargetSpellEffect(true), null);
}
public CopyNextSpellDelayedTriggeredAbility(FilterSpell filter, Effect effect, String rule) {
super(effect, Duration.EndOfTurn);
this.filter = filter;
this.rule = rule;
}
private CopyNextSpellDelayedTriggeredAbility(final CopyNextSpellDelayedTriggeredAbility ability) {
super(ability);
this.filter = ability.filter;
this.rule = ability.rule;
}
@Override
@ -50,12 +58,16 @@ public class CopyNextSpellDelayedTriggeredAbility extends DelayedTriggeredAbilit
if (spell == null || !filter.match(spell, getControllerId(), this, game)) {
return false;
}
this.getEffects().setValue("spellCast", spell);
this.getEffects().setTargetPointer(new FixedTarget(event.getTargetId()));
return true;
}
@Override
public String getRule() {
if (rule != null && !rule.isEmpty()) {
return rule;
}
return "When you cast your next " + filter.getMessage() + " this turn, "
+ "copy that spell. You may choose new targets for the copy.";
}