Merge branch 'astral' into 'master'

MicroProse Astral cards!?!

See merge request core-developers/forge!5465
This commit is contained in:
Michael Kamensky
2021-10-22 12:45:15 +00:00
40 changed files with 590 additions and 64 deletions

View File

@@ -0,0 +1,8 @@
Name:Aswan Jaguar
ManaCost:1 G G
Types:Creature Cat
PT:2/2
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChooseCT | TriggerDescription$ When CARDNAME comes into play, choose a random creature type from those in target opponent's deck.
SVar:TrigChooseCT:DB$ ChooseType | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | IsCurse$ True | AtRandom$ True | Type$ CreatureInTargetedDeck
A:AB$ Destroy | Cost$ G G T | ValidTgts$ Creature.ChosenType | NoRegen$ True | TgtPrompt$ Select target creature with the chosen type | SpellDescription$ Destroy target creature with the chosen type. It can't be regenerated.
Oracle:When Aswan Jaguar comes into play, choose a random creature type from those in target opponent's deck.\n{G}{G}, {T}: Destroy target creature with the chosen type. It can't be regenerated.

View File

@@ -0,0 +1,8 @@
Name:Call from the Grave
ManaCost:2 B
Types:Sorcery
A:SP$ ChangeZone | ChangeType$ Creature | ChangeNum$ 1 | Hidden$ True | Origin$ Graveyard | Destination$ Battlefield | AtRandom$ True | GainControl$ True | RememberChanged$ True | SubAbility$ DBDealDamage | StackDescription$ SpellDescription | SpellDescription$ Put a random creature from a random graveyard into play under your control. Call from the Grave deals to you an amount of damage equal to that creature's casting cost.
SVar:DBDealDamage:DB$ DealDamage | NumDmg$ X | Defined$ You | SubAbility$ DBCleanup | StackDescription$ None
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
SVar:X:Remembered$CardManaCost
Oracle:Put a random creature from a random graveyard into play under your control. Call from the Grave deals to you an amount of damage equal to that creature's casting cost.

View File

