Resolve "SkipPhase needs better Duration$ for "their next turn""

This commit is contained in:
Bug Hunter
2022-03-19 08:51:33 +00:00
committed by Michael Kamensky
parent b317e46353
commit ceff5b3e06
4 changed files with 28 additions and 6 deletions

View File

@@ -744,6 +744,13 @@ public abstract class SpellAbilityEffect {
} else {
game.getEndOfTurn().addUntilEnd(sa.getActivatingPlayer(), until);
}
} else if ("UntilTheEndOfTargetedNextTurn".equals(duration)) {
Player targeted = sa.getTargets().getFirstTargetedPlayer();
if (game.getPhaseHandler().isPlayerTurn(targeted)) {
game.getEndOfTurn().registerUntilEnd(targeted, until);
} else {
game.getEndOfTurn().addUntilEnd(targeted, until);
}
} else if (duration != null && duration.startsWith("UntilAPlayerCastSpell")) {
game.getStack().addCastCommand(duration.split(" ")[1], until);
} else if ("UntilHostLeavesPlay".equals(duration)) {

View File

@@ -115,9 +115,24 @@ public class SkipPhaseEffect extends SpellAbilityEffect {
}
eff.addReplacementEffect(re);
if (sa.hasParam("Start")) {
final GameCommand startEffect = new GameCommand() {
private static final long serialVersionUID = -5861749814760561373L;
@Override
public void run() {
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
game.getAction().moveTo(ZoneType.Command, eff, sa, AbilityKey.newMap());
eff.updateStateForView();
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
};
game.getUpkeep().addUntil(player, startEffect);
} else {
game.getTriggerHandler().suppressMode(TriggerType.ChangesZone);
game.getAction().moveTo(ZoneType.Command, eff, sa, AbilityKey.newMap());
eff.updateStateForView();
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
}
}
}

View File

@@ -1,6 +1,6 @@
Name:Empty City Ruse
ManaCost:W
Types:Sorcery
A:SP$ SkipPhase | Cost$ W | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Phase$ Combat | Duration$ UntilTheEndOfYourNextTurn | SpellDescription$ Target opponent skips all combat phases of their next turn.
A:SP$ SkipPhase | Cost$ W | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Phase$ Combat | Start$ FromNext | Duration$ UntilTheEndOfTargetedNextTurn | SpellDescription$ Target opponent skips all combat phases of their next turn.
AI:RemoveDeck:All
Oracle:Target opponent skips all combat phases of their next turn.

View File

@@ -1,6 +1,6 @@
Name:False Peace
ManaCost:W
Types:Sorcery
A:SP$ SkipPhase | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | Phase$ Combat | Duration$ UntilTheEndOfYourNextTurn | SpellDescription$ Target player skips all combat phases of their next turn.
A:SP$ SkipPhase | Cost$ W | ValidTgts$ Player | TgtPrompt$ Select target player | Phase$ Combat | Start$ FromNext | Duration$ UntilTheEndOfTargetedNextTurn | SpellDescription$ Target player skips all combat phases of their next turn.
AI:RemoveDeck:All
Oracle:Target player skips all combat phases of their next turn.