- Several cards with MillEffect will never reveal the milled cards now (e.g. Helm of Obedience/Rest in Peace combo, Painters combo)

This commit is contained in:
swordshine
2015-01-21 13:40:15 +00:00
parent 541f28c203
commit 54f23f81a5
6 changed files with 13 additions and 12 deletions

View File

@@ -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);

View File

@@ -1306,10 +1306,10 @@ public class Player extends GameEntity implements Comparable<Player> {
}
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<Player> {
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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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