From 1ef9c8aece30ff3f6de42cd78b044a84c677a9a7 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 7 Mar 2012 15:48:09 +0000 Subject: [PATCH] - Added the keyword "You may look at this card.". - Added Intet, the Dreamer. --- .gitattributes | 1 + res/cardsfolder/i/intet_the_dreamer.txt | 17 +++++++++++++++ res/cardsfolder/m/minds_desire.txt | 2 +- src/main/java/arcane/ui/CardPanel.java | 2 +- src/main/java/forge/GameAction.java | 3 ++- .../abilityfactory/AbilityFactoryPump.java | 4 +++- .../card/cardfactory/CardFactoryUtil.java | 3 +++ .../forge/control/match/ControlField.java | 21 ++++++++----------- 8 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 res/cardsfolder/i/intet_the_dreamer.txt diff --git a/.gitattributes b/.gitattributes index 304bf32bead..b4ae414487c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4408,6 +4408,7 @@ res/cardsfolder/i/insurrection.txt svneol=native#text/plain res/cardsfolder/i/intangible_virtue.txt -text res/cardsfolder/i/interdict.txt -text res/cardsfolder/i/intervene.txt svneol=native#text/plain +res/cardsfolder/i/intet_the_dreamer.txt -text res/cardsfolder/i/intimidation.txt svneol=native#text/plain res/cardsfolder/i/intimidation_bolt.txt -text svneol=unset#text/plain res/cardsfolder/i/intimidator_initiate.txt svneol=native#text/plain diff --git a/res/cardsfolder/i/intet_the_dreamer.txt b/res/cardsfolder/i/intet_the_dreamer.txt new file mode 100644 index 00000000000..4ec9a46f403 --- /dev/null +++ b/res/cardsfolder/i/intet_the_dreamer.txt @@ -0,0 +1,17 @@ +Name:Intet, the Dreamer +ManaCost:3 U R G +Types:Legendary Creature Dragon +Text:no text +PT:6/6 +K:Flying +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may pay 2 U. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield. +SVar:TrigExile:AB$ ChangeZone | Cost$ 2 U | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | ExileFaceDown$ True | RememberChanged$ True | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ You may look at this card. | PumpZone$ Exile | SubAbility$ DBPump2 | Permanent$ True +SVar:DBPump2:DB$ Pump | Defined$ Remembered | KW$ May be played without paying its mana cost | PumpZone$ Exile | UntilHostLeavesPlay$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/intet_the_dreamer.jpg +SetInfo:COM|Rare|http://magiccards.info/scans/en/cmd/204.jpg +SetInfo:PLC|Rare|http://magiccards.info/scans/en/pc/158.jpg +Oracle:Flying\nWhenever Intet, the Dreamer deals combat damage to a player, you may pay {2}{U}. If you do, exile the top card of your library face down. You may look at that card for as long as it remains exiled. You may play that card without paying its mana cost for as long as Intet remains on the battlefield. +End \ No newline at end of file diff --git a/res/cardsfolder/m/minds_desire.txt b/res/cardsfolder/m/minds_desire.txt index f05f5de2851..49d82e9c35c 100644 --- a/res/cardsfolder/m/minds_desire.txt +++ b/res/cardsfolder/m/minds_desire.txt @@ -5,7 +5,7 @@ Text:no text K:Storm A:SP$ Shuffle | Cost$ 4 U U | SubAbility$ DBExile | SpellDescription$ Shuffle your library. Then exile the top card of your library. Until end of turn, you may play that card without paying its mana cost. (If it has X in its mana cost, X is 0.) SVar:DBExile:DB$ ChangeZone | Defined$ TopOfLibrary | Origin$ Library | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPump -SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ HIDDEN May be played without paying its mana cost | PumpZone$ Exile | SubAbility$ DBCleanup +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ May be played without paying its mana cost | PumpZone$ Exile | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/minds_desire.jpg diff --git a/src/main/java/arcane/ui/CardPanel.java b/src/main/java/arcane/ui/CardPanel.java index f51a231d4cf..a4d4bde67bc 100644 --- a/src/main/java/arcane/ui/CardPanel.java +++ b/src/main/java/arcane/ui/CardPanel.java @@ -590,7 +590,7 @@ public class CardPanel extends JPanel implements CardContainer { return; } - if (card.isFaceDown()) { + if (card.isFaceDown() && !card.hasKeyword("You may look at this card.")) { this.titleText.setText(""); this.showCastingCost = false; } else { diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 44485f99b58..90657f49649 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -211,8 +211,9 @@ public class GameAction { copied.setTimestamp(AllZone.getNextTimestamp()); for (String s : copied.getKeyword()) { - if (s.startsWith("May be played")) { + if (s.startsWith("May be played") || s.startsWith("You may look at this card.")) { copied.removeAllExtrinsicKeyword(s); + copied.removeHiddenExtrinsicKeyword(s); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index 129d43b9c57..25736d34fc8 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -1189,10 +1189,12 @@ public class AbilityFactoryPump { AllZone.getEndOfCombat().addUntil(untilEOT); } else if (this.params.containsKey("UntilYourNextUpkeep")) { AllZone.getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT); + } else if (params.containsKey("UntilHostLeavesPlay")) { + sa.getSourceCard().addLeavesPlayCommand(untilEOT); } else if (this.params.containsKey("UntilLoseControlOfHost")) { sa.getSourceCard().addLeavesPlayCommand(untilEOT); sa.getSourceCard().addChangeControllerCommand(untilEOT); - } else { + } else { AllZone.getEndOfTurn().addUntil(untilEOT); } } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index e7119b40e3a..21e9c2ccafd 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -2443,6 +2443,9 @@ public class CardFactoryUtil { return true; } } + if (c.hasKeyword("You may look at this card.")) { + return true; + } if (c.isLand() && (c.hasKeyword("May be played") || c.hasKeyword("May be played by your opponent") || c diff --git a/src/main/java/forge/control/match/ControlField.java b/src/main/java/forge/control/match/ControlField.java index 921b4ac703c..7b689c2baaa 100644 --- a/src/main/java/forge/control/match/ControlField.java +++ b/src/main/java/forge/control/match/ControlField.java @@ -247,8 +247,6 @@ public class ControlField { final Iterable myIterable = YieldUtils.toIterable(c); final ArrayList choices = YieldUtils.toArrayList(myIterable); - // System.out.println("immediately after: "+choices); - // Iterator iter = myIterable.iterator(); final ArrayList choices2 = new ArrayList(); @@ -257,24 +255,23 @@ public class ControlField { } else { for (int i = 0; i < choices.size(); i++) { final Card crd = choices.get(i); - // System.out.println(crd+": "+crd.isFaceDown()); if (crd.isFaceDown()) { - final Card faceDown = new Card(); - faceDown.setName("Face Down"); - choices2.add(faceDown); - // System.out.println("Added: "+faceDown); + if (!crd.hasKeyword("You may look at this card.")) { + final Card faceDown = new Card(); + faceDown.setName("Face Down"); + choices2.add(faceDown); + } else { + final Card faceDown = AllZone.getCardFactory().copyCard(crd); + faceDown.turnFaceUp(); + choices2.add(faceDown); + } } else { choices2.add(crd); } } - // System.out.println("Face down cards replaced: "+choices2); final Card choice = (Card) GuiUtils.chooseOneOrNone(this.title, choices2.toArray()); if (choice != null) { this.doAction(choice); - /* - * Card choice = GuiUtils.getChoiceOptional(title, iter); if - * (choice != null) doAction(choice); - */ } } }