diff --git a/.gitattributes b/.gitattributes index 086421a14cc..5c38cedcb67 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7773,6 +7773,7 @@ res/cardsfolder/p/paperfin_rascal.txt svneol=native#text/plain res/cardsfolder/p/paradigm_shift.txt svneol=native#text/plain res/cardsfolder/p/paradise_mantle.txt svneol=native#text/plain res/cardsfolder/p/paradise_plume.txt -text svneol=unset#text/plain +res/cardsfolder/p/paradox_haze.txt -text res/cardsfolder/p/paragon_of_the_amesha.txt svneol=native#text/plain res/cardsfolder/p/parallax_dementia.txt svneol=native#text/plain res/cardsfolder/p/parallax_inhibitor.txt svneol=native#text/plain diff --git a/res/cardsfolder/p/paradox_haze.txt b/res/cardsfolder/p/paradox_haze.txt new file mode 100644 index 00000000000..dc577d4dc77 --- /dev/null +++ b/res/cardsfolder/p/paradox_haze.txt @@ -0,0 +1,11 @@ +Name:Paradox Haze +ManaCost:2 U +Types:Enchantment Aura +K:Enchant player +A:SP$ Attach | Cost$ 2 U | ValidTgts$ Player +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.EnchantedBy | TriggerZones$ Battlefield | FirstUpkeep$ True | Execute$ AddUpkeep | TriggerDescription$ At the beginning of enchanted player's first upkeep each turn, that player gets an additional upkeep step after this step. +SVar:AddUpkeep:AB$ AddPhase | Cost$ 0 | ExtraPhase$ Upkeep +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/paradox_haze.jpg +Oracle:Enchant player\nAt the beginning of enchanted player's first upkeep each turn, that player gets an additional upkeep step after this step. +SetInfo:TSP Uncommon \ No newline at end of file diff --git a/src/main/java/forge/card/trigger/Trigger.java b/src/main/java/forge/card/trigger/Trigger.java index cf75c7aa6a4..08a3c2f5f58 100644 --- a/src/main/java/forge/card/trigger/Trigger.java +++ b/src/main/java/forge/card/trigger/Trigger.java @@ -184,6 +184,13 @@ public abstract class Trigger extends TriggerReplacementBase { } } + if (this.mapParams.containsKey("FirstUpkeep")) { + System.out.println("Upkeep condition: " + phaseHandler.isFirstUpkeep()); + if (!phaseHandler.isFirstUpkeep()) { + return false; + } + } + if (this.mapParams.containsKey("FirstCombat")) { if (!phaseHandler.isFirstCombat()) { return false; diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 24365c461ec..30c87a23148 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -61,6 +61,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { private final transient Stack extraTurns = new Stack(); private final transient Map> extraPhases = new HashMap>(); + private int nUpkeepsThisTurn = 0; private int nCombatsThisTurn = 0; private boolean bPreventCombatDamageThisTurn = false; private int planarDiceRolledthisTurn = 0; @@ -252,6 +253,8 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { break; case UPKEEP: + this.nUpkeepsThisTurn++; + System.out.println("Current upkeep: " + nUpkeepsThisTurn); if (this.getPlayerTurn().hasKeyword("Skip your upkeep step.")) { // Slowtrips all say "on the next turn's upkeep" if there is no // upkeep next turn, the trigger will never occur. @@ -387,6 +390,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { } this.getPlayerTurn().removeKeyword("Skip all combat phases of this turn."); game.getCleanup().executeUntil(this.getNextTurn()); + this.nUpkeepsThisTurn = 0; break; default: @@ -710,6 +714,17 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { return (this.nCombatsThisTurn == 1); } + /** + *

+ * isFirstUpkeep. + *

+ * + * @return a boolean. + */ + public final boolean isFirstUpkeep() { + return (this.nUpkeepsThisTurn == 1); + } + /** *

* passPriority.