@@ -0,0 +1,56 @@
Name:Faerie Dragon
ManaCost:2 G G
Types:Creature Dragon
PT:1/3
K:Flying
A:AB$ GenericChoice | Cost$ 1 G G | AtRandom$ True | ShowChoice$ Description | Choices$ Berserk,Twiddle,BloodLust,Green,White,Red,Damage3,Flying,P3P3,Banding,Black,Blue,NoRegen,LilSneak,M2M0,ToHand,Damage1,Nerf,Exile,Orcish | StackDescription$ SpellDescription | SpellDescription$ Perform a random action.
SVar:Berserk:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | RememberChosen$ True | SubAbility$ DBPump1 | SpellDescription$ A creature chosen at random gains trample and gets +X/+0 until end of turn, where X is its power. At the beginning of the next end step, destroy that creature if it attacked this turn.
SVar:DBPump1:DB$ Pump | Defined$ Remembered | KW$ Trample | NumAtt$ X1 | SubAbility$ DBDelayedTrigger1
SVar:DBDelayedTrigger1:DB$ DelayedTrigger | RememberObjects$ Remembered | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy1 | SubAbility$ DBCleanup | TriggerDescription$ At the beginning of the next end step, destroy that creature if it attacked this turn.
SVar:TrigDestroy1:DB$ Destroy | Defined$ DelayTriggerRemembered | ConditionDefined$ DelayTriggerRemembered | ConditionPresent$ Card.attackedThisTurn
SVar:X1:Remembered$CardPower
SVar:DBCleanup:DB$ Cleanup | Log$ True | ClearRemembered$ True | ClearChosenCard$ True
SVar:Twiddle:DB$ ChooseCard | Choices$ Artifact,Creature,Land | AtRandom$ True | SubAbility$ DBTapOrUntap2 | SpellDescription$ You may tap or untap an artifact, creature, or land chosen at random.
SVar:DBTapOrUntap2:DB$ TapOrUntap | Defined$ ChosenCard | SubAbility$ DBCleanup
SVar:BloodLust:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | RememberChosen$ True | SubAbility$ DBPump3 | SpellDescription$ If a creature chosen at random has toughness 5 or greater, it gets +4/-4 until end of turn. Otherwise, it gets +4/-X until end of turn, where X is its toughness minus 1.
SVar:DBPump3:DB$ Pump | Defined$ Remembered | NumAtt$ 4 | NumDef$ -X3 | SubAbility$ DBCleanup
SVar:X3:Count$Compare T3 GE4.4.T3
SVar:T3:Remembered$CardToughness/Minus.1
SVar:Green:DB$ ChooseCard | Choices$ Permanent | IncludeSpellsOnStack$ True | AtRandom$ True | LockInText$ True | SubAbility$ DBAnimateG | SpellDescription$ A spell or permanent chosen at random becomes green. (Mana symbols on that permanent remain unchanged.)
SVar:DBAnimateG:DB$ Animate | Defined$ ChosenCard | Colors$ Green | OverwriteColors$ True | Duration$ Permanent | LockInText$ True | SubAbility$ DBCleanup
SVar:White:DB$ ChooseCard | Choices$ Permanent | IncludeSpellsOnStack$ True | AtRandom$ True | LockInText$ True | SubAbility$ DBAnimateW | SpellDescription$ A spell or permanent chosen at random becomes white. (Mana symbols on that permanent remain unchanged.)
SVar:DBAnimateW:DB$ Animate | Defined$ ChosenCard | Colors$ White | OverwriteColors$ True | Duration$ Permanent | LockInText$ True | SubAbility$ DBCleanup
SVar:Red:DB$ ChooseCard | Choices$ Permanent | IncludeSpellsOnStack$ True | AtRandom$ True | LockInText$ True | SubAbility$ DBAnimateR | SpellDescription$ A spell or permanent chosen at random becomes red. (Mana symbols on that permanent remain unchanged.)
SVar:DBAnimateR:DB$ Animate | Defined$ ChosenCard | Colors$ Red | OverwriteColors$ True | Duration$ Permanent | LockInText$ True | SubAbility$ DBCleanup
SVar:Damage3:DB$ ChooseEntity | Random$ True | CardChoices$ Creature | PlayerChoices$ Player | RememberChosen$ True | SubAbility$ DBDamage3 | SpellDescription$ CARDNAME deals 3 damage to a creature or player chosen at random.
SVar:DBDamage3:DB$ DealDamage | Defined$ Remembered | NumDmg$ 3 | SubAbility$ DBCleanup
SVar:Flying:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump8 | SpellDescription$ A creature chosen at random gains flying until end of turn.
SVar:DBPump8:DB$ Pump | Defined$ ChosenCard | KW$ Flying | SubAbility$ DBCleanup
SVar:P3P3:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump9 | SpellDescription$ A creature chosen at random gets +3/+3 until end of turn.
SVar:DBPump9:DB$ Pump | Defined$ ChosenCard | NumAtt$ 3 | NumDef$ 3 | SubAbility$ DBCleanup
SVar:Banding:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump10 | SpellDescription$ A creature chosen at random gains banding until end of turn. (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding a player controls are blocking or being blocked by a creature, that player divides that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.)
SVar:DBPump10:DB$ Pump | Defined$ ChosenCard | KW$ Banding | SubAbility$ DBCleanup
SVar:Black:DB$ ChooseCard | Choices$ Permanent | IncludeSpellsOnStack$ True | AtRandom$ True | LockInText$ True | SubAbility$ DBAnimateB | SpellDescription$ A spell or permanent chosen at random becomes black. (Mana symbols on that permanent remain unchanged.)
SVar:DBAnimateB:DB$ Animate | Defined$ ChosenCard | Colors$ Black | OverwriteColors$ True | Duration$ Permanent | LockInText$ True | SubAbility$ DBCleanup
SVar:Blue:DB$ ChooseCard | Choices$ Permanent | IncludeSpellsOnStack$ True | AtRandom$ True | LockInText$ True | SubAbility$ DBAnimateU | SpellDescription$ A spell or permanent chosen at random becomes blue. (Mana symbols on that permanent remain unchanged.)
SVar:DBAnimateU:DB$ Animate | Defined$ ChosenCard | Colors$ Blue | OverwriteColors$ True | Duration$ Permanent | LockInText$ True | SubAbility$ DBCleanup
SVar:NoRegen:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump13 | SpellDescription$ A creature chosen at random can't be regenerated this turn.
SVar:DBPump13:DB$ Pump | Defined$ ChosenCard | KW$ HIDDEN CARDNAME can't be regenerated. | SubAbility$ DBCleanup
SVar:LilSneak:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump14 | RememberChosen$ True | SpellDescription$ If a creature chosen at random has power 2 or less, it is unblockable this turn.
SVar:DBPump14:DB$ Pump | ConditionDefined$ Remembered | ConditionPresent$ Card.powerLE2 | Defined$ Remembered | KW$ HIDDEN Unblockable | SubAbility$ DBCleanup
SVar:M2M0:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBPump15 | SpellDescription$ A creature chosen at random gets -2/-0 until end of turn.
SVar:DBPump15:DB$ Pump | Defined$ ChosenCard | NumAtt$ -2 | SubAbility$ DBCleanup
SVar:ToHand:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBChangeZone16 | SpellDescription$ Return a creature chosen at random to its owner's hand.
SVar:DBChangeZone16:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCleanup
SVar:Damage1:DB$ ChooseEntity | Random$ True | CardChoices$ Creature | PlayerChoices$ Player | RememberChosen$ True | SubAbility$ DBDamage1 | SpellDescription$ CARDNAME deals 1 damage to a creature or player chosen at random.
SVar:DBDamage1:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 | SubAbility$ DBCleanup
SVar:Nerf:DB$ ChooseCard | Choices$ Creature.Other | AtRandom$ True | SubAbility$ DBAnimate18 | SpellDescription$ A creature other than CARDNAME chosen at random becomes 0/2 until end of turn.
SVar:DBAnimate18:DB$ Animate | Defined$ ChosenCard | Power$ 0 | Toughness$ 2 | SubAbility$ DBCleanup
SVar:Exile:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | SubAbility$ DBChangeZone19 | SpellDescription$ Exile a creature chosen at random. Its controller gains life equal to its power.
SVar:DBChangeZone19:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Battlefield | Destination$ Exile | RememberLKI$ True | SubAbility$ DBGainLife19
SVar:DBGainLife19:DB$ GainLife | Defined$ RememberedController | LifeAmount$ X19 | SubAbility$ DBCleanup
SVar:X19:RememberedLKI$CardPower
SVar:Orcish:DB$ ChooseCard | Choices$ Creature | Amount$ Random | AtRandom$ True | SubAbility$ DBPutCounter20 | SpellDescription$ Randomly distribute X -0/-1 counters among a random number of creatures chosen at random, where X is the number of creatures in play.
SVar:DBPutCounter20:DB$ PutCounter | Defined$ ChosenCard | CounterType$ M0M1 | CounterNum$ X20 | DividedRandomly$ True | SubAbility$ DBCleanup
SVar:X20:Count$Valid Creature
Oracle:Flying\n{1}{G}{G}: Perform a random action.

