diff --git a/.gitattributes b/.gitattributes index b7cc6db081e..adabdc2c6cc 100644 --- a/.gitattributes +++ b/.gitattributes @@ -651,6 +651,7 @@ res/cardsfolder/a/aven_flock.txt svneol=native#text/plain res/cardsfolder/a/aven_fogbringer.txt svneol=native#text/plain res/cardsfolder/a/aven_liberator.txt -text res/cardsfolder/a/aven_mimeomancer.txt -text svneol=unset#text/plain +res/cardsfolder/a/aven_mindcensor.txt -text res/cardsfolder/a/aven_redeemer.txt svneol=native#text/plain res/cardsfolder/a/aven_riftwatcher.txt svneol=native#text/plain res/cardsfolder/a/aven_shrine.txt -text diff --git a/res/cardsfolder/a/aven_mindcensor.txt b/res/cardsfolder/a/aven_mindcensor.txt new file mode 100644 index 00000000000..a3bdd0bcf83 --- /dev/null +++ b/res/cardsfolder/a/aven_mindcensor.txt @@ -0,0 +1,10 @@ +Name:Aven Mindcensor +ManaCost:2 W +Types:Creature Bird Wizard +PT:2/1 +K:Flash +K:Flying +S:Mode$ Continuous | Affected$ Player.Opponent | AddKeyword$ LimitSearchLibrary | Description$ If an opponent would search a library, that player searches the top four cards of that library instead. +SVar:Picture:http://www.wizards.com/global/images/magic/general/aven_mindcensor.jpg +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying\nIf an opponent would search a library, that player searches the top four cards of that library instead. +SetInfo:FUT Uncommon \ No newline at end of file diff --git a/res/cardsfolder/c/counterbore.txt b/res/cardsfolder/c/counterbore.txt index c45859923bb..bd7b459580b 100644 --- a/res/cardsfolder/c/counterbore.txt +++ b/res/cardsfolder/c/counterbore.txt @@ -2,7 +2,7 @@ Name:Counterbore ManaCost:3 U U Types:Instant A:SP$ Counter | Cost$ 3 U U | TargetType$ Spell | ValidTgts$ Card | RememberCountered$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Counter target spell. Search its controller's graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library. -SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Defined$ TargetedController | Origin$ Graveyard,Hand,Library | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Defined$ TargetedController | Origin$ Graveyard,Hand,Library | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/counterbore.jpg Oracle:Counter target spell. Search its controller's graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/c/cranial_extraction.txt b/res/cardsfolder/c/cranial_extraction.txt index efb6d835cd3..49a79a93d20 100644 --- a/res/cardsfolder/c/cranial_extraction.txt +++ b/res/cardsfolder/c/cranial_extraction.txt @@ -2,7 +2,7 @@ Name:Cranial Extraction ManaCost:3 B Types:Sorcery A:SP$ NameCard | Cost$ 3 B | Defined$ You | ValidCards$ Card.nonLand | ValidDesc$ nonland | SubAbility$ Exile | SpellDescription$ Name a nonland card. Search target player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles his or her library. -SVar:Exile:DB$ ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Card.NamedCard | Shuffle$ True +SVar:Exile:DB$ ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Card.NamedCard | Search$ True | Shuffle$ True SVar:Picture:http://resources.wizards.com/magic/cards/chk/en-us/card80281.jpg Oracle:Name a nonland card. Search target player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles his or her library. SetInfo:CHK Rare \ No newline at end of file diff --git a/res/cardsfolder/e/eradicate.txt b/res/cardsfolder/e/eradicate.txt index 26a949b5e5b..6f95fe660f4 100644 --- a/res/cardsfolder/e/eradicate.txt +++ b/res/cardsfolder/e/eradicate.txt @@ -2,7 +2,7 @@ Name:Eradicate ManaCost:2 B B Types:Sorcery A:SP$ ChangeZone | Cost$ 2 B B | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.nonBlack | TgtPrompt$ Select target nonblack creature | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBSearch | SpellDescription$ Exile target nonblack creature. Search its controller's graveyard, hand, and library for all cards with the same name as that creature and exile them. Then that player shuffles his or her library. -SVar:DBSearch:DB$ChangeZoneAll | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | ChangeType$ Remembered.sameName | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBSearch:DB$ChangeZoneAll | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | ChangeType$ Remembered.sameName | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/eradicate.jpg Oracle:Exile target nonblack creature. Search its controller's graveyard, hand, and library for all cards with the same name as that creature and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/e/extirpate.txt b/res/cardsfolder/e/extirpate.txt index edac7b65f95..020f2a19a4e 100644 --- a/res/cardsfolder/e/extirpate.txt +++ b/res/cardsfolder/e/extirpate.txt @@ -3,7 +3,7 @@ ManaCost:B Types:Instant K:Split second A:SP$ ChangeZone | Cost$ B | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.nonBasic | TgtPrompt$ Select target card in a graveyard other than a basic land | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBSearch | SpellDescription$ Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. -SVar:DBSearch:DB$ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | Defined$ TargetedController | ChangeType$ Remembered.sameName | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBSearch:DB$ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | Defined$ TargetedController | ChangeType$ Remembered.sameName | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/extirpate.jpg Oracle:Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)\nChoose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/h/haunting_echoes.txt b/res/cardsfolder/h/haunting_echoes.txt index 7f7d0ca89cb..950fde829ff 100644 --- a/res/cardsfolder/h/haunting_echoes.txt +++ b/res/cardsfolder/h/haunting_echoes.txt @@ -2,9 +2,7 @@ Name:Haunting Echoes ManaCost:3 B B Types:Sorcery A:SP$ ChangeZoneAll | Cost$ 3 B B | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Select target player | ChangeType$ Card.nonBasic | RememberChanged$ True | SubAbility$ DBRepeat | SpellDescription$ Exile all cards from target player's graveyard other than basic land cards. For each card exiled this way, search that player's library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. -SVar:DBRepeat:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.IsRemembered | Zone$ Exile | RepeatSubAbility$ DBRemove | SubAbility$ DBShuffle -SVar:DBRemove:DB$ ChangeZoneAll | Origin$ Library | Defined$ Targeted | Destination$ Exile | Mandatory$ True | ChangeType$ Card.sharesNameWith Imprinted | SubAbility$ DBCleanup -SVar:DBShuffle:DB$ Shuffle | Defined$ Targeted | SubAbility$ DBCleanup +SVar:DBRepeat:DB$ ChangeZoneAll | Origin$ Library | Defined$ Targeted | Destination$ Exile | Mandatory$ True | ChangeType$ Card.sharesNameWith Remembered | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/haunting_echoes.jpg diff --git a/res/cardsfolder/l/lobotomy.txt b/res/cardsfolder/l/lobotomy.txt index 1f0c66dc03b..6de602d04d3 100644 --- a/res/cardsfolder/l/lobotomy.txt +++ b/res/cardsfolder/l/lobotomy.txt @@ -2,7 +2,7 @@ Name:Lobotomy ManaCost:2 U B Types:Sorcery A:SP$ ChangeZone | Cost$ 2 U B | Origin$ Hand | Destination$ Exile | ValidTgts$ Player | DefinedPlayer$ Targeted | Chooser$ You | ChangeType$ Card.nonBasic | ChangeNum$ 1 | IsCurse$ True | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBSearch | SpellDescription$ Target player reveals his or her hand, then you choose a card other than a basic land card from it. Search that player's graveyard, hand, and library for all cards with the same name as the chosen card and exile them. Then that player shuffles his or her library. -SVar:DBSearch:DB$ ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | ChangeType$ Remembered.sameName | Shuffle$ True| Defined$ Targeted | SubAbility$ DBCleanup +SVar:DBSearch:DB$ ChangeZoneAll | Origin$ Graveyard,Hand,Library | Destination$ Exile | ChangeType$ Remembered.sameName | Shuffle$ True| Defined$ Targeted | Search$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/lobotomy.jpg Oracle:Target player reveals his or her hand, then you choose a card other than a basic land card from it. Search that player's graveyard, hand, and library for all cards with the same name as the chosen card and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/m/mirror_of_fate.txt b/res/cardsfolder/m/mirror_of_fate.txt index 0a43ab0da48..e8e38562fa1 100644 --- a/res/cardsfolder/m/mirror_of_fate.txt +++ b/res/cardsfolder/m/mirror_of_fate.txt @@ -2,8 +2,8 @@ Name:Mirror of Fate ManaCost:5 Types:Artifact A:AB$ ChooseCard | Cost$ T Sac<1/CARDNAME> | Amount$ 7 | Choices$ Card.YouOwn+faceUp | SubAbility$ DBExile | RememberChosen$ True | ChoiceZone$ Exile | SpellDescription$ Choose up to seven face-up exiled cards you own. Exile all the cards from your library, then put the chosen cards on top of your library. -SVar:DBExile:DB$ ChangeZoneAll | Origin$ Library | Destination$ Exile | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Library | ChangeType$ Card.IsRemembered +SVar:DBExile:DB$ ChangeZoneAll | Origin$ Library | Destination$ Exile | Defined$ You | SubAbility$ DBReturn +SVar:DBReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Library | Defined$ You | ChangeType$ Card.IsRemembered SVar:RemRandomDeck:True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mirror_of_fate.jpg diff --git a/res/cardsfolder/q/quash.txt b/res/cardsfolder/q/quash.txt index 47b78df790f..5547c3df4fa 100644 --- a/res/cardsfolder/q/quash.txt +++ b/res/cardsfolder/q/quash.txt @@ -2,7 +2,7 @@ Name:Quash ManaCost:2 U U Types:Instant A:SP$ Counter | Cost$ 2 U U | TargetType$ Spell | ValidTgts$ Instant,Sorcery | RememberCountered$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Counter target instant or sorcery spell. Search its controller's graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library. -SVar:DBChangeZoneAll:DB$ChangeZoneAll | ChangeType$ Remembered.sameName+YouDontCtrl | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName+YouDontCtrl | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/quash.jpg Oracle:Counter target instant or sorcery spell. Search its controller's graveyard, hand, and library for all cards with the same name as that spell and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/r/reap_intellect.txt b/res/cardsfolder/r/reap_intellect.txt index 3f9d833cb74..72f47bdd404 100644 --- a/res/cardsfolder/r/reap_intellect.txt +++ b/res/cardsfolder/r/reap_intellect.txt @@ -2,9 +2,7 @@ Name:Reap Intellect ManaCost:X 2 U B Types:Sorcery A:SP$ ChangeZone | Cost$ X 2 U B | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ X | References$ X | IsCurse$ True | Mandatory$ True | RememberChanged$ True | SubAbility$ DBExile | SpellDescription$ Target opponent reveals his or her hand. You choose X non-land cards from among them. Search that player's library, hand and graveyard for cards with the same name as those cards and exile them. Then, that player shuffles his or her library. -SVar:DBExile:DB$ RepeatEach | UseImprinted$ True | DefinedCards$ Remembered | RepeatSubAbility$ DBExileAll | SubAbility$ DBShuffle -SVar:DBExileAll:DB$ ChangeZoneAll | Origin$ Hand,Library,Graveyard | Destination$ Exile | Defined$ ImprintedController | ChangeType$ Card.sharesNameWith Imprinted -SVar:DBShuffle:DB$ Shuffle | Defined$ Targeted | SubAbility$ DBCleanup +SVar:DBExile:DB$ ChangeZoneAll | Origin$ Hand,Library,Graveyard | Destination$ Exile | Defined$ Targeted | Search$ True | ChangeType$ Card.sharesNameWith Remembered | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid SVar:RemAIDeck:True diff --git a/res/cardsfolder/s/scour.txt b/res/cardsfolder/s/scour.txt index 3b89d7c26c4..7ae4211a967 100644 --- a/res/cardsfolder/s/scour.txt +++ b/res/cardsfolder/s/scour.txt @@ -2,7 +2,7 @@ Name:Scour ManaCost:2 W W Types:Instant A:SP$ ChangeZone | Cost$ 2 W W | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Exile target enchantment. Search its controller's graveyard, hand, and library for all cards with the same name as that enchantment and exile them. Then that player shuffles his or her library. -SVar:DBChangeZoneAll:DB$ChangeZoneAll | ChangeType$ Remembered.sameName | Defined$ TargetedController | Origin$ Graveyard,Hand,Library | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ChangeZoneAll | ChangeType$ Remembered.sameName | Defined$ TargetedController | Origin$ Graveyard,Hand,Library | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/scour.jpg Oracle:Exile target enchantment. Search its controller's graveyard, hand, and library for all cards with the same name as that enchantment and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/s/shimian_specter.txt b/res/cardsfolder/s/shimian_specter.txt index 06e361a17a0..ac6733ae18b 100644 --- a/res/cardsfolder/s/shimian_specter.txt +++ b/res/cardsfolder/s/shimian_specter.txt @@ -5,7 +5,7 @@ PT:2/2 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigReveal | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player reveals his or her hand. You choose a nonland card from it. Search that player's graveyard, hand, and library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. SVar:TrigReveal:AB$ ChangeZone | Cost$ 0 | DefinedPlayer$ TriggeredTarget | Origin$ Hand | Destination$ Exile | ChangeType$ Card.nonLand | ChangeNum$ 1 | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBChangeZoneAll | Chooser$ You -SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TriggeredTarget | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TriggeredTarget | Destination$ Exile | Shuffle$ True | Search$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/shimian_specter.jpg Oracle:Flying\nWhenever Shimian Specter deals combat damage to a player, that player reveals his or her hand. You choose a nonland card from it. Search that player's graveyard, hand, and library for all cards with the same name as that card and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/s/signal_the_clans.txt b/res/cardsfolder/s/signal_the_clans.txt index 75b7b8bf9d9..a36ca210414 100644 --- a/res/cardsfolder/s/signal_the_clans.txt +++ b/res/cardsfolder/s/signal_the_clans.txt @@ -4,7 +4,7 @@ Types:Instant A:SP$ ChangeZone | Cost$ R G | Origin$ Library | Destination$ Library | ChangeType$ Creature | ChangeNum$ 3 | RememberChanged$ True | Reveal$ True | Shuffle$ False | StackDescription$ SpellDescription | SubAbility$ DBChoose | SpellDescription$ Search your library for three creature cards and reveal them. If you reveal three cards with different names, choose one of them at random and put that card into your hand. Shuffle the rest into your library. SVar:DBChoose:DB$ ChooseCard | Defined$ You | Amount$ 1 | AtRandom$ True | Choices$ Card.IsRemembered | ChoiceZone$ Library | SubAbility$ DBChange | StackDescription$ None | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ3 SVar:DBChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | Defined$ ChosenCard | StackDescription$ None | SubAbility$ DBShuffle | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ3 -SVar:DBShuffle:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBShuffle:DB$ Shuffle | Defined$ You | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$DifferentCardNames_Creature.IsRemembered SVar:RemAIDeck:True diff --git a/res/cardsfolder/s/sowing_salt.txt b/res/cardsfolder/s/sowing_salt.txt index 0a63e44c4cd..853e9e46f46 100644 --- a/res/cardsfolder/s/sowing_salt.txt +++ b/res/cardsfolder/s/sowing_salt.txt @@ -2,7 +2,7 @@ Name:Sowing Salt ManaCost:2 R R Types:Sorcery A:SP$ ChangeZone | Cost$ 2 R R | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Exile target nonbasic land. Search its controller's graveyard, hand, and library for all cards with the same name as that land and exile them. Then that player shuffles his or her library. -SVar:DBChangeZoneAll:DB$ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/sowing_salt.jpg Oracle:Exile target nonbasic land. Search its controller's graveyard, hand, and library for all cards with the same name as that land and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/s/splinter.txt b/res/cardsfolder/s/splinter.txt index 9d04f797dda..9a8a24446d3 100644 --- a/res/cardsfolder/s/splinter.txt +++ b/res/cardsfolder/s/splinter.txt @@ -2,7 +2,7 @@ Name:Splinter ManaCost:2 G G Types:Sorcery A:SP$ ChangeZone | Cost$ 2 G G | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBChangeZoneAll | SpellDescription$ Exile target artifact. Search its controller's graveyard, hand, and library for all cards with the same name as that artifact and exile them. Then that player shuffles his or her library. -SVar:DBChangeZoneAll:DB$ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Shuffle$ True | SubAbility$ DBCleanup +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Remembered.sameName | Origin$ Graveyard,Hand,Library | Defined$ TargetedController | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/splinter.jpg Oracle:Exile target artifact. Search its controller's graveyard, hand, and library for all cards with the same name as that artifact and exile them. Then that player shuffles his or her library. diff --git a/res/cardsfolder/t/thought_hemorrhage.txt b/res/cardsfolder/t/thought_hemorrhage.txt index 6e5cde32df6..874fc895e80 100644 --- a/res/cardsfolder/t/thought_hemorrhage.txt +++ b/res/cardsfolder/t/thought_hemorrhage.txt @@ -4,8 +4,7 @@ Types:Sorcery A:SP$ NameCard | Cost$ 2 B R | ValidCards$ Card.nonLand | SubAbility$ DBReveal | ValidDesc$ nonland | SpellDescription$ Name a nonland card. Target player reveals his or her hand. CARDNAME deals 3 damage to that player for each card with that name revealed this way. Search that player's graveyard, hand, and library for all cards with that name and exile them. Then that player shuffles his or her library. SVar:DBReveal:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDamage SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | SubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ Targeted | ChangeType$ Card.NamedCard | Origin$ Graveyard,Hand,Library | Destination$ Exile | SubAbility$ DBShuffle -SVar:DBShuffle:DB$ Shuffle | Defined$ Targeted | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZoneAll | Defined$ Targeted | ChangeType$ Card.NamedCard | Origin$ Graveyard,Hand,Library | Destination$ Exile | Search$ True | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Valid Card.NamedCard/Times.3 SVar:RemAIDeck:True diff --git a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java index 818165265d1..4235f211884 100644 --- a/src/main/java/forge/card/ability/ai/ChangeZoneAi.java +++ b/src/main/java/forge/card/ability/ai/ChangeZoneAi.java @@ -1106,6 +1106,13 @@ public class ChangeZoneAi extends SpellAbilityAi { fetchList = AbilityUtils.filterListByType(fetchList, type, sa); } else { fetchList = player.getCardsIn(origin); + if (origin.contains(ZoneType.Library) && ai.hasKeyword("LimitSearchLibrary") + && !sa.hasParam("NoLooking")) { + // Aven Mindcensor + fetchList.removeAll(player.getCardsIn(ZoneType.Library)); + final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4); + fetchList.addAll(player.getCardsIn(ZoneType.Library, fetchNum)); + } fetchList = AbilityUtils.filterListByType(fetchList, type, sa); } diff --git a/src/main/java/forge/card/ability/effects/ChangeZoneAllEffect.java b/src/main/java/forge/card/ability/effects/ChangeZoneAllEffect.java index ad02b1fef87..6c635f172c8 100644 --- a/src/main/java/forge/card/ability/effects/ChangeZoneAllEffect.java +++ b/src/main/java/forge/card/ability/effects/ChangeZoneAllEffect.java @@ -9,6 +9,7 @@ import com.google.common.collect.Iterables; import forge.Card; import forge.CardCharacteristicName; +import forge.CardLists; import forge.CardPredicates; import forge.card.ability.AbilityUtils; import forge.card.ability.SpellAbilityEffect; @@ -47,12 +48,24 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { if ((tgtPlayers == null) || tgtPlayers.isEmpty() || sa.hasParam("UseAllOriginZones")) { cards = game.getCardsIn(origin); + } else if (sa.getActivatingPlayer().hasKeyword("LimitSearchLibrary") + && origin.contains(ZoneType.Library) && sa.hasParam("Search")) { + for (final Player p : tgtPlayers) { + cards.addAll(p.getCardsIn(origin)); + cards.removeAll(p.getCardsIn(ZoneType.Library)); + int fetchNum = Math.min(p.getCardsIn(ZoneType.Library).size(), 4); + cards.addAll(p.getCardsIn(ZoneType.Library, fetchNum)); + } } else { for (final Player p : tgtPlayers) { cards.addAll(p.getCardsIn(origin)); } } - + if (sa.getActivatingPlayer().isHuman() && origin.contains(ZoneType.Library) + && sa.hasParam("Search")) { + GuiChoose.oneOrNone("Looking at the Library", + CardLists.getValidCards(cards, "Card.inZoneLibrary", sa.getActivatingPlayer(), sa.getSourceCard())); + } cards = AbilityUtils.filterListByType(cards, sa.getParam("ChangeType"), sa); if (sa.hasParam("ForgetOtherRemembered")) { diff --git a/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java b/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java index 71f1d736a8d..a4ac0ed13bd 100644 --- a/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java +++ b/src/main/java/forge/card/ability/effects/ChangeZoneEffect.java @@ -682,13 +682,22 @@ public class ChangeZoneEffect extends SpellAbilityEffect { fetchList = game.getCardsIn(origin); } else { fetchList = player.getCardsIn(origin); + if (origin.contains(ZoneType.Library) && decider.hasKeyword("LimitSearchLibrary") + && !sa.hasParam("NoLooking")) {// Aven Mindcensor + fetchList.removeAll(player.getCardsIn(ZoneType.Library)); + final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4); + fetchList.addAll(player.getCardsIn(ZoneType.Library, fetchNum)); + } } - + if (!defined) { if (origin.contains(ZoneType.Library) && !defined && !sa.hasParam("NoLooking")) { + final int fetchNum = Math.min(player.getCardsIn(ZoneType.Library).size(), 4); // Look at whole library before moving onto choosing a card GuiChoose.oneOrNone(sa.getSourceCard().getName() + " - Looking at Library", - player.getCardsIn(ZoneType.Library)); + !decider.hasKeyword("LimitSearchLibrary") + ? player.getCardsIn(ZoneType.Library) + : player.getCardsIn(ZoneType.Library, fetchNum)); } // Look at opponents hand before moving onto choosing a card