diff --git a/.gitattributes b/.gitattributes index 73525163560..9629adb8591 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7768,6 +7768,7 @@ res/cardsfolder/s/savage_twister.txt svneol=native#text/plain res/cardsfolder/s/savannah.txt svneol=native#text/plain res/cardsfolder/s/savannah_lions.txt svneol=native#text/plain res/cardsfolder/s/saving_grasp.txt -text +res/cardsfolder/s/savor_the_moment.txt -text res/cardsfolder/s/savra_queen_of_the_golgari.txt svneol=native#text/plain res/cardsfolder/s/sawback_manticore.txt svneol=native#text/plain res/cardsfolder/s/sawtooth_loon.txt svneol=native#text/plain diff --git a/res/cardsfolder/f/final_fortune.txt b/res/cardsfolder/f/final_fortune.txt index a77d9b6cf0f..a7d925de46c 100644 --- a/res/cardsfolder/f/final_fortune.txt +++ b/res/cardsfolder/f/final_fortune.txt @@ -2,7 +2,7 @@ Name:Final Fortune ManaCost:R R Types:Instant Text:no text -A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | loseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | LoseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/final_fortune.jpg diff --git a/res/cardsfolder/l/last_chance.txt b/res/cardsfolder/l/last_chance.txt index 7c9340f216f..fb5b8bdbe4f 100644 --- a/res/cardsfolder/l/last_chance.txt +++ b/res/cardsfolder/l/last_chance.txt @@ -2,7 +2,7 @@ Name:Last Chance ManaCost:R R Types:Sorcery Text:no text -A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | loseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | LoseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/last_chance.jpg diff --git a/res/cardsfolder/s/savor_the_moment.txt b/res/cardsfolder/s/savor_the_moment.txt new file mode 100644 index 00000000000..c314797b62b --- /dev/null +++ b/res/cardsfolder/s/savor_the_moment.txt @@ -0,0 +1,10 @@ +Name:Savor the Moment +ManaCost:1 U U +Types:Sorcery +Text:no text +A:SP$ AddTurn | Cost$ 1 U U | NumTurns$ 1 | SkipUntap$ True | SpellDescription$ Take an extra turn after this one. Skip the untap step of that turn. +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/savor_the_moment.jpg +SetInfo:SHM|Rare|http://magiccards.info/scans/en/shm/50.jpg +Oracle:Take an extra turn after this one. Skip the untap step of that turn. +End \ No newline at end of file diff --git a/res/cardsfolder/w/warriors_oath.txt b/res/cardsfolder/w/warriors_oath.txt index 76463efbb0e..e0b9bcda4f6 100644 --- a/res/cardsfolder/w/warriors_oath.txt +++ b/res/cardsfolder/w/warriors_oath.txt @@ -2,7 +2,7 @@ Name:Warrior's Oath ManaCost:R R Types:Sorcery Text:no text -A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | loseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +A:SP$ AddTurn | Cost$ R R | NumTurns$ 1 | LoseAtEndStep$ True | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. SVar:RemAIDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/warriors_oath.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java index cd9413a665a..581ba964c02 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryTurns.java @@ -321,9 +321,12 @@ public class AbilityFactoryTurns { if ((tgt == null) || p.canBeTargetedBy(sa)) { for (int i = 0; i < numTurns; i++) { ExtraTurn extra = Singletons.getModel().getGameState().getPhaseHandler().addExtraTurn(p); - if (params.containsKey("loseAtEndStep")) { + if (params.containsKey("LoseAtEndStep")) { extra.setLoseAtEndStep(true); } + if (params.containsKey("SkipUntap")) { + extra.setSkipUntap(true); + } } } } diff --git a/src/main/java/forge/game/phase/EndOfTurn.java b/src/main/java/forge/game/phase/EndOfTurn.java index 855ce6e226e..daf5b42aedf 100644 --- a/src/main/java/forge/game/phase/EndOfTurn.java +++ b/src/main/java/forge/game/phase/EndOfTurn.java @@ -210,7 +210,7 @@ public class EndOfTurn extends Phase implements java.io.Serializable { } Player activePlayer = Singletons.getModel().getGameState().getPhaseHandler().getPlayerTurn(); - if (activePlayer.hasKeyword("At the beginning of the end step, you lose the game.")) { + if (activePlayer.hasKeyword("At the beginning of this turn's end step, you lose the game.")) { final Card source = new Card(); final SpellAbility change = new Ability(source, "0") { @Override @@ -218,8 +218,8 @@ public class EndOfTurn extends Phase implements java.io.Serializable { this.getActivatingPlayer().loseConditionMet(GameLossReason.SpellEffect, ""); } }; - change.setStackDescription("At the beginning of the end step, you lose the game."); - change.setDescription("At the beginning of the end step, you lose the game."); + change.setStackDescription("At the beginning of this turn's end step, you lose the game."); + change.setDescription("At the beginning of this turn's end step, you lose the game."); change.setActivatingPlayer(activePlayer); AllZone.getStack().addSimultaneousStackEntry(change); diff --git a/src/main/java/forge/game/phase/ExtraTurn.java b/src/main/java/forge/game/phase/ExtraTurn.java index 71ad954b889..2e500ad7e5d 100644 --- a/src/main/java/forge/game/phase/ExtraTurn.java +++ b/src/main/java/forge/game/phase/ExtraTurn.java @@ -35,7 +35,7 @@ public class ExtraTurn { private boolean skipUntap = false; /** * TODO: Write javadoc for Constructor. - * @param player + * @param player the player */ public ExtraTurn(Player player) { this.player = player; @@ -66,7 +66,7 @@ public class ExtraTurn { * @param loseAtEndStep the loseAtEndStep to set */ public void setLoseAtEndStep(boolean loseAtEndStep) { - this.loseAtEndStep = loseAtEndStep; + this.loseAtEndStep = loseAtEndStep; } /** diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 2fd746a51de..a7697993003 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -612,10 +612,14 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { AllZone.getHumanPlayer().resetProwl(); AllZone.getComputerPlayer().setLifeLostThisTurn(0); AllZone.getHumanPlayer().setLifeLostThisTurn(0); + for (Player player : AllZone.getPlayersInGame()) { + player.removeKeyword("At the beginning of this turn's end step, you lose the game."); + player.removeKeyword("Skip the untap step of this turn."); + } return getNextActivePlayer(); } - + /** *

* getNextActivePlayer. @@ -632,7 +636,10 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { return getNextActivePlayer(); } if (extraTurn.isLoseAtEndStep()) { - nextTurn.addKeyword("At the beginning of the end step, you lose the game."); + nextTurn.addKeyword("At the beginning of this turn's end step, you lose the game."); + } + if (extraTurn.isSkipUntap()) { + nextTurn.addKeyword("Skip the untap step of this turn."); } return nextTurn; } diff --git a/src/main/java/forge/game/phase/PhaseUtil.java b/src/main/java/forge/game/phase/PhaseUtil.java index 6f995942870..405d49adb3b 100644 --- a/src/main/java/forge/game/phase/PhaseUtil.java +++ b/src/main/java/forge/game/phase/PhaseUtil.java @@ -56,6 +56,9 @@ public class PhaseUtil { p.removeKeyword("Skip your next untap step."); return true; } + if (p.hasKeyword("Skip the untap step of this turn.")) { + return true; + } if (AllZoneUtil.isCardInPlay("Sands of Time") || AllZoneUtil.isCardInPlay("Stasis")) { return true;