diff --git a/.gitattributes b/.gitattributes index 4a7c5ef0ec0..195e4161cf9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14013,6 +14013,7 @@ forge-gui/res/cardsfolder/t/threaten.txt svneol=native#text/plain forge-gui/res/cardsfolder/t/three_dreams.txt -text forge-gui/res/cardsfolder/t/three_tragedies.txt svneol=native#text/plain forge-gui/res/cardsfolder/t/three_visits.txt svneol=native#text/plain +forge-gui/res/cardsfolder/t/three_wishes.txt -text forge-gui/res/cardsfolder/t/thresher_beast.txt svneol=native#text/plain forge-gui/res/cardsfolder/t/thrill_kill_assassin.txt -text forge-gui/res/cardsfolder/t/thrill_of_the_hunt.txt svneol=native#text/plain diff --git a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java index 76d3191c57d..bf9946b0cc2 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java @@ -18,6 +18,7 @@ public class MillEffect extends SpellAbilityEffect { final Card source = sa.getHostCard(); final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); final boolean bottom = sa.hasParam("FromBottom"); + final boolean facedown = sa.hasParam("ExileFaceDown"); if (sa.hasParam("ForgetOtherRemembered")) { source.clearRemembered(); @@ -38,8 +39,8 @@ public class MillEffect extends SpellAbilityEffect { continue; } } - final CardCollectionView milled = p.mill(numCards, destination, bottom); - if (destination.equals(ZoneType.Exile) && sa.hasParam("ExileFaceDown")) { + final CardCollectionView milled = p.mill(numCards, destination, bottom, facedown); + if (destination.equals(ZoneType.Exile) && facedown) { for (final Card c : milled) { c.setState(CardStateName.FaceDown, true); } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 53d12e04026..d52bd9e4f23 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1303,9 +1303,10 @@ public class Player extends GameEntity implements Comparable { } public final CardCollectionView mill(final int n) { - return mill(n, ZoneType.Graveyard, false); + return mill(n, ZoneType.Graveyard, false, false); } - public final CardCollectionView mill(final int n, final ZoneType zone, final boolean bottom) { + public final CardCollectionView mill(final int n, final ZoneType zone, + final boolean bottom, final boolean facedown) { final CardCollectionView lib = getCardsIn(ZoneType.Library); final CardCollection milled = new CardCollection(); @@ -1323,7 +1324,9 @@ public class Player extends GameEntity implements Comparable { } // Reveal the milled cards, so players don't have to manually inspect the // graveyard to figure out which ones were milled. - game.getAction().reveal(milled, this, false); + if (!facedown) { // do not reveal when exiling face down + game.getAction().reveal(milled, this, false); + } return milled; } diff --git a/forge-gui/res/cardsfolder/t/three_wishes.txt b/forge-gui/res/cardsfolder/t/three_wishes.txt new file mode 100644 index 00000000000..97adad226ab --- /dev/null +++ b/forge-gui/res/cardsfolder/t/three_wishes.txt @@ -0,0 +1,13 @@ +Name:Three Wishes +ManaCost:1 U U +Types:Instant +A:SP$ Mill | Cost$ 1 U U | NumCards$ 3 | Destination$ Exile | ExileFaceDown$ True | RememberMilled$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top three cards of your library face down. You may look at those cards for as long as they remain exiled. Until your next turn, you may play those cards. At the beginning of your next upkeep, put any of those cards you didn't play into your graveyard. +SVar:DBEffect:DB$ Effect | Name$ Three Wish Effect | RememberObjects$ Remembered | StaticAbilities$ STCanLookAtMayPlay | Duration$ UntilYourNextTurn | SubAbility$ DBDelTrig +SVar:STCanLookAtMayPlay:Mode$ Continuous | MayLookAt$ True | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may look at those cards for as long as they remain exiled. Until your next turn, you may play those cards. +SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ MoveToYard | RememberObjects$ Remembered | TriggerDescription$ At the beginning of your next upkeep, put any of those cards you didn't play into your graveyard. | SubAbility$ DBCleanup +SVar:MoveToYard:DB$ ChangeZone | Origin$ Exile | Destination$ Graveyard | Defined$ DelayTriggerRemembered +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemAIDeck:True +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/three_wishes.jpg +Oracle:Exile the top three cards of your library face down. You may look at those cards for as long as they remain exiled. Until your next turn, you may play those cards. At the beginning of your next upkeep, put any of those cards you didn't play into your graveyard.