Added/fixed primitives, updated the "missing_cards_by_sets" folder, fixed several crash on Commander Format, fixed a possible crash using "and!()!" with "imprint", added a new macros "_REBOUND_" and "_GOAD_" related to rebound and goad abilities and refactored all cards using them, implemented a new keywords "haunt", "hasprey", "preyname" and "isprey" related the haunting ability and improved all cards using it, Added "commander" and "\*" to HINT castpriority for AI decks in order to allow the user to give a cast priority to commanders.

This commit is contained in:
Vittorio Alfieri
2021-09-02 19:32:45 +02:00
parent 54d0c32035
commit 001cea95bd
51 changed files with 634 additions and 800 deletions
+31 -51
View File
@@ -6104,8 +6104,7 @@ type=Sorcery
name=Artful Maneuver
target=creature
auto=2/2 ueot
auto=if rebound then ability$!moveto(exile) all(Artful Maneuver|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={1}{W}
type=Instant
@@ -18184,8 +18183,7 @@ auto=choice name(red) transforms((,newability[protection from red])) ueot
auto=choice name(blue) transforms((,newability[protection from blue])) ueot
auto=choice name(black) transforms((,newability[protection from black])) ueot
auto=choice name(white) transforms((,newability[protection from white])) ueot
auto=if rebound then ability$!moveto(exile) all(Center Soul|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={1}{W}
type=Instant
@@ -22106,8 +22104,7 @@ type=Instant
name=Consuming Vapors
target=player
auto=ability$! notatarget(creature|mybattlefield) dynamicability<!mytgt toughnesslifegain abilitycontroller!> sacrifice ) !$ targetedplayer
auto=if rebound then ability$!moveto(exile) all(Consuming Vapors|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target player sacrifices a creature. You gain life equal to that creature's toughness. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{B}
type=Sorcery
@@ -30214,8 +30211,7 @@ name=Distortion Strike
target=creature
auto=1/0 ueot
auto=unblockable ueot
auto=if rebound then ability$!moveto(exile) all(Distortion Strike|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature gets +1/+0 until end of turn and is unblockable this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={U}
type=Sorcery
@@ -35460,8 +35456,7 @@ auto=choice name(red) transforms((,newability[protection from red])) ueot
auto=choice name(blue) transforms((,newability[protection from blue])) ueot
auto=choice name(black) transforms((,newability[protection from black])) ueot
auto=choice name(white) transforms((,newability[protection from white])) ueot
auto=if rebound then ability$!moveto(exile) all(Emerge Unscathed|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature you control gains protection from the color of your choice until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={W}
type=Instant
@@ -49859,8 +49854,7 @@ toughness=3
[card]
name=Great Teacher's Decree
auto=all(creature|mybattlefield) 2/1 ueot
auto=if rebound then ability$!moveto(exile) all(Great Teacher's Decree|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Creatures you control get +2/+1 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{W}
type=Sorcery
@@ -80530,8 +80524,7 @@ toughness=2
[card]
name=Nomads' Assembly
auto=token(Kor Soldier,Creature Kor Soldier,1/1,white)*type:creature:mybattlefield
auto=if rebound then ability$!moveto(exile) all(Nomads' Assembly|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Put a 1/1 white Kor Soldier creature token onto the battlefield for each creature you control. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{W}{W}
type=Sorcery
@@ -81906,17 +81899,15 @@ toughness=6
name=Ojutai's Breath
target=creature
auto=freeze
auto=if rebound then ability$!moveto(exile) all(Ojutai's Breath|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Tap target creature. It doesn't untap during its controller's next untap step. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{U}
type=Instant
[/card]
[card]
name=Ojutai's Summons
auto=create(Djinn Monk:Creature Djinn Monk:2/2:flying:blue)
auto=if rebound then ability$!moveto(exile) all(Ojutai's Summons|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=token(Djinn Monk,Creature Djinn Monk,2/2,flying,blue)
auto=_REBOUND_
text=Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U}{U}
type=Sorcery
@@ -88191,8 +88182,7 @@ type=Sorcery
name=Prey's Vengeance
target=creature
auto=2/2
auto=if rebound then ability$!moveto(exile) all(Prey's Vengeance|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature gets +2/+2 until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={G}
type=Instant
@@ -88949,8 +88939,7 @@ type=Sorcery
name=Profound Journey
target=*[-instant;-sorcery]|mygraveyard
auto=moveto(ownerbattlefield)
auto=if rebound then ability$!moveto(exile) all(Profound Journey|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Return target permanent card from your graveyard to the battlefield. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={5}{W}{W}
type=Sorcery
@@ -93160,8 +93149,7 @@ type=Instant
name=Recurring Insight
target=opponent
auto=draw:type:*:targetedpersonshand controller
auto=if rebound then ability$!moveto(exile) all(Recurring Insight|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Draw cards equal to the number of cards in target opponent's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{U}{U}
type=Sorcery
@@ -105066,8 +105054,7 @@ name=Sight Beyond Sight
abilities=hiddenface
aicode=activate transforms((,newability[moveto(myhand) all(*[zpos=1]|mylibrary) && bottomoflibrary all(*[zpos=2]|mylibrary)])) ueot
auto=name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend
auto=if rebound then ability$!moveto(exile) all(Sight Beyond Sight|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Look at the top two cards of your library. Put one of them into your hand and the other on the bottom of your library. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U}
type=Sorcery
@@ -108207,13 +108194,14 @@ toughness=2
[/card]
[card]
name=Smallpox
auto=ability$!life:-1 all(player)!$ controller
auto=ability$!reject notatarget(*|myhand)!$ controller
auto=ability$!reject notatarget(*|myhand)!$ opponent
auto=ability$!sacrifice notatarget(creature|mybattlefield)!$ controller
auto=ability$!sacrifice notatarget(creature|mybattlefield)!$ opponent
auto=ability$!sacrifice notatarget(land|mybattlefield)!$ controller
auto=ability$!sacrifice notatarget(land|mybattlefield)!$ opponent
auto=life:-1 controller
auto=life:-1 opponent
auto=ability$!name(Discard a card) name(Discard a card) target(*|myhand) reject!$ controller
auto=ability$!name(Discard a card) name(Discard a card) target(*|myhand) reject!$ opponent
auto=ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ controller
auto=ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ opponent
auto=ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ controller
auto=ability$!name(Sacrifice a land) name(Sacrifice a land) target(land|mybattlefield) sacrifice!$ opponent
text=Each player loses 1 life, discards a card, sacrifices a creature, then sacrifices a land.
mana={B}{B}
type=Sorcery
@@ -112416,8 +112404,7 @@ toughness=0
name=Staggershock
target=creature,player
auto=damage:2
auto=if rebound then ability$!moveto(exile) all(Staggershock|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Staggershock deals 2 damage to target creature or player. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{R}
type=Instant
@@ -116111,8 +116098,7 @@ toughness=1
[card]
name=Surreal Memoir
auto=moverandom(instant) from(mygraveyard) to(myhand)
auto=if rebound then ability$!moveto(exile) all(Surreal Memoir|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Return an instant card at random from your graveyard to your hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{R}
type=Sorcery
@@ -116140,8 +116126,7 @@ type=Sorcery
name=Survival Cache
auto=life:2 controller
auto=if compare(lifetotal)~morethan~compare(opponentlifetotal) then draw:1 controller
auto=if rebound then ability$!moveto(exile) all(Survival Cache|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=You gain 2 life. Then if you have more life than an opponent, draw a card. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={2}{W}
type=Sorcery
@@ -116647,8 +116632,7 @@ subtype=Equipment
name=Sword of the Animist
auto={2}:equip
auto=teach(creature) 1/1
aicode=activate moveTo(myBattlefield) and!(tap(noevent))! target(land[basic]|myLibrary)
auto=@combat(attacking) source(mytgt):name(search card) reveal:plibrarycount optionone name(choose card) target(land[basic]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put back) target(<1>*|reveal) moveto(ownerlibrary) and!( all(*|reveal) moveto(ownerlibrary) and!(shuffle)! )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!(moveTo(myBattlefield) and!(tap(noevent))!)! afterrevealedend revealend
auto=@combat(attacking) source(mytgt):may name(search basic land) target(land[basic]|myLibrary) moveTo(myBattlefield) and!( transforms((,newability[tap(noevent)],newability[shuffle])) oneshot )!
text=Equipped creature gets +1/+1. -- Whenever equipped creature attacks, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. -- Equip {2}
mana={2}
type=Legendary Artifact
@@ -117168,8 +117152,7 @@ name=Taigam's Strike
target=creature
auto=2/0 ueot
auto=unblockable ueot
auto=if rebound then ability$!moveto(exile) all(Taigam's Strike|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature gets +2/+0 until end of turn and can't be blocked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{U}
type=Sorcery
@@ -129395,8 +129378,7 @@ toughness=1
name=Virulent Swipe
target=creature
auto=transforms((,newability[2/0],newability[deachtouch])) ueot
auto=if rebound then ability$!moveto(exile) all(Virulent Swipe|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Target creature gets +2/+0 and gains deathtouch until end of turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={B}
type=Instant
@@ -129994,8 +129976,7 @@ type=Sorcery
name=Void Squall
target=*[-land]
auto=moveto(ownerhand)
auto=if rebound then ability$!moveto(exile) all(Void Squall|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=_REBOUND_
text=Return target nonland permanent to its owner's hand. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={4}{U}
type=Sorcery
@@ -135609,9 +135590,8 @@ toughness=2
[card]
name=World at War
auto=nextphasealter(add,combatphaseswithmain,controller,after<postbattle>)
auto=untap all(creature[attacking])
auto=if rebound then ability$!moveto(exile) all(World at War|mystack)!$ controller
autoexile=@rebounded:may activate castcard(normal)
auto=all(creature|mybattlefield) transforms((,newability[@each my combatends turnlimited:phaseaction[combatbegins once sourceinplay] untap])) ueot
auto=_REBOUND_
text=After the first postcombat main phase this turn, there's an additional combat phase followed by an additional main phase. At the beginning of that combat, untap all creatures that attacked this turn. -- Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
mana={3}{R}{R}
type=Sorcery