From 26d7b1ce7da8479cca42e312e80d13d56cacd7d1 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 08:40:37 +0000 Subject: [PATCH] add Reset (from Legends) --- .gitattributes | 1 + res/cardsfolder/reset.txt | 8 ++++++++ src/forge/CardFactory_Instants.java | 31 +++++++++++++++++++++++++++++ src/forge/Phase.java | 23 +++++++++++++++++++++ 4 files changed, 63 insertions(+) create mode 100644 res/cardsfolder/reset.txt diff --git a/.gitattributes b/.gitattributes index a5fa0f98b8e..9d1bbe68252 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3094,6 +3094,7 @@ res/cardsfolder/repentant_blacksmith.txt -text svneol=native#text/plain res/cardsfolder/reprisal.txt -text svneol=native#text/plain res/cardsfolder/repulse.txt -text svneol=native#text/plain res/cardsfolder/rescind.txt -text svneol=native#text/plain +res/cardsfolder/reset.txt -text svneol=native#text/plain res/cardsfolder/respite.txt -text svneol=native#text/plain res/cardsfolder/restless_apparition.txt -text svneol=native#text/plain res/cardsfolder/restless_bones.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/reset.txt b/res/cardsfolder/reset.txt new file mode 100644 index 00000000000..2b219c4c664 --- /dev/null +++ b/res/cardsfolder/reset.txt @@ -0,0 +1,8 @@ +Name:Reset +ManaCost:U U +Types:Instant +Text:Cast Reset only during an opponent's turn after his or her upkeep step.\r\nUntap all lands you control. +SVar:RemAIDeck:True +SVar:Rarity:Uncommon +SVar:Picture:http://www.wizards.com/global/images/magic/general/reset.jpg +End diff --git a/src/forge/CardFactory_Instants.java b/src/forge/CardFactory_Instants.java index 3ebdfe4d167..af6aa68b755 100644 --- a/src/forge/CardFactory_Instants.java +++ b/src/forge/CardFactory_Instants.java @@ -5088,6 +5088,37 @@ public class CardFactory_Instants { card.addSpellAbility(spell); }//*************** END ************ END ************************** + //*************** START *********** START ************************** + if( cardName.equals("Reset") ) { + /* + * Cast Reset only during an opponent's turn after his or her upkeep step. + * Untap all lands you control. + */ + final SpellAbility spell = new Spell(card) { + private static final long serialVersionUID = 1399682288920959188L; + + @Override + public boolean canPlay() { + String opponent = AllZone.GameAction.getOpponent(card.getController()); + return Phase.canPlayAfterUpkeep() && AllZone.GameAction.isPlayerTurn(opponent); + }//canPlay + + @Override + public boolean canPlayAI() { + return false; + }//canPlayAI + + @Override + public void resolve() { + CardList lands = AllZoneUtil.getPlayerLandsInPlay(card.getController()); + for(Card land:lands) land.untap(); + } + };//SpellAbility + spell.setStackDescription(card.getName() + " - untap all lands you control."); + card.clearSpellAbility(); + card.addSpellAbility(spell); + }//*************** END ************ END ************************** + // -1 means keyword "Cycling" not found if(hasKeyword(card, "Cycling") != -1) { diff --git a/src/forge/Phase.java b/src/forge/Phase.java index 7985d694793..c493d73289c 100644 --- a/src/forge/Phase.java +++ b/src/forge/Phase.java @@ -452,4 +452,27 @@ public class Phase extends MyObservable return validPhases.contains(phase); } + + public static boolean canPlayAfterUpkeep() { + String phase = AllZone.Phase.getPhase(); + ArrayList validPhases = new ArrayList(); + + validPhases.add(Constant.Phase.Draw); + validPhases.add(Constant.Phase.Main1); + validPhases.add(Constant.Phase.Combat_Before_Declare_Attackers_InstantAbility); + validPhases.add(Constant.Phase.Combat_Declare_Attackers); + validPhases.add(Constant.Phase.Combat_Declare_Attackers_InstantAbility); + validPhases.add(Constant.Phase.Combat_Declare_Blockers); + validPhases.add(Constant.Phase.Combat_Declare_Blockers_InstantAbility); + validPhases.add(Constant.Phase.Combat_After_Declare_Blockers); + validPhases.add(Constant.Phase.Combat_FirstStrikeDamage); + validPhases.add(Constant.Phase.Combat_Damage); + validPhases.add(Constant.Phase.Main2); + validPhases.add(Constant.Phase.At_End_Of_Turn); + validPhases.add(Constant.Phase.End_Of_Turn); + validPhases.add(Constant.Phase.Until_End_Of_Turn); + validPhases.add(Constant.Phase.Cleanup); + + return validPhases.contains(phase); + } }