mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
- 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:
@@ -19,6 +19,7 @@ public class MillEffect extends SpellAbilityEffect {
|
|||||||
final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa);
|
final int numCards = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumCards"), sa);
|
||||||
final boolean bottom = sa.hasParam("FromBottom");
|
final boolean bottom = sa.hasParam("FromBottom");
|
||||||
final boolean facedown = sa.hasParam("ExileFaceDown");
|
final boolean facedown = sa.hasParam("ExileFaceDown");
|
||||||
|
final boolean reveal = !sa.hasParam("NoReveal");
|
||||||
|
|
||||||
if (sa.hasParam("ForgetOtherRemembered")) {
|
if (sa.hasParam("ForgetOtherRemembered")) {
|
||||||
source.clearRemembered();
|
source.clearRemembered();
|
||||||
@@ -39,7 +40,12 @@ public class MillEffect extends SpellAbilityEffect {
|
|||||||
continue;
|
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) {
|
if (destination.equals(ZoneType.Exile) && facedown) {
|
||||||
for (final Card c : milled) {
|
for (final Card c : milled) {
|
||||||
c.setState(CardStateName.FaceDown, true);
|
c.setState(CardStateName.FaceDown, true);
|
||||||
|
|||||||
@@ -1306,10 +1306,10 @@ public class Player extends GameEntity implements Comparable<Player> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public final CardCollectionView mill(final int n) {
|
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,
|
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 CardCollectionView lib = getCardsIn(ZoneType.Library);
|
||||||
final CardCollection milled = new CardCollection();
|
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()));
|
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;
|
return milled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
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:DBCleanAndGrind:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBPeek
|
||||||
SVar:DBPeek:DB$ PeekAndReveal | Defined$ Targeted | PeekAmount$ 2 | NoPeek$ True | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBGrind
|
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:MaxRepeats:TargetedPlayer$CardsInLibrary
|
||||||
SVar:MilledSharesColor:RememberedLKI$Valid Card.SharesColorWith Remembered
|
SVar:MilledSharesColor:RememberedLKI$Valid Card.SharesColorWith Remembered
|
||||||
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Types:Artifact
|
|||||||
#Doesn't interact properly with Myr Welder right now
|
#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
|
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: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: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: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
|
SVar:DBEmptyLibrary:DB$ StoreSVar | SVar$ AccumlatedMilled | Type$ CountSVar | Expression$ X | ConditionCheckSVar$ TargetedLibrary | ConditionSVarCompare$ EQ0
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Mesmeric Orb
|
|||||||
ManaCost:2
|
ManaCost:2
|
||||||
Types:Artifact
|
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.
|
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:RemRandomDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/mesmeric_orb.jpg
|
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.
|
Oracle:Whenever a permanent becomes untapped, that permanent's controller puts the top card of his or her library into his or her graveyard.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Name:Uba Mask
|
|||||||
ManaCost:4
|
ManaCost:4
|
||||||
Types:Artifact
|
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.
|
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.
|
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$ Phase | Phase$ Cleanup | Execute$ TrigReset | Static$ True
|
||||||
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReset | Static$ True
|
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigReset | Static$ True
|
||||||
|
|||||||
Reference in New Issue
Block a user