View File

@@ -0,0 +1,7 @@
Name:Gem Bazaar
ManaCost:no cost
Types:Land
K:ETBReplacement:Other:ChooseColor
SVar:ChooseColor:DB$ ChooseColor | Random$ True | SpellDescription$ As CARDNAME enters the battlefield, choose a color at random.
A:AB$ Mana | Cost$ T | Produced$ Chosen | SubAbility$ ChooseColor | SpellDescription$ Add one mana of the chosen color. Then choose a color at random.
Oracle:As Gem Bazaar enters the battlefield, choose a color at random.\n{T}: Add one mana of the chosen color. Then choose a color at random.

View File

@@ -0,0 +1,10 @@
Name:Goblin Polka Band
ManaCost:R R
Types:Creature Goblin
PT:1/1
A:AB$ Tap | Announce$ TgtNum | AnnounceTitle$ any number of creatures to target | Cost$ X 2 T | XColor$ R | CostDesc$ {2}, {T}: | ValidTgts$ Creature.untapped | TargetMin$ TgtNum | TargetMax$ TgtNum | TargetsAtRandom$ True | RememberTargets$ True | SubAbility$ GoblinHangover | SpellDescription$ Tap any number of random target creatures. Goblins tapped in this way do not untap during their controllers' next untap phases. This ability costs {R} more to activate for each target.
SVar:GoblinHangover:DB$ PumpAll | ValidCards$ Goblin.IsRemembered | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent
SVar:TgtNum:Number$0
SVar:X:SVar$TgtNum
SVar:Y:Count$xPaid
Oracle:{2}, {T}: Tap any number of random target creatures. Goblins tapped in this way do not untap during their controllers' next untap phases. This ability costs {R} more to activate for each target.

View File

@@ -0,0 +1,7 @@
Name:Power Struggle
ManaCost:2 U U U
Types:Enchantment
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerController$ TriggeredPlayer | TriggerDescription$ At the beginning of each player's upkeep, that player exchanges control of random target artifact, creature or land he or she controls, for control of random target permanent of the same type that a random opponent controls.
SVar:TrigPump:DB$ Pump | TargetsWithDefinedController$ TriggeredPlayer | ValidTgts$ Artifact,Creature,Land | TargetsAtRandom$ True | SubAbility$ DBExchangeControl
SVar:DBExchangeControl:DB$ ExchangeControl | Defined$ ParentTarget | ValidTgts$ Artifact,Creature,Land | TargetsWithDefinedController$ Player.OpponentOf TriggeredPlayer | TargetsWithSharedCardType$ ParentTarget | TargetsAtRandom$ True
Oracle:At the beginning of each player's upkeep, that player exchanges control of random target artifact, creature or land he or she controls, for control of random target permanent of the same type that a random opponent controls.

View File

