implement [MH3] Ashling, Flame Dancer

This commit is contained in:
Susucre 2024-06-05 21:22:38 +02:00
parent ed031b476d
commit 48ffa3ba84
3 changed files with 78 additions and 9 deletions

View file

@ -4,6 +4,7 @@ import mage.abilities.Ability;
import mage.abilities.Mode;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.Effects;
import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
import mage.game.Game;
@ -16,22 +17,22 @@ import mage.watchers.common.AbilityResolvedWatcher;
public class IfAbilityHasResolvedXTimesEffect extends OneShotEffect {
private final int resolutionNumber;
private final Effect effect;
private final Effects effects;
public IfAbilityHasResolvedXTimesEffect(int resolutionNumber, Effect effect) {
this(effect.getOutcome(), resolutionNumber, effect);
}
public IfAbilityHasResolvedXTimesEffect(Outcome outcome, int resolutionNumber, Effect effect) {
public IfAbilityHasResolvedXTimesEffect(Outcome outcome, int resolutionNumber, Effect... effect) {
super(outcome);
this.resolutionNumber = resolutionNumber;
this.effect = effect;
this.effects = new Effects(effect);
}
private IfAbilityHasResolvedXTimesEffect(final IfAbilityHasResolvedXTimesEffect effect) {
super(effect);
this.resolutionNumber = effect.resolutionNumber;
this.effect = effect.effect;
this.effects = effect.effects.copy();
}
@Override
@ -44,11 +45,16 @@ public class IfAbilityHasResolvedXTimesEffect extends OneShotEffect {
if (AbilityResolvedWatcher.getResolutionCount(game, source) != resolutionNumber) {
return false;
}
if (effect instanceof OneShotEffect) {
return effect.apply(game, source);
boolean result = false;
for (Effect effect : effects) {
if (effect instanceof OneShotEffect) {
result |= effect.apply(game, source);
continue;
}
game.addEffect((ContinuousEffect) effect, source);
result = true;
}
game.addEffect((ContinuousEffect) effect, source);
return true;
return result;
}
@Override
@ -57,6 +63,6 @@ public class IfAbilityHasResolvedXTimesEffect extends OneShotEffect {
return staticText;
}
return "if this is the " + CardUtil.numberToOrdinalText(resolutionNumber) +
" time this ability has resolved this turn, " + effect.getText(mode);
" time this ability has resolved this turn, " + effects.getText(mode);
}
}