Name:Struggle for Sanity
ManaCost:2 B B
Types:Sorcery
A:SP$ RevealHand | ValidTgts$ Opponent | RememberTargets$ True | RememberRevealed$ True | SubAbility$ DBRepeatChoose | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. That player exiles a card from it, then you exile a card from it. Repeat this process until all cards in that hand have been exiled. That player returns the cards they exiled this way to their hand and puts the rest into their graveyard.
SVar:DBRepeatChoose:DB$ Repeat | RepeatSubAbility$ DBOppChoose | RepeatCheckSVar$ X | RepeatSVarCompare$ GE1 | SubAbility$ DBReturn | StackDescription$ None
SVar:DBOppChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.IsRemembered | ChoiceZone$ Hand | Amount$ 1 | Mandatory$ True | SubAbility$ DBExileOpp
SVar:DBExileOpp:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Hand | Destination$ Exile | Imprint$ True | SubAbility$ DBYouChoose
SVar:DBYouChoose:DB$ ChooseCard | Defined$ You | Choices$ Card.IsRemembered | ChoiceZone$ Hand | Amount$ 1 | Mandatory$ True | SubAbility$ DBExileYou
SVar:DBExileYou:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Hand | Destination$ Exile
SVar:DBReturn:DB$ ChangeZoneAll | ChangeType$ Card.IsImprinted | Origin$ Exile | Destination$ Hand | SubAbility$ DBGoYard | StackDescription$ None
SVar:DBGoYard:DB$ ChangeZoneAll | ChangeType$ Card.IsNotImprinted+IsRemembered | Origin$ Exile | Destination$ Graveyard | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True
SVar:X:Count$ValidHand Card.IsRemembered
SVar:NeedsToPlayVar:Y GE1
SVar:Y:PlayerCountPropertyOpponents$HasPropertyHasCardsInHand_Card_GE2
Oracle:Target opponent reveals their hand. That player exiles a card from it, then you exile a card from it. Repeat this process until all cards in that hand have been exiled. That player returns the cards they exiled this way to their hand and puts the rest into their graveyard.