@@ -0,0 +1,10 @@
Name:Necropolis of Azar
ManaCost:2 B B
Types:Enchantment
T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.nonBlack | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a nonblack creature dies, put a husk counter on CARDNAME.
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ HUSK
A:AB$ Token | Cost$ 5 SubCounter<1/HUSK> | TokenScript$ spawn_of_azar | TokenPower$ X | TokenToughness$ Y | SpellDescription$ Create an X/Y black Spawn creature token with swampwalk named Spawn of Azar, where X and Y are numbers chosen at random from 1 to 3.
SVar:X:Count$Random.1.3
SVar:Y:Count$Random.1.3
DeckHas:Ability$Counters & Ability$Token
Oracle:Whenever a nonblack creature dies, put a husk counter on Necropolis of Azar.\n{5}, Remove a husk counter from Necropolis of Azar: Create an X/Y black Spawn creature token with swampwalk named Spawn of Azar, where X and Y are numbers chosen at random from 1 to 3.

View File

@@ -0,0 +1,6 @@
Name:Orcish Catapult
ManaCost:X R R
Types:Instant
A:SP$ PutCounter | ValidTgts$ Creature | TargetsAtRandom$ True | CounterType$ M0M1 | CounterNum$ X | RandomNumTargets$ True | TargetMin$ 0 | TargetMax$ X | DividedRandomly$ True | SpellDescription$ Randomly distribute X -0/-1 counters among a random number of random target creatures.
SVar:X:Count$xPaid
Oracle:Randomly distribute X -0/-1 counters among a random number of random target creatures.

View File

@@ -0,0 +1,9 @@
Name:Pandora's Box
ManaCost:5
Types:Artifact
A:AB$ ChooseCard | Cost$ 3 T | Choices$ Creature | AtRandom$ True | AllCards$ True | SubAbility$ DBRepeatEach | StackDescription$ SpellDescription | SpellDescription$ Choose a creature card at random from all players' decklists. Each player flips a coin. Each player whose coin comes up heads creates a token that's a copy of that card.
SVar:DBRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBFlip | SubAbility$ DBCleanup
SVar:DBFlip:DB$ FlipACoin | Flipper$ Remembered | NoCall$ True | HeadsSubAbility$ DBCopyPermanent
SVar:DBCopyPermanent:DB$ CopyPermanent | Defined$ ChosenCard | Controller$ Remembered
SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:{3}, {T}: Choose a creature card at random from all players' decklists. Each player flips a coin. Each player whose coin comes up heads creates a token that's a copy of that card.

View File

@@ -0,0 +1,11 @@
Name:Prismatic Dragon
ManaCost:2 W W
Types:Creature Dragon
PT:2/3
K:Flying
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChooseColor | TriggerDescription$ At the beginning of your upkeep, CARDNAME becomes a color chosen at random. (This effect lasts indefinitely.)
SVar:TrigChooseColor:DB$ ChooseColor | Random$ True | SubAbility$ DBAnimate
SVar:DBAnimate:DB$ Animate | Colors$ ChosenColor | OverwriteColors$ True | Duration$ Permanent | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearChosenColor$ True
A:AB$ ChooseColor | Cost$ 2 | Random$ True | SubAbility$ DBAnimate | StackDescription$ SpellDescription | SpellDescription$ CARDNAME becomes a color chosen at random. (This effect lasts indefinitely.)
Oracle:Flying\nAt the beginning of your upkeep, Prismatic Dragon becomes a color chosen at random. (This effect lasts indefinitely.)\n{2}: Prismatic Dragon becomes a color chosen at random. (This effect lasts indefinitely.)

View File

@@ -0,0 +1,11 @@
Name:Rainbow Knights
ManaCost:W W
Types:Creature Human Knight
PT:2/1
K:ETBReplacement:Other:ChooseColor
SVar:ChooseColor:DB$ ChooseColor | Random$ True | SpellDescription$ As CARDNAME enters the battlefield, it gains protection from a color chosen at random. (This effect lasts indefinitely.)
S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Protection:Card.ChosenColor:Protection from chosenColor | Secondary$ True
A:AB$ Pump | Cost$ 1 | KW$ First strike | SpellDescription$ CARDNAME gains first strike until end of turn.
A:AB$ Pump | Cost$ W W | NumAtt$ X | StackDescription$ SpellDescription | SpellDescription$ CARDNAME gets +X/+0 until end of turn, where X is a number chosen randomly from 0 to 2. |
SVar:X:Count$Random.0.2
Oracle:As Rainbow Knights enters the battlefield, it gains protection from a color chosen at random. (This effect lasts indefinitely.)\n{1}: Rainbow Knights gains first strike until end of turn.\n{W}{W}: Rainbow Knights gets +X/+0 until end of turn, where X is a number chosen randomly from 0 to 2.

