diff --git a/.gitattributes b/.gitattributes index 8ee79e91110..05756d092d8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -217,6 +217,7 @@ res/cardsfolder/a/ali_baba.txt svneol=native#text/plain res/cardsfolder/a/ali_from_cairo.txt svneol=native#text/plain res/cardsfolder/a/alibans_tower.txt svneol=native#text/plain res/cardsfolder/a/all_hallows_eve.txt svneol=native#text/plain +res/cardsfolder/a/all_in_good_time.txt -text res/cardsfolder/a/all_is_dust.txt svneol=native#text/plain res/cardsfolder/a/all_shall_smolder_in_my_wake.txt -text res/cardsfolder/a/all_suns_dawn.txt svneol=native#text/plain diff --git a/res/cardsfolder/a/all_in_good_time.txt b/res/cardsfolder/a/all_in_good_time.txt new file mode 100644 index 00000000000..bf48976c6c2 --- /dev/null +++ b/res/cardsfolder/a/all_in_good_time.txt @@ -0,0 +1,9 @@ +Name:All in Good Time +ManaCost:no cost +Types:Scheme +Text:no text +T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ GoodTimes | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, take an extra turn after this one. Schemes can't be set in motion that turn. +SVar:GoodTimes:AB$ AddTurn | Cost$ 0 | NumTurns$ 1 | NoSchemes$ True +SVar:Picture:http://www.cardforge.org/fpics/lq_schemes/all_in_good_time.jpg +Oracle:When you set this scheme in motion, take an extra turn after this one. Schemes can't be set in motion that turn. +SetInfo:ARC Common diff --git a/src/main/java/forge/card/ability/effects/AddTurnEffect.java b/src/main/java/forge/card/ability/effects/AddTurnEffect.java index 6ecda9b91f4..42176c6d9e4 100644 --- a/src/main/java/forge/card/ability/effects/AddTurnEffect.java +++ b/src/main/java/forge/card/ability/effects/AddTurnEffect.java @@ -59,6 +59,9 @@ public class AddTurnEffect extends SpellAbilityEffect { if (sa.hasParam("SkipUntap")) { extra.setSkipUntap(true); } + if (sa.hasParam("NoSchemes")) { + extra.setCantSetSchemesInMotion(true); + } } } } diff --git a/src/main/java/forge/game/phase/ExtraTurn.java b/src/main/java/forge/game/phase/ExtraTurn.java index 2e500ad7e5d..d610ed1933a 100644 --- a/src/main/java/forge/game/phase/ExtraTurn.java +++ b/src/main/java/forge/game/phase/ExtraTurn.java @@ -33,6 +33,7 @@ public class ExtraTurn { private Player player = null; private boolean loseAtEndStep = false; private boolean skipUntap = false; + private boolean cantSetSchemesInMotion = false; /** * TODO: Write javadoc for Constructor. * @param player the player @@ -83,4 +84,18 @@ public class ExtraTurn { this.skipUntap = skipUntap; } + /** + * @return true if Schemes can't be played during the extra turn + */ + public boolean isCantSetSchemesInMotion() { + return cantSetSchemesInMotion; + } + + /** + * @param noSchemes set boolean if schemes can't be played this extra turn + */ + public void setCantSetSchemesInMotion(boolean noSchemes) { + this.cantSetSchemesInMotion = noSchemes; + } + } //end class Untap diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 966777b33be..2c9fb6545de 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -62,7 +62,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { private int nCombatsThisTurn = 0; private boolean bPreventCombatDamageThisTurn = false; private int planarDiceRolledthisTurn = 0; - + private Player playerTurn = null; // priority player @@ -540,16 +540,16 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { p.removeKeyword("At the beginning of this turn's end step, you lose the game."); p.removeKeyword("Skip the untap step of this turn."); + p.removeKeyword("Schemes can't be set in motion this turn."); } Player next = getNextActivePlayer(); VField nextField = CMatchUI.SINGLETON_INSTANCE.getFieldViewFor(next); SDisplayUtil.showTab(nextField); - - if(game.getType() == GameType.Planechase) { + + if (game.getType() == GameType.Planechase) { Card p = game.getActivePlane(); - if(p != null) - { + if (p != null) { p.clearControllers(); p.addController(next); game.getAction().controllerChangeZoneCorrection(p); @@ -580,6 +580,9 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { if (extraTurn.isSkipUntap()) { nextTurn.addKeyword("Skip the untap step of this turn."); } + if (extraTurn.isCantSetSchemesInMotion()) { + nextTurn.addKeyword("Schemes can't be set in motion this turn."); + } return nextTurn; } if (nextTurn.skipTurnTimeVault()) { diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 8e7e8e7745a..4e16c286a29 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -225,6 +225,11 @@ public abstract class Player extends GameEntity implements Comparable { } public void setSchemeInMotion() { + for (final Player p : game.getPlayers()) { + if (p.hasKeyword("Schemes can't be set in motion this turn.")) { + return; + } + } // Replacement effects final HashMap repRunParams = new HashMap();