From 54f23f81a5fbaee8afd2049331cfaa323cd6038e Mon Sep 17 00:00:00 2001 From: swordshine Date: Wed, 21 Jan 2015 13:40:15 +0000 Subject: [PATCH] - Several cards with MillEffect will never reveal the milled cards now (e.g. Helm of Obedience/Rest in Peace combo, Painters combo) --- .../main/java/forge/game/ability/effects/MillEffect.java | 8 +++++++- forge-game/src/main/java/forge/game/player/Player.java | 9 ++------- forge-gui/res/cardsfolder/g/grindstone.txt | 2 +- forge-gui/res/cardsfolder/h/helm_of_obedience.txt | 2 +- forge-gui/res/cardsfolder/m/mesmeric_orb.txt | 2 +- forge-gui/res/cardsfolder/u/uba_mask.txt | 2 +- 6 files changed, 13 insertions(+), 12 deletions(-) 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 bf9946b0cc2..d7b84abe727 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 @@ -19,6 +19,7 @@ public class MillEffect extends SpellAbilityEffect { final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa); final boolean bottom = sa.hasParam("FromBottom"); final boolean facedown = sa.hasParam("ExileFaceDown"); + final boolean reveal = !sa.hasParam("NoReveal"); if (sa.hasParam("ForgetOtherRemembered")) { source.clearRemembered(); @@ -39,7 +40,12 @@ public class MillEffect extends SpellAbilityEffect { continue; } } - final CardCollectionView milled = p.mill(numCards, destination, bottom, facedown); + final CardCollectionView milled = p.mill(numCards, destination, bottom); + // Reveal the milled cards, so players don't have to manually inspect the + // graveyard to figure out which ones were milled. + if (!facedown && reveal) { // do not reveal when exiling face down + p.getGame().getAction().reveal(milled, p, false); + } 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 c5ecd426e59..d1782bda0dd 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1306,10 +1306,10 @@ public class Player extends GameEntity implements Comparable { } public final CardCollectionView mill(final int n) { - return mill(n, ZoneType.Graveyard, false, false); + return mill(n, ZoneType.Graveyard, false); } public final CardCollectionView mill(final int n, final ZoneType zone, - final boolean bottom, final boolean facedown) { + final boolean bottom) { final CardCollectionView lib = getCardsIn(ZoneType.Library); final CardCollection milled = new CardCollection(); @@ -1325,11 +1325,6 @@ public class Player extends GameEntity implements Comparable { milled.add(game.getAction().moveTo(destination, lib.getFirst())); } } - // Reveal the milled cards, so players don't have to manually inspect the - // graveyard to figure out which ones were milled. - if (!facedown) { // do not reveal when exiling face down - game.getAction().reveal(milled, this, false); - } return milled; } diff --git a/forge-gui/res/cardsfolder/g/grindstone.txt b/forge-gui/res/cardsfolder/g/grindstone.txt index a9641ab9e20..509da823a43 100644 --- a/forge-gui/res/cardsfolder/g/grindstone.txt +++ b/forge-gui/res/cardsfolder/g/grindstone.txt @@ -4,7 +4,7 @@ Types:Artifact A:AB$ Repeat | Cost$ 3 T | ValidTgts$ Player | RepeatSubAbility$ DBCleanAndGrind | MaxRepeat$ MaxRepeats | RepeatCheckSVar$ MilledSharesColor | References$ MilledSharesColor,MaxRepeats | RepeatSVarCompare$ EQ2 | SubAbility$ DBCleanup | SpellDescription$ Target player puts the top two cards of his or her library into his or her graveyard. If both cards share a color, repeat this process. | StackDescription$ SpellDescription SVar:DBCleanAndGrind:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBPeek SVar:DBPeek:DB$ PeekAndReveal | Defined$ Targeted | PeekAmount$ 2 | NoPeek$ True | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBGrind -SVar:DBGrind:DB$ Mill | NumCards$ 2 | Defined$ Targeted +SVar:DBGrind:DB$ Mill | NumCards$ 2 | Defined$ Targeted | NoReveal$ True SVar:MaxRepeats:TargetedPlayer$CardsInLibrary SVar:MilledSharesColor:RememberedLKI$Valid Card.SharesColorWith Remembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/h/helm_of_obedience.txt b/forge-gui/res/cardsfolder/h/helm_of_obedience.txt index 0f5fe954087..9d59dc8ff11 100644 --- a/forge-gui/res/cardsfolder/h/helm_of_obedience.txt +++ b/forge-gui/res/cardsfolder/h/helm_of_obedience.txt @@ -4,7 +4,7 @@ Types:Artifact #Doesn't interact properly with Myr Welder right now A:AB$ Repeat | Cost$ XCantBe0 X T | ValidTgts$ Opponent | MaxRepeat$ MaxRepeats | RepeatSubAbility$ DBCleanBeforeRepeat | RepeatCheckSVar$ AccumlatedMilled | RepeatSVarCompare$ LTX | AILogic$ MaxX | StackDescription$ Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0. | SpellDescription$ Target opponent puts cards from the top of his or her library into his or her graveyard until a creature card or X cards are put into that graveyard this way, whichever comes first. If a creature card is put into that graveyard this way, sacrifice Helm of Obedience and put that card onto the battlefield under your control. X can't be 0. | SubAbility$ DBSacHelm SVar:DBCleanBeforeRepeat:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBMill -SVar:DBMill:DB$ Mill | NumCards$ 1 | RememberMilled$ True | Defined$ Targeted | SubAbility$ DBAccumulateX +SVar:DBMill:DB$ Mill | NumCards$ 1 | RememberMilled$ True | Defined$ Targeted | SubAbility$ DBAccumulateX | NoReveal$ True SVar:DBAccumulateX:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ AccumlatedMilled/Plus.1 | ConditionCheckSVar$ MilledCard | ConditionSVarCompare$ EQ1 | SubAbility$ DBMilledCreature SVar:DBMilledCreature:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ MilledCreature | ConditionSVarCompare$ EQ1 | SubAbility$ DBEmptyLibrary SVar:DBEmptyLibrary:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ TargetedLibrary | ConditionSVarCompare$ EQ0 diff --git a/forge-gui/res/cardsfolder/m/mesmeric_orb.txt b/forge-gui/res/cardsfolder/m/mesmeric_orb.txt index e8cfd1a0407..d08411cdd97 100644 --- a/forge-gui/res/cardsfolder/m/mesmeric_orb.txt +++ b/forge-gui/res/cardsfolder/m/mesmeric_orb.txt @@ -2,7 +2,7 @@ Name:Mesmeric Orb ManaCost:2 Types:Artifact T:Mode$ Untaps | ValidCard$ Card | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ Whenever a permanent becomes untapped, that permanent's controller puts the top card of his or her library into his or her graveyard. -SVar:TrigMill:AB$Mill | Cost$ 0 | Defined$ TriggeredCardController | NumCards$ 1 +SVar:TrigMill:AB$ Mill | Cost$ 0 | Defined$ TriggeredCardController | NumCards$ 1 | NoReveal$ True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mesmeric_orb.jpg Oracle:Whenever a permanent becomes untapped, that permanent's controller puts the top card of his or her library into his or her graveyard. diff --git a/forge-gui/res/cardsfolder/u/uba_mask.txt b/forge-gui/res/cardsfolder/u/uba_mask.txt index 13d12819c67..8621641f7a4 100644 --- a/forge-gui/res/cardsfolder/u/uba_mask.txt +++ b/forge-gui/res/cardsfolder/u/uba_mask.txt @@ -2,7 +2,7 @@ Name:Uba Mask ManaCost:4 Types:Artifact R:Event$ Draw | ActiveZones$ Battlefield | ValidPlayer$ Player | ReplaceWith$ ExileTop | Description$ If a player would draw a card, that player exiles that card face up instead. -SVar:ExileTop:AB$ Mill | Cost$ 0 | Defined$ ReplacedPlayer | NumCards$ 1 | Destination$ Exile | RememberMilled$ True +SVar:ExileTop:AB$ Mill | Cost$ 0 | Defined$ ReplacedPlayer | NumCards$ 1 | Destination$ Exile | RememberMilled$ True | NoReveal$ True S:Mode$ Continuous | AffectedZone$ Exile | Affected$ Card.IsRemembered | AddHiddenKeyword$ May be played | Description$ Each player may play cards he or she exiled with CARDNAME this turn. T:Mode$ Phase | Phase$ Cleanup | Execute$ TrigReset | Static$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReset | Static$ True