View File

@@ -0,0 +1,47 @@
Name:Whimsy
ManaCost:X U U
Types:Sorcery
A:SP$ Repeat | MaxRepeat$ X | RepeatSubAbility$ DBGenericChoice | StackDescription$ SpellDescription | SpellDescription$ Perform X random actions.
SVar:DBGenericChoice:DB$ GenericChoice | ShowChoice$ Description | AtRandom$ True | Choices$ ToHand,Untap,Tap,Damage,Draw3,DestroyGain,DestroyAE,Gain3,Anoint,DestroyCL,Mill2,Wasp,Nevinyrral,Suleiman,Pandora,Discard,Fog,Sindbad
SVar:ToHand:DB$ ChooseCard | Choices$ Permanent.unenchanted | AtRandom$ True | SubAbility$ DBChangeZone3 | SpellDescription$ Return a permanent that isn't enchanted chosen at random to its owner's hand.
SVar:DBChangeZone3:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBCleanup
SVar:Untap:DB$ ChooseCard | Choices$ Artifact.tapped,Creature.tapped,Land.tapped | AtRandom$ True | SubAbility$ DBUntap4 | SpellDescription$ Untap an artifact, creature or land chosen at random.
SVar:DBUntap4:DB$ Untap | Defined$ ChosenCard | SubAbility$ DBCleanup
SVar:Tap:DB$ ChooseCard | Choices$ Artifact.untapped,Creature.untapped,Land.untapped | AtRandom$ True | SubAbility$ DBTap5 | SpellDescription$ Tap an artifact, creature or land chosen at random.
SVar:DBTap5:DB$ Tap | Defined$ ChosenCard | SubAbility$ DBCleanup
SVar:Damage:DB$ ChooseEntity | Random$ True | CardChoices$ Creature | PlayerChoices$ Player | RememberChosen$ True | SubAbility$ DBDamage6 | SpellDescription$ CARDNAME deals 4 damage to a creature or player chosen at random.
SVar:DBDamage6:DB$ DealDamage | Defined$ Remembered | NumDmg$ 4 | SubAbility$ DBCleanup
SVar:Draw3:DB$ ChoosePlayer | Choices$ Player | Random$ True | SubAbility$ DBDraw7 | SpellDescription$ A player chosen at random draws three cards.
SVar:DBDraw7:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer | SubAbility$ DBCleanup
SVar:DestroyGain:DB$ ChooseCard | Choices$ Artifact | AtRandom$ True | SubAbility$ DBDestroy8 | SpellDescription$ Destroy an artifact chosen at random. It can't be regenerated. That artifact's controller gains life equal to its converted mana cost.
SVar:DBDestroy8:DB$ Destroy | Defined$ ChosenCard | NoRegen$ True | RememberDestroyed$ True | SubAbility$ DBGainLife8
SVar:DBGainLife8:DB$ GainLife | Defined$ RememberedController | LifeAmount$ X8 | SubAbility$ DBCleanup
SVar:X8:Remembered$CardManaCost
SVar:DestroyAE:DB$ ChooseCard | Choices$ Artifact,Enchantment | AtRandom$ True | SubAbility$ DBDestroy9 | SpellDescription$ Destroy an artifact or enchantment chosen at random.
SVar:DBDestroy9:DB$ Destroy | Defined$ ChosenCard | SubAbility$ DBCleanup
SVar:Gain3:DB$ ChoosePlayer | Choices$ Player | Random$ True | SubAbility$ DBGainLife10 | SpellDescription$ A player chosen at random gains 3 life.
SVar:DBGainLife10:DB$ GainLife | Defined$ ChosenPlayer | LifeAmount$ 3 | SubAbility$ DBCleanup
SVar:Anoint:DB$ ChooseEntity | Random$ True | CardChoices$ Creature | PlayerChoices$ Player | RememberChosen$ True | SubAbility$ DBPreventDamage11 | SpellDescription$ Prevent the next 3 damage that would be dealt to a creature or player chosen at random this turn.
SVar:DBPreventDamage11:DB$ PreventDamage | Defined$ Remembered | Amount$ 3 | SubAbility$ DBCleanup
SVar:DestroyCL:DB$ ChooseCard | Choices$ Creature,Land | AtRandom$ True | SubAbility$ DBDestroy12 | SpellDescription$ Destroy a creature or land chosen at random. It can't be regenerated.
SVar:DBDestroy12:DB$ Destroy | Defined$ ChosenCard | NoRegen$ True | SubAbility$ DBCleanup
SVar:Mill2:DB$ ChoosePlayer | Choices$ Player | Random$ True | SubAbility$ DBMill13 | SpellDescription$ A player chosen at random mills two cards.
SVar:DBMill13:DB$ Mill | Defined$ ChosenPlayer | NumCards$ 2 | SubAbility$ DBCleanup
SVar:Wasp:DB$ Token | TokenScript$ wasp | LockInText$ True | SpellDescription$ Create a 1/1 colorless Insect artifact creature token with flying named Wasp.
SVar:Nevinyrral:DB$ DestroyAll | ValidCards$ Artifact,Creature,Enchantment | SpellDescription$ Destroy all artifacts, creatures and enchantments.
SVar:Suleiman:DB$ FlipACoin | WinSubAbility$ DBToken | LoseSubAbility$ DBDamage | LockInText$ True | SpellDescription$ Flip a coin. If you win the flip, create a 5/5 colorless Djinn artifact creature token with flying. If you lose the flip, CARDNAME deals 5 damage to you.
SVar:DBToken:DB$ Token | LockInText$ True | TokenScript$ c_5_5_a_djinn_flying
SVar:DBDamage:DB$ DealDamage | Defined$ You | NumDmg$ 5
SVar:Pandora:DB$ ChooseCard | Choices$ Creature | AtRandom$ True | AllCards$ True | SubAbility$ DBRepeatEach17 | SpellDescription$ Choose a creature card at random from all players' decklists. Each player flips a coin. Each player whose coin comes up heads creates a token that's a copy of that card.
SVar:DBRepeatEach17:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBFlip17 | SubAbility$ DBCleanup
SVar:DBFlip17:DB$ FlipACoin | Flipper$ Remembered | NoCall$ True | HeadsSubAbility$ DBCopyPermanent17
SVar:DBCopyPermanent17:DB$ CopyPermanent | Defined$ ChosenCard | Controller$ Remembered
SVar:Discard:DB$ ChoosePlayer | Choices$ Player | Random$ True | SubAbility$ DBDiscard18 | SpellDescription$ A player chosen at random discards a card.
SVar:DBDiscard18:DB$ Discard | Defined$ ChosenPlayer | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBCleanup
SVar:Fog:DB$ Fog | SpellDescription$ Prevent all combat damage that would be dealt this turn.
SVar:Sindbad:DB$ Draw | NumCards$ 1 | Reveal$ All | RememberDrawn$ True | SubAbility$ DBDiscard20 | SpellDescription$ Draw a card and reveal it. If it isn't a land card, discard it.
SVar:DBDiscard20:DB$ Discard | Mode$ Defined | Defined$ You | DefinedCards$ Remembered | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | Log$ True | ClearRemembered$ True | ClearChosenCard$ True | ClearChosenPlayer$ True
SVar:X:Count$xPaid
DeckHas:Ability$LifeGain & Ability$Token & Ability$Discard
Oracle:Perform X random actions.

View File

@@ -0,0 +1,19 @@
[metadata]
Code=PAST
Date=1997-04-01
Name=Astral Cards
Type=Funny
[cards]
1 C Aswan Jaguar @Pat Lewis
2 C Call from the Grave @Quinton Hoover
3 C Faerie Dragon @NéNé Thomas
4 C Goblin Polka Band @Quinton Hoover
5 C Necropolis of Azar @Rob Alexander
6 C Orcish Catapult @Melissa A. Benson
7 C Power Struggle @Mark Tedin
8 C Prismatic Dragon @Amy Weber
9 C Rainbow Knights @Douglas Shuler
10 C Whimsy @Anson Maddocks
11 C Pandora's Box @Amy Weber
12 C Gem Bazaar @Liz Danforth

View File

@@ -1449,6 +1449,7 @@ lblTriggered=löst aus
lblActivated=aktiviert
lblLogPlayerActionObjectWitchTarget={0} {1} {2} mit Ziel {3}
lblLogPlayerActionObject={0} {1} {2}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard=[0} wählte {1} für {2}
lblLogPlayerHasRestoredControlThemself={0} hat die eigene Kontrolle zurück
lblLogPlayerControlledTargetPlayer={0} wird kontrolliert durch {1}
@@ -1846,6 +1847,11 @@ lblChooseOpponent=Wähle einen Gegner
lblReveals=zeigt offen vor
lblWinsClash=gewinnt Fehde
lblLosesClash=verliert Fehde
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy=Möchtest du {0} kopieren?
#ControlExchangeEffect.java
@@ -2129,6 +2135,8 @@ lblGameplayResults=Spielergebnis
lblResultIs=Ergebnis: {0}
lblPlayerRandomChosenNumberIs=Zufällige Zahl von {0} bis {1}
lblPlayerChoosesNumberIs={0} wählt Zahl: {1}
lblRandomColorChosen=Randomly chosen color: {0}
lblRandomTypeChosen=Randomly chosen type: {0}
lblPlayerChooseValueOfEffectOfCard={0} wählt {1} als Effekt von {2}
lblPlayerFlipComesUpValue={0}-Wurf zeigt {1}
lblPlayerActionFlip={0} {1} den Wurf

View File

@@ -1451,6 +1451,7 @@ lblTriggered=triggered
lblActivated=activated
lblLogPlayerActionObjectWitchTarget={0} {1} {2} targeting {3}
lblLogPlayerActionObject={0} {1} {2}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard={0} has chosen {1} for {2}.
lblLogPlayerHasRestoredControlThemself={0} has restored control over themself
lblLogPlayerControlledTargetPlayer={0} is controlled by {1}
@@ -1847,6 +1848,11 @@ lblChooseOpponent=Choose a opponent
lblReveals=reveals
lblWinsClash=wins clash
lblLosesClash=loses clash
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy=Do you want to copy {0}?
#ControlExchangeEffect.java
@@ -2128,7 +2134,9 @@ lblGameplayResults=Gameplay Results
lblResultIs=Result: {0}
lblPlayerRandomChosenNumberIs=Randomly chosen number for {0} is {1}
lblPlayerChoosesNumberIs={0} chooses number: {1}
lblPlayerChooseValueOfEffectOfCard={0} choose {1} for effect of {2}
lblRandomColorChosen=Randomly chosen color: {0}
lblRandomTypeChosen=Randomly chosen type: {0}
lblPlayerChooseValueOfEffectOfCard={0} chose {1} for effect of {2}
lblPlayerFlipComesUpValue={0} flip comes up {1}
lblPlayerActionFlip={0} {1} the flip
lblPlayerChooseValue={0} choose {1}

View File

@@ -1449,6 +1449,7 @@ lblTriggered=acciona
lblActivated=activa
lblLogPlayerActionObjectWitchTarget={0} {1} {2} con objetivo {3}
lblLogPlayerActionObject={0} {1} {2}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard={0} ha elegido {1} para {2}.
lblLogPlayerHasRestoredControlThemself={0} ha restaurado el control sobre sí mismo
lblLogPlayerControlledTargetPlayer={0} es controlado por {1}
@@ -1845,6 +1846,11 @@ lblChooseOpponent=Elige un adversario
lblReveals=muestra
lblWinsClash=gana el enfrentamiento
lblLosesClash=pierde el enfrentamiento
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy=¿Quieres copiar {0}?
#ControlExchangeEffect.java
@@ -2128,6 +2134,8 @@ lblGameplayResults=Resultados del Juego
lblResultIs=Resultado: {0}
lblPlayerRandomChosenNumberIs=El número elegido aleatoriamente para {0} es {1}
lblPlayerChoosesNumberIs={0} elige el número: {1}
lblRandomColorChosen=Color aleatorio es {0}
lblRandomTypeChosen=Tipo aleatorio es {0}
lblPlayerChooseValueOfEffectOfCard={0} elige {1} para el efecto de {2}
lblPlayerFlipComesUpValue=El lanzamiento de {0} sale {1}
lblPlayerActionFlip={0} {1} el lanzamiento

View File

@@ -1449,6 +1449,7 @@ lblTriggered=ha innescato
lblActivated=ha attivato
lblLogPlayerActionObjectWitchTarget={0} {1} {2} con bersaglio {3}
lblLogPlayerActionObject={0} {1} {2}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard={0} ha scelto {1} per {2}.
lblLogPlayerHasRestoredControlThemself={0} ha ripreso il controllo di sé stesso
lblLogPlayerControlledTargetPlayer={0} è controllato da {1}
@@ -1844,6 +1845,11 @@ lblChooseOpponent=Scegli un avversario
lblReveals=rivela
lblWinsClash=vince lo scontro
lblLosesClash=perde lo scontro
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy=Vuoi copiare {0}?
#ControlExchangeEffect.java
@@ -2127,6 +2133,8 @@ lblGameplayResults=Risultati
lblResultIs=Risultato: {0}
lblPlayerRandomChosenNumberIs=Il numero scelto a caso per {0} è {1}
lblPlayerChoosesNumberIs={0} sceglie il numero: {1}
lblRandomColorChosen=Randomly chosen color: {0}
lblRandomTypeChosen=Randomly chosen type: {0}
lblPlayerChooseValueOfEffectOfCard={0} ha scelto{1} per effetto di {2}
lblPlayerFlipComesUpValue=Al lancio di {0} è uscita {1}
lblPlayerActionFlip={0} {1} il lancio

View File

@@ -1450,6 +1450,7 @@ lblTriggered=が誘発された
lblActivated=を起動した
lblLogPlayerActionObjectWitchTarget={0} {3}を対象に {2} {1}
lblLogPlayerActionObject={0} {2} {1}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard={0}は {2}の {1}を選択しました。
lblLogPlayerHasRestoredControlThemself={0}は自身の制御が戻りました
lblLogPlayerControlledTargetPlayer={0}は {1}によって制御されます
@@ -1844,6 +1845,11 @@ lblChooseOpponent=対戦相手1人を選ぶ
lblReveals=公開する
lblWinsClash=が激突に勝利した
lblLosesClash=が激突に負けた
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy={0}をコピーしますか?
#ControlExchangeEffect.java
@@ -2127,6 +2133,8 @@ lblGameplayResults=ゲームの結果
lblResultIs=結果:{0}
lblPlayerRandomChosenNumberIs={0}のランダムに選択された数値は{1}です
lblPlayerChoosesNumberIs={0}が番号を選択:{1}
lblRandomColorChosen=Randomly chosen color: {0}
lblRandomTypeChosen=Randomly chosen type: {0}
lblPlayerChooseValueOfEffectOfCard={0}は{2}の効果のために{1}を選択します
lblPlayerFlipComesUpValue={0}コイン投げ:{1}
lblPlayerActionFlip={0}のコイン投げ:{1}

View File

@@ -1451,6 +1451,7 @@ lblTriggered=触发了
lblActivated=起动了
lblLogPlayerActionObjectWitchTarget={0}{1}{2}目标为{3}
lblLogPlayerActionObject={0}{1}{2}
lblLogRandomMode={0}''s random mode: {1}
lblLogPlayerChosenModeForCard={0}为{2}选择了模式{1}。
lblLogPlayerHasRestoredControlThemself={0}恢复了他的控制权
lblLogPlayerControlledTargetPlayer={0}控制了{1}
@@ -1848,6 +1849,11 @@ lblChooseOpponent=选择一个对手
lblReveals=展示
lblWinsClash=比点赢了
lblLosesClash=比点输了
#CleanUpEffect.java
lblChosenCard={0}''s chosen card: {1}
lblChosenMultiCard={0}''s chosen cards: {1}
lblChosenPlayer={0}''s chosen player: {1}
lblNoValidChoice={0} found no valid choices.
#CloneEffect.java
lblDoYouWantCopy=你想要复制{0}吗?
#ControlExchangeEffect.java
@@ -2129,6 +2135,8 @@ lblGameplayResults=游戏结果
lblResultIs=结果为:{0}
lblPlayerRandomChosenNumberIs={0}随机选择的数字为{1}
lblPlayerChoosesNumberIs={0}选择的数字为:{1}
lblRandomColorChosen=Randomly chosen color: {0}
lblRandomTypeChosen=Randomly chosen type: {0}
lblPlayerChooseValueOfEffectOfCard={0}选择{2}对{1}生效
lblPlayerFlipComesUpValue={0}掷到了{1}
lblPlayerActionFlip={0}{1}了骰子

View File

@@ -0,0 +1,7 @@
Name:Spawn of Azar
ManaCost:no cost
Types:Creature Spawn
Colors:black
PT:*/*
K:Swampwalk
Oracle:Swampwalk

View File

@@ -193,7 +193,7 @@ public class HumanPlaySpellAbility {
// no worries here. The same thread must resolve, and by this moment ability will have been resolved already
// Triggers haven't resolved yet ??
if (mayChooseTargets) {
if (mayChooseTargets && !ability.hasParam("TargetsAtRandom")) {
ability.clearTargets();
}
if (manaTypeConversion || manaColorConversion || keywordColor) {

View File

@@ -117,9 +117,20 @@ public class TargetSelection {
final boolean choiceResult;
if (tgt.isRandomTarget() && numTargets == null) {
final List<GameEntity> candidates = tgt.getAllCandidates(this.ability, true);
final GameObject choice = Aggregates.random(candidates);
return ability.getTargets().add(choice);
List<GameEntity> candidates = tgt.getAllCandidates(this.ability, true);
List<GameEntity> choices = new ArrayList<>();
// currently, only cards that target randomly use a random number of targets
int top = Math.min(candidates.size(), maxTargets); // prevents choosing more targets than possible
int bot = minTargets > 0 ? minTargets : 1; // prevents randomly choosing zero targets
int num = tgt.isRandomNumTargets() ? Aggregates.randomInt(bot, top) : minTargets;
for (int i=0; i<num; i++) {
final GameEntity choice = Aggregates.random(candidates);
if (choice != null) {
choices.add(choice);
candidates.remove(choice);
}
}
return ability.getTargets().addAll(choices);
}
else if (zones.size() == 1 && zones.get(0) == ZoneType.Stack) {
// If Zone is Stack, the choices are handled slightly differently.