Added/fixed primitives, updated the "missing_cards_by_sets" folder, added new ability "hasstrive" to implement Strive cost with multikicker and refactored all cards with Strive cost (now they use a special version of multikicker but they don't count as kicked spell), improved "targeted" and "vampired" trigger to allow the "turnlimited" option, improved Android gesture to emulate "option menu" button pressure (slide down) and emulate "back" button pressure (slide up).

This commit is contained in:
Vittorio Alfieri
2021-09-07 21:41:24 +02:00
parent 9dabf121d3
commit 9aa15766d4
21 changed files with 424 additions and 512 deletions

View File

@@ -2,8 +2,11 @@
## [master] (https://github.com/WagicProject/wagic/tree/master) ## [master] (https://github.com/WagicProject/wagic/tree/master)
### 07/09/21
- *Committed:* Added/fixed primitives, updated the "missing_cards_by_sets" folder, added new ability "hasstrive" to implement Strive cost with multikicker and refactored all cards with Strive cost (now they use a special version of multikicker but they don't count as kicked spell), improved "targeted" and "vampired" trigger to allow the "turnlimited" option, improved Android gesture to emulate "option menu" button pressure (slide down) and emulate "back" button pressure (slide up). ([Vitty85](https://github.com/Vitty85))
### 06/09/21 ### 06/09/21
- *Committed:* Fixed primitives, changed type of "isFlipped" card variable from bool to int and fixed a related bug on targeting cards with "isFlipped" attribute, improved "disturb" ability (now fi you counter a card casted with disturb it correctly goes to exile), added "decayed" ability, added two new zone alias "mycommandplay" and "opponentcommandplay" for targeting Battlefield and CommandZone at the same time. ([Vitty85](https://github.com/Vitty85)) - *Committed:* Fixed primitives, changed type of "isFlipped" card variable from bool to int and fixed a related bug on targeting cards with "isFlipped" attribute, improved "disturb" ability (now fi you counter a card casted with disturb it correctly goes to exile), added "decayed" ability, added two new zone alias "mycommandplay" and "opponentcommandplay" for targeting Battlefield and CommandZone at the same time. https://github.com/WagicProject/wagic/commit/9dabf121d3719aa0d684e9d5d9732dc1b4a92b3d ([Vitty85](https://github.com/Vitty85))
### 04/09/21 ### 04/09/21
- *Committed:* Fixed bug that was not correctly showing the full Commander decks list in the deck choosing menu page, added a new gesture for Android to emulate back button pressure: now sliding from down to up for almost all screen size will trigger the back button in game (e.g. pause match in gameplay, going back from shop, and so on). https://github.com/WagicProject/wagic/commit/ccae9673e620b8f47aa66e9b9f25cbd79a715d2b ([Vitty85](https://github.com/Vitty85)) - *Committed:* Fixed bug that was not correctly showing the full Commander decks list in the deck choosing menu page, added a new gesture for Android to emulate back button pressure: now sliding from down to up for almost all screen size will trigger the back button in game (e.g. pause match in gameplay, going back from shop, and so on). https://github.com/WagicProject/wagic/commit/ccae9673e620b8f47aa66e9b9f25cbd79a715d2b ([Vitty85](https://github.com/Vitty85))

View File

@@ -1811,7 +1811,6 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
// Touch events // Touch events
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
// Show Menu for devices without sidebar (e.g. Android 10)
switch (event.getAction()) { switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: case MotionEvent.ACTION_POINTER_DOWN:
@@ -1821,10 +1820,13 @@ class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
case MotionEvent.ACTION_POINTER_UP: case MotionEvent.ACTION_POINTER_UP:
y2 = event.getY(); y2 = event.getY();
float deltaY = y2 - y1; float deltaY = y2 - y1;
if (deltaY > DELTA_Y) if (deltaY > DELTA_Y) {
parent.showOptionMenu(); // Emulate Android option menu button pressure. parent.showOptionMenu(); // Emulate Android "optionmenu" button pressure (for devices without sidebar, e.g. like Android 10).
else if (deltaY < -DELTA_Y) return true;
SDLActivity.onNativeKeyDown(KeyEvent.KEYCODE_BACK ); // Emulate Android back button pressure. } else if (deltaY < -DELTA_Y){
SDLActivity.onNativeKeyDown(KeyEvent.KEYCODE_BACK); // Emulate Android "back" button pressure (for devices without sidebar, e.g. like Android 10).
return true;
}
break; break;
} }

View File

@@ -91,16 +91,6 @@ type=Instant
subtype=Arcane subtype=Arcane
[/card] [/card]
[card] [card]
name=Kira, Great Glass-Spinner
abilities=flying
text=Flying -- Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
mana={1}{U}{U}
type=Legendary Creature
subtype=Spirit
power=2
toughness=2
[/card]
[card]
name=Vital Surge name=Vital Surge
text=You gain 3 life. -- Splice onto Arcane {1}{G} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) text=You gain 3 life. -- Splice onto Arcane {1}{G} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.)
mana={1}{G} mana={1}{G}

View File

@@ -56,13 +56,6 @@ mana={2}{W}{W}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Teferi's Protection
abilities=exiledeath
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Portal Mage name=Portal Mage
abilities=flash abilities=flash
auto=phasealter(remove,combatphases,controller) auto=phasealter(remove,combatphases,controller)

View File

@@ -92,15 +92,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Riftsweeper
text=When Riftsweeper enters the battlefield, choose target face-up exiled card. Its owner shuffles it into his or her library.
mana={1}{G}
type=Creature
subtype=Elf Shaman
power=2
toughness=2
[/card]
[card]
name=Shapeshifter's Marrow name=Shapeshifter's Marrow
text=At the beginning of each opponent's upkeep, that player reveals the top card of his or her library. If it's a creature card, the player puts the card into his or her graveyard and Shapeshifter's Marrow becomes a copy of that card. (If it does, it loses this ability.) text=At the beginning of each opponent's upkeep, that player reveals the top card of his or her library. If it's a creature card, the player puts the card into his or her graveyard and Shapeshifter's Marrow becomes a copy of that card. (If it does, it loses this ability.)
mana={2}{U}{U} mana={2}{U}{U}

View File

@@ -1,37 +0,0 @@
[card]
name=Face of Divinity
auto=teach(creature) 2/2
text=Enchant creature -- Enchanted creature gets +2/+2. -- As long as another Aura is attached to enchanted creature, it has first strike and lifelink.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Kira, Great Glass-Spinner
abilities=flying
text=Flying -- Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
mana={1}{U}{U}
type=Legendary Creature
subtype=Spirit
power=2
toughness=2
[/card]
[card]
name=Sin Prodder
abilities=menace
text=Menace -- At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.
mana={2}{R}
type=Creature
subtype=Devil
power=3
toughness=2
[/card]
[card]
name=Neyith of the Dire Hunt
text=Whenever one or more creatures you control fight or become blocked, draw a card. -- At the beginning of combat on your turn, you may pay {2}{R} or {G}. If you do, double target creature's power until end of turn. That creature must be blocked this combat if able. ( {R} or {G} can be paid with either {R} or {G}.)
mana={2}{G}{G}
type=Legendary Creature
subtype=Human Warrior
power=3
toughness=3
[/card]

View File

@@ -1,13 +1,4 @@
[card] [card]
name=Goldenhide Ox
text=Constellation — Whenever Goldenhide Ox or another enchantment enters the battlefield under your control, target creature must be blocked this turn if able.
mana={5}{G}
type=Enchantment Creature
subtype=Ox
power=5
toughness=4
[/card]
[card]
name=Godsend name=Godsend
text=Equipped creature gets +3/+3. -- Whenever equipped creature blocks or becomes blocked by one or more creatures, you may exile one of those creatures. -- Opponents can't cast cards with the same name as cards exiled with Godsend. -- Equip {3} text=Equipped creature gets +3/+3. -- Whenever equipped creature blocks or becomes blocked by one or more creatures, you may exile one of those creatures. -- Opponents can't cast cards with the same name as cards exiled with Godsend. -- Equip {3}
mana={1}{W}{W} mana={1}{W}{W}
@@ -45,18 +36,3 @@ text=You control target player during that player's next turn. Exile Worst Fears
mana={7}{B} mana={7}{B}
type=Sorcery type=Sorcery
[/card] [/card]
[card]
name=Disciple of Deceit
text=Inspired — Whenever Disciple of Deceit becomes untapped, you may discard a nonland card. If you do, search your library for a card with the same converted mana cost as that card, reveal it, put it into your hand, then shuffle your library.
mana={U}{B}
type=Creature
subtype=Human Rogue
power=1
toughness=3
[/card]
[card]
name=Polymorphous Rush
text=Strive — Polymorphous Rush costs {1}{U} more to cast for each target beyond the first. -- Choose a creature on the battlefield. Any number of target creatures you control each become a copy of that creature until end of turn.
mana={2}{U}
type=Instant
[/card]

View File

@@ -53,13 +53,6 @@ mana={4}
type=Artifact type=Artifact
[/card] [/card]
[card] [card]
name=Teferi's Protection
abilities=exiledeath
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Carpet of Flowers name=Carpet of Flowers
text=At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls. text=At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls.
mana={G} mana={G}

View File

@@ -34,14 +34,6 @@ power=3
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Face of Divinity
auto=teach(creature) 2/2
text=Enchant creature -- Enchanted creature gets +2/+2. -- As long as another Aura is attached to enchanted creature, it has first strike and lifelink.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Mirrodin Besieged name=Mirrodin Besieged
text=As Mirrodin Besieged enters the battlefield, choose Mirran or Phyrexian. -- • Mirran — Whenever you cast an artifact spell, create a 1/1 colorless Myr artifact creature token. -- • Phyrexian — At the beginning of your end step, draw a card, then discard a card. Then if there are fifteen or more artifact cards in your graveyard, target opponent loses the game. text=As Mirrodin Besieged enters the battlefield, choose Mirran or Phyrexian. -- • Mirran — Whenever you cast an artifact spell, create a 1/1 colorless Myr artifact creature token. -- • Phyrexian — At the beginning of your end step, draw a card, then discard a card. Then if there are fifteen or more artifact cards in your graveyard, target opponent loses the game.
mana={2}{U} mana={2}{U}

View File

@@ -9,25 +9,6 @@ power=4
toughness=4 toughness=4
[/card] [/card]
[card] [card]
name=Kira, Great Glass-Spinner
abilities=flying
text=Flying -- Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
mana={1}{U}{U}
type=Legendary Creature
subtype=Spirit
power=2
toughness=2
[/card]
[card]
name=Riftsweeper
text=When Riftsweeper enters the battlefield, choose target face-up exiled card. Its owner shuffles it into his or her library.
mana={1}{G}
type=Creature
subtype=Elf Shaman
power=2
toughness=2
[/card]
[card]
name=Gifts Ungiven name=Gifts Ungiven
text=Search your library for four cards with different names and reveal them. Target opponent chooses two of those cards. Put the chosen cards into your graveyard and the rest into your hand. Then shuffle your library. text=Search your library for four cards with different names and reveal them. Target opponent chooses two of those cards. Put the chosen cards into your graveyard and the rest into your hand. Then shuffle your library.
mana={3}{U} mana={3}{U}

View File

@@ -39,13 +39,6 @@ power=3
toughness=4 toughness=4
[/card] [/card]
[card] [card]
name=Teferi's Protection
abilities=exiledeath
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Reality Scramble name=Reality Scramble
text=Put target permanent you own on the bottom of your library. Reveal cards from the top of your library until you reveal a card that shares a card type with that permanent. Put that card onto the battlefield and the rest on the bottom of your library in a random order. -- Retrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.) text=Put target permanent you own on the bottom of your library. Reveal cards from the top of your library until you reveal a card that shares a card type with that permanent. Put that card onto the battlefield and the rest on the bottom of your library in a random order. -- Retrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.)
mana={2}{R}{R} mana={2}{R}{R}

View File

@@ -1,14 +1,4 @@
[card] [card]
name=Sin Prodder
abilities=menace
text=Menace -- At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.
mana={2}{R}
type=Creature
subtype=Devil
power=3
toughness=2
[/card]
[card]
name=Epiphany at the Drownyard name=Epiphany at the Drownyard
text=Reveal the top X plus one cards of your library and separate them into two piles. An opponent chooses one of those piles. Put that pile into your hand and the other into your graveyard. text=Reveal the top X plus one cards of your library and separate them into two piles. An opponent chooses one of those piles. Put that pile into your hand and the other into your graveyard.
mana={X}{U} mana={X}{U}

View File

@@ -1,11 +1,4 @@
[card] [card]
name=Teferi's Protection
abilities=exiledeath
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Tainted Pact name=Tainted Pact
text=Exile the top card of your library. You may put that card into your hand unless it has the same name as another card exiled this way. Repeat this process until you put a card into your hand or you exile two cards with the same name, whichever comes first. text=Exile the top card of your library. You may put that card into your hand unless it has the same name as another card exiled this way. Repeat this process until you put a card into your hand or you exile two cards with the same name, whichever comes first.
mana={1}{B} mana={1}{B}

View File

@@ -545,7 +545,8 @@ toughness=4
[/card] [/card]
[card] [card]
name=Aerial Formation name=Aerial Formation
kicker=multi{2}{U} abilities=hasnokicker,hasstrive
kicker=multi{2}{U} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1],newability[flying])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1],newability[flying])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1],newability[flying])) ueot
@@ -565,8 +566,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1],newability[flying])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1],newability[flying])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1],newability[flying])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1],newability[flying])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1],newability[flying])) ueot
text=Strive Aerial Formation costs {2}{U} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+1 and gain flying until end of turn. text=Strive - Aerial Formation costs {2}{U} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+1 and gain flying until end of turn.
mana={U} mana={U}
type=Instant type=Instant
[/card] [/card]
@@ -940,7 +941,8 @@ type=Enchantment
[/card] [/card]
[card] [card]
name=Ajani's Presence name=Ajani's Presence
kicker=multi{2}{W} abilities=hasnokicker,hasstrive
kicker=multi{2}{W} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1],newability[indestructible])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1],newability[indestructible])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1],newability[indestructible])) ueot
@@ -960,8 +962,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1],newability[indestructible])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1],newability[indestructible])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1],newability[indestructible])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1],newability[indestructible])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1],newability[indestructible])) ueot
text=Strive Ajani's Presence costs {2}{W} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+1 and gain indestructible until end of turn. (Damage and effects that say "destroy" don't destroy them.) text=Strive - Ajani's Presence costs {2}{W} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+1 and gain indestructible until end of turn. (Damage and effects that say "destroy" don't destroy them.)
mana={W} mana={W}
type=Instant type=Instant
[/card] [/card]
@@ -6261,27 +6263,29 @@ type=Instant
[/card] [/card]
[card] [card]
name=Blinding Flare name=Blinding Flare
auto=choice name(Don't strive) ability$!name(choose 1 creature) name(choose 1 creature) target(*[creature]) cantblock ueot!$ controller abilities=hasnokicker,hasstrive
auto=choice name(Strive 1) ability$!name(choose 2 creatures) pay[[{R}]] name(choose 2 creatures) target(<2>*[creature]) cantblock ueot!$ controller kicker=multi{R} name(Strive)
auto=choice name(Strive 2) ability$!name(choose 3 creatures) pay[[{R}{R}]] name(choose 3 creatures) target(<3>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 3) ability$!name(choose 4 creatures) pay[[{R}{R}{R}]] name(choose 4 creatures)target(<4>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 4) ability$!name(choose 5 creatures) pay[[{R}{R}{R}{R}]] name(choose 5 creatures) target(<5>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 5) ability$!name(choose 6 creatures) pay[[{R}{R}{R}{R}{R}]] name(choose 6 creatures) target(<6>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 6) ability$!name(choose 7 creatures) pay[[{R}{R}{R}{R}{R}{R}]] name(choose 7 creatures) target(<7>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 7) ability$!name(choose 8 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}]] name(choose 8 creatures) target(<8>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 8) ability$!name(choose 9 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 9 creatures) target(<9>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 9) ability$!name(choose 10 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 10 creatures) target(<10>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 10) ability$!name(choose 11 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 11 creatures) target(<11>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 11) ability$!name(choose 12 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 12 creatures) target(<12>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 12) ability$!name(choose 13 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 13 creatures) target(<13>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 13) ability$!name(choose 14 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 14 creatures)target(<14>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 14) ability$!name(choose 15 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 15 creatures) target(<15>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 15) ability$!name(choose 16 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 16 creatures) target(<16>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 16) ability$!name(choose 17 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 17 creatures) target(<17>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 17) ability$!name(choose 18 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 18 creatures) target(<18>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 18) ability$!name(choose 19 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 19 creatures) target(<19>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[cantblock])) ueot
auto=choice name(Strive 19) ability$!name(choose 20 creatures) pay[[{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}{R}]] name(choose 20 creatures) target(<20>*[creature]) cantblock ueot!$ controller auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[cantblock])) ueot
text=Strive — Blinding Flare costs {R} more to cast for each target beyond the first. -- Any number of target creatures can't block this turn. auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[cantblock])) ueot
auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[cantblock])) ueot
text=Strive - Blinding Flare costs {R} more to cast for each target beyond the first. -- Any number of target creatures can't block this turn.
mana={R} mana={R}
type=Sorcery type=Sorcery
[/card] [/card]
@@ -8657,8 +8661,9 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Call the Coppercoats name=Call the Coppercoats
abilities=hasstrive
auto=foreach(creature|opponentBattlefield) token(Soldier Call) auto=foreach(creature|opponentBattlefield) token(Soldier Call)
text=Strive This spell costs {1}{W} more to cast for each target beyond the first. -- Choose any number of target opponents. Create X 1/1 white Human soldier creature tokens, where X is the number of creatures those opponents control. text=Strive - This spell costs {1}{W} more to cast for each target beyond the first. -- Choose any number of target opponents. Create X 1/1 white Human soldier creature tokens, where X is the number of creatures those opponents control.
mana={2}{W} mana={2}{W}
type=Instant type=Instant
[/card] [/card]
@@ -11706,7 +11711,8 @@ toughness=6
[/card] [/card]
[card] [card]
name=Colossal Heroics name=Colossal Heroics
kicker=multi{1}{G} abilities=hasnokicker,hasstrive
kicker=multi{1}{G} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/2],newability[untap])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/2],newability[untap])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/2],newability[untap])) ueot
@@ -11726,8 +11732,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/2],newability[untap])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/2],newability[untap])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/2],newability[untap])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/2],newability[untap])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/2],newability[untap])) ueot
text=Strive Colossal Heroics costs {1}{G} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+2 until end of turn. Untap those creatures. text=Strive - Colossal Heroics costs {1}{G} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+2 until end of turn. Untap those creatures.
mana={2}{G} mana={2}{G}
type=Instant type=Instant
[/card] [/card]
@@ -12329,27 +12335,29 @@ type=Instant
[/card] [/card]
[card] [card]
name=Consign to Dust name=Consign to Dust
auto=choice name(Don't strive) ability$!name(choose 1 artifact or enchantment) name(choose 1 artifact or enchantment) target(*[artifact;enchantment]) destroy!$ controller abilities=hasnokicker,hasstrive
auto=choice name(Strive 1) ability$!name(choose 2 artifacts or enchantments) pay[[{2}{G}]] name(choose 2 artifacts or enchantments) target(<2>*[artifact;enchantment]) destroy!$ controller kicker=multi{2}{G} name(Strive)
auto=choice name(Strive 2) ability$!name(choose 3 artifacts or enchantments) pay[[{4}{G}{G}]] name(choose 3 artifacts or enchantments) target(<3>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~0 then name(choose 1 artifact or enchantment) name(choose 1 artifact or enchantment) target(*[artifact;enchantment]) destroy
auto=choice name(Strive 3) ability$!name(choose 4 artifacts or enchantments) pay[[{6}{G}{G}{G}]] name(choose 4 artifacts or enchantments)target(<4>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~1 then name(choose 2 artifacts or enchantments) name(choose 2 artifacts or enchantments) target(<upto:2>*[artifact;enchantment]) destroy
auto=choice name(Strive 4) ability$!name(choose 5 artifacts or enchantments) pay[[{8}{G}{G}{G}{G}]] name(choose 5 artifacts or enchantments) target(<5>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~2 then name(choose 3 artifacts or enchantments) name(choose 3 artifacts or enchantments) target(<upto:3>*[artifact;enchantment]) destroy
auto=choice name(Strive 5) ability$!name(choose 6 artifacts or enchantments) pay[[{10}{G}{G}{G}{G}{G}]] name(choose 6 artifacts or enchantments) target(<6>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~3 then name(choose 4 artifacts or enchantments) name(choose 4 artifacts or enchantments) target(<upto:4>*[artifact;enchantment]) destroy
auto=choice name(Strive 6) ability$!name(choose 7 artifacts or enchantments) pay[[{12}{G}{G}{G}{G}{G}{G}]] name(choose 7 artifacts or enchantments) target(<7>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~4 then name(choose 5 artifacts or enchantments) name(choose 5 artifacts or enchantments) target(<upto:5>*[artifact;enchantment]) destroy
auto=choice name(Strive 7) ability$!name(choose 8 artifacts or enchantments) pay[[{14}{G}{G}{G}{G}{G}{G}{G}]] name(choose 8 artifacts or enchantments) target(<8>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~5 then name(choose 6 artifacts or enchantments) name(choose 6 artifacts or enchantments) target(<upto:6>*[artifact;enchantment]) destroy
auto=choice name(Strive 8) ability$!name(choose 9 artifacts or enchantments) pay[[{16}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 9 artifacts or enchantments) target(<9>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~6 then name(choose 7 artifacts or enchantments) name(choose 7 artifacts or enchantments) target(<upto:7>*[artifact;enchantment]) destroy
auto=choice name(Strive 9) ability$!name(choose 10 artifacts or enchantments) pay[[{18}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 10 artifacts or enchantments) target(<10>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~7 then name(choose 8 artifacts or enchantments) name(choose 8 artifacts or enchantments) target(<upto:8>*[artifact;enchantment]) destroy
auto=choice name(Strive 10) ability$!name(choose 11 artifacts or enchantments) pay[[{20}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 11 artifacts or enchantments) target(<11>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~8 then name(choose 9 artifacts or enchantments) name(choose 9 artifacts or enchantments) target(<upto:9>*[artifact;enchantment]) destroy
auto=choice name(Strive 11) ability$!name(choose 12 artifacts or enchantments) pay[[{22}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 12 artifacts or enchantments) target(<12>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~9 then name(choose 10 artifacts or enchantments) name(choose 10 artifacts or enchantments) target(<upto:10>*[artifact;enchantment]) destroy
auto=choice name(Strive 12) ability$!name(choose 13 artifacts or enchantments) pay[[{24}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 13 artifacts or enchantments) target(<13>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~10 then name(choose 11 artifacts or enchantments) name(choose 11 artifacts or enchantments) target(<upto:11>*[artifact;enchantment]) destroy
auto=choice name(Strive 13) ability$!name(choose 14 artifacts or enchantments) pay[[{26}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 14 artifacts or enchantments)target(<14>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~11 then name(choose 12 artifacts or enchantments) name(choose 12 artifacts or enchantments) target(<upto:12>*[artifact;enchantment]) destroy
auto=choice name(Strive 14) ability$!name(choose 15 artifacts or enchantments) pay[[{28}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 15 artifacts or enchantments) target(<15>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~12 then name(choose 13 artifacts or enchantments) name(choose 13 artifacts or enchantments) target(<upto:13>*[artifact;enchantment]) destroy
auto=choice name(Strive 15) ability$!name(choose 16 artifacts or enchantments) pay[[{30}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 16 artifacts or enchantments) target(<16>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~13 then name(choose 14 artifacts or enchantments) name(choose 14 artifacts or enchantments) target(<upto:14>*[artifact;enchantment]) destroy
auto=choice name(Strive 16) ability$!name(choose 17 artifacts or enchantments) pay[[{32}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 17 artifacts or enchantments) target(<17>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~14 then name(choose 15 artifacts or enchantments) name(choose 15 artifacts or enchantments) target(<upto:15>*[artifact;enchantment]) destroy
auto=choice name(Strive 17) ability$!name(choose 18 artifacts or enchantments) pay[[{34}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 18 artifacts or enchantments) target(<18>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~15 then name(choose 16 artifacts or enchantments) name(choose 16 artifacts or enchantments) target(<upto:16>*[artifact;enchantment]) destroy
auto=choice name(Strive 18) ability$!name(choose 19 artifacts or enchantments) pay[[{36}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 19 artifacts or enchantments) target(<19>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~16 then name(choose 17 artifacts or enchantments) name(choose 17 artifacts or enchantments) target(<upto:17>*[artifact;enchantment]) destroy
auto=choice name(Strive 19) ability$!name(choose 20 artifacts or enchantments) pay[[{38}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 20 artifacts or enchantments) target(<20>*[artifact;enchantment]) destroy!$ controller auto=if compare(kicked)~equalto~17 then name(choose 18 artifacts or enchantments) name(choose 18 artifacts or enchantments) target(<upto:18>*[artifact;enchantment]) destroy
text=Strive — Consign to Dust costs {2}{G} more to cast for each target beyond the first. -- Destroy any number of target artifacts and/or enchantments. auto=if compare(kicked)~equalto~18 then name(choose 19 artifacts or enchantments) name(choose 19 artifacts or enchantments) target(<upto:19>*[artifact;enchantment]) destroy
auto=if compare(kicked)~morethan~18 then name(choose 20 artifacts or enchantments) name(choose 20 artifacts or enchantments) target(<upto:20>*[artifact;enchantment]) destroy
text=Strive - Consign to Dust costs {2}{G} more to cast for each target beyond the first. -- Destroy any number of target artifacts and/or enchantments.
mana={2}{G} mana={2}{G}
type=Instant type=Instant
[/card] [/card]
@@ -13323,7 +13331,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Cruel Feeding name=Cruel Feeding
kicker=multi{2}{B} abilities=hasnokicker,hasstrive
kicker=multi{2}{B} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/0],newability[lifelink])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/0],newability[lifelink])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/0],newability[lifelink])) ueot
@@ -13343,8 +13352,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/0],newability[lifelink])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/0],newability[lifelink])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/0],newability[lifelink])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/0],newability[lifelink])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/0],newability[lifelink])) ueot
text=Strive Cruel Feeding costs {2}{B} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+0 and gain lifelink until end of turn. (Damage dealt by a creature with lifelink also causes its controller to gain that much life.) text=Strive - Cruel Feeding costs {2}{B} more to cast for each target beyond the first. -- Any number of target creatures each get +1/+0 and gain lifelink until end of turn. (Damage dealt by a creature with lifelink also causes its controller to gain that much life.)
mana={B} mana={B}
type=Instant type=Instant
[/card] [/card]
@@ -15799,7 +15808,8 @@ type=Instant
[/card] [/card]
[card] [card]
name=Desperate Stand name=Desperate Stand
kicker=multi{R}{W} abilities=hasnokicker,hasstrive
kicker=multi{R}{W} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
@@ -15819,8 +15829,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/0],newability[first strike],newability[vigilance])) ueot
text=Strive Desperate Stand costs {R}{W} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+0 and gain first strike and vigilance until end of turn. text=Strive - Desperate Stand costs {R}{W} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+0 and gain first strike and vigilance until end of turn.
mana={R}{W} mana={R}{W}
type=Sorcery type=Sorcery
[/card] [/card]
@@ -16481,6 +16491,16 @@ mana={2}{B}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Disciple of Deceit
auto=@untapped(this):may name(Discard a card) target(*[-land]|myhand) reject and!( transforms((,newability[name(Search another card] target(*[manacost=manacost]|mylibrary) moveto(myhand) and!( shuffle )!])) oneshot )!
text=Inspired — Whenever Disciple of Deceit becomes untapped, you may discard a nonland card. If you do, search your library for a card with the same converted mana cost as that card, reveal it, put it into your hand, then shuffle your library.
mana={U}{B}
type=Creature
subtype=Human Rogue
power=1
toughness=3
[/card]
[card]
name=Disciple of the Sun name=Disciple of the Sun
abilities=lifelink abilities=lifelink
auto=name(Return permanent) target(*[-instant;-sorcery;manacost<=3]|myGraveyard) moveto(myHand) auto=name(Return permanent) target(*[-instant;-sorcery;manacost<=3]|myGraveyard) moveto(myHand)
@@ -18894,7 +18914,7 @@ subtype=Lesson
[card] [card]
name=Elemental Uprising name=Elemental Uprising
target=land|mybattlefield target=land|mybattlefield
auto=transforms(Land Creature Elemental,4/4,haste) with(newability[@combat(attacking,blocking) source(this): all(<anyamount>creature|opponentbattlefield) mustblock ueot]) ueot auto=transforms((Creature Elemental,setpower=4,settoughness=4,newability[haste],newability[@combat(attacking) source(this):all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot])) ueot
text=Target land you control becomes a 4/4 Elemental creature with haste until end of turn. Its still a land. It must be blocked this turn if able. text=Target land you control becomes a 4/4 Elemental creature with haste until end of turn. Its still a land. It must be blocked this turn if able.
mana={1}{G} mana={1}{G}
type=Instant type=Instant
@@ -19400,7 +19420,7 @@ type=Instant
[card] [card]
name=Emergent Growth name=Emergent Growth
target=creature target=creature
auto=transforms((,newability[5/5],newability[_ATTACKING_all(creature|opponentbattlefield) mustblock ueot])) ueot auto=transforms((,newability[5/5],newability[_ATTACKING_all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot])) ueot
text=Target creature gets +5/+5 until end of turn and must be blocked this turn if able. text=Target creature gets +5/+5 until end of turn and must be blocked this turn if able.
mana={3}{G} mana={3}{G}
type=Sorcery type=Sorcery
@@ -21037,6 +21057,16 @@ type=Legendary Land
subtype=Mountain subtype=Mountain
[/card] [/card]
[card] [card]
name=Face of Divinity
target=creature
auto=teach(creature) 2/2
auto=teach(creature) transforms((,newability[this(auras>=2) first strike],newability[this(auras>=2) lifelink]))
text=Enchant creature -- Enchanted creature gets +2/+2. -- As long as another Aura is attached to enchanted creature, it has first strike and lifelink.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Faceless Agent name=Faceless Agent
abilities=changeling abilities=changeling
auto=name(Seek a creature) name(Seek a creature) moverandom(creature) from(mylibrary) to(myhand) auto=name(Seek a creature) name(Seek a creature) moverandom(creature) from(mylibrary) to(myhand)
@@ -26924,6 +26954,17 @@ mana={1}{G}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Goldenhide Ox
auto=name(Creature must be blocked) target(creature) transforms((,newability[_ATTACKING_all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot])) ueot
auto=@movedto(enchantment|myBattlefield):name(Creature must be blocked) target(creature) transforms((,newability[_ATTACKING_all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot])) ueot
text=Constellation — Whenever Goldenhide Ox or another enchantment enters the battlefield under your control, target creature must be blocked this turn if able.
mana={5}{G}
type=Enchantment Creature
subtype=Ox
power=5
toughness=4
[/card]
[card]
name=Goldmane Griffin name=Goldmane Griffin
abilities=flying,vigilance abilities=flying,vigilance
auto=moveto(myhand) target(Ajani^ Inspiring Leader|mylibrary) auto=moveto(myhand) target(Ajani^ Inspiring Leader|mylibrary)
@@ -29041,28 +29082,29 @@ type=Instant
[/card] [/card]
[card] [card]
name=Harness by Force name=Harness by Force
kicker=multi{2}{R} abilities=hasnokicker,hasstrive
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot kicker=multi{2}{R} name(Strive)
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueoteot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],haste)) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
text=Strive — Harness by Force costs {2}{R} more to cast for each target beyond the first. -- Gain control of any number of target creatures until end of turn. Untap those creatures. They gain haste until end of turn. auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[moveTo(opponentbattlefield)],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)],newability[untap],newability[haste])) ueot
text=Strive - Harness by Force costs {2}{R} more to cast for each target beyond the first. -- Gain control of any number of target creatures until end of turn. Untap those creatures. They gain haste until end of turn.
mana={1}{R}{R} mana={1}{R}{R}
type=Sorcery type=Sorcery
[/card] [/card]
@@ -30662,28 +30704,29 @@ type=Instant
[/card] [/card]
[card] [card]
name=Hour of Need name=Hour of Need
kicker=multi{1}{U} abilities=hasnokicker,hasstrive
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) moveto(ownerexile) target(creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! kicker=multi{1}{U} name(Strive)
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) moveto(ownerexile) target(<upto:2>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) moveto(ownerexile) target(<upto:3>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) moveto(ownerexile) target(<upto:4>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) moveto(ownerexile) target(<upto:5>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) moveto(ownerexile) target(<upto:6>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) moveto(ownerexile) target(<upto:7>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) moveto(ownerexile) target(<upto:8>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) moveto(ownerexile) target(<upto:9>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) moveto(ownerexile) target(<upto:10>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) moveto(ownerexile) target(<upto:11>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) moveto(ownerexile) target(<upto:12>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) moveto(ownerexile) target(<upto:13>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) moveto(ownerexile) target(<upto:14>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) moveto(ownerexile) target(<upto:15>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) moveto(ownerexile) target(<upto:16>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) moveto(ownerexile) target(<upto:17>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) moveto(ownerexile) target(<upto:18>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) moveto(ownerexile) target(<upto:19>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) moveto(ownerexile) target(<upto:20>creature) and!(token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller)! auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
text=Strive — Hour of Need costs {1}{U} more to cast for each target beyond the first. -- Exile any number of target creatures. For each creature exiled this way, its controller puts a 4/4 blue Sphinx creature token with flying onto the battlefield. auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) moveto(ownerexile) and!( token(Sphinx,Creature Sphinx,4/4,blue,flying) targetcontroller )!
text=Strive - Hour of Need costs {1}{U} more to cast for each target beyond the first. -- Exile any number of target creatures. For each creature exiled this way, its controller puts a 4/4 blue Sphinx creature token with flying onto the battlefield.
mana={2}{U} mana={2}{U}
type=Instant type=Instant
[/card] [/card]
@@ -35326,9 +35369,9 @@ toughness=3
[/card] [/card]
[card] [card]
name=Kinnan, Bonder Prodigy name=Kinnan, Bonder Prodigy
auto=@tappedformana(*[-land]|myBattlefield):ability$! choice add{1} _ choice add{G} _ choice add{R} _ choice add{U} _ choice add{B} _ choice add{W} !$ controller aicode=activate transforms((,newability[if type(creature[-human;zpos<=5]|myLibrary)~morethan~0 then target(creature[-human;zpos<=5]|myLibrary) moveTo(myBattlefield) and!( all(other *[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=5]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot
aicode=activate target(creature[-human;zpos<=5]|mylibrary) moveto(mybattlefield) auto={5}{G}{U}:name(look) reveal:5 optionone name(Get a non-Human)target(<upto:1>creature[-human]|reveal) moveto(ownerlibrary) and!( becomes(tobecast) ueot )! optiononeend optiontwo name(put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend afterrevealed all(tobecast|mylibrary) moveto(ownerlibrary) and!( moveto(myBattlefield) )! afterrevealedend revealend
auto={5}{G}{U}:name(look) reveal:5 optionone name(Get non-Human) target(creature[-human]|reveal) moveto(mybattlefield) optiononeend optiontwo name(put on bottom) target(<5>*|reveal) bottomoflibrary optiontwoend revealend auto=lord(*[-land]|myBattlefield) transforms((,newability[@tappedformana(this|*):ability$!name(Add one mana) choice add{1} _ choice add{G} _ choice add{R} _ choice add{U} _ choice add{B} _ choice add{W} !$ controller]))
text=Whenever you tap a nonland permanent for mana, add one mana of any type that permanent produced. -- {5}{G}{U}: Look at the top five cards of your library. You may put a non-Human creature card from among them onto the battlefield. Put the rest on the bottom of your library in a random order. text=Whenever you tap a nonland permanent for mana, add one mana of any type that permanent produced. -- {5}{G}{U}: Look at the top five cards of your library. You may put a non-Human creature card from among them onto the battlefield. Put the rest on the bottom of your library in a random order.
mana={G}{U} mana={G}{U}
type=Legendary Creature type=Legendary Creature
@@ -35371,31 +35414,45 @@ toughness=6
[/card] [/card]
[card] [card]
name=Kiora's Dismissal name=Kiora's Dismissal
auto=choice name(Don't strive) ability$!name(return 1 enchantment) name(return 1 enchantment) target(*[enchantment]) moveto(ownerhand)!$ controller abilities=hasnokicker,hasstrive
auto=choice name(Strive 1) ability$!name(return 2 enchantments) pay[[{U}]] name(return 2 enchantments) target(<2>*[enchantment]) moveto(ownerhand)!$ controller kicker=multi{U} name(Strive)
auto=choice name(Strive 2) ability$!name(return 3 enchantments) pay[[{U}{U}]] name(return 3 enchantments) target(<3>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(enchantment) moveto(ownerhand)
auto=choice name(Strive 3) ability$!name(return 4 enchantments) pay[[{U}{U}{U}]] name(return 4 enchantments)target(<4>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>enchantment) moveto(ownerhand)
auto=choice name(Strive 4) ability$!name(return 5 enchantments) pay[[{U}{U}{U}{U}]] name(return 5 enchantments) target(<5>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>enchantment) moveto(ownerhand)
auto=choice name(Strive 5) ability$!name(return 6 enchantments) pay[[{U}{U}{U}{U}{U}]] name(return 6 enchantments) target(<6>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>enchantment) moveto(ownerhand)
auto=choice name(Strive 6) ability$!name(return 7 enchantments) pay[[{U}{U}{U}{U}{U}{U}]] name(return 7 enchantments) target(<7>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>enchantment) moveto(ownerhand)
auto=choice name(Strive 7) ability$!name(return 8 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}]] name(return 8 enchantments) target(<8>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>enchantment) moveto(ownerhand)
auto=choice name(Strive 8) ability$!name(return 9 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 9 enchantments) target(<9>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>enchantment) moveto(ownerhand)
auto=choice name(Strive 9) ability$!name(return 10 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 10 enchantments) target(<10>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>enchantment) moveto(ownerhand)
auto=choice name(Strive 10) ability$!name(return 11 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 11 enchantments) target(<11>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>enchantment) moveto(ownerhand)
auto=choice name(Strive 11) ability$!name(return 12 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 12 enchantments) target(<12>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>enchantment) moveto(ownerhand)
auto=choice name(Strive 12) ability$!name(return 13 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 13 enchantments) target(<13>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>enchantment) moveto(ownerhand)
auto=choice name(Strive 13) ability$!name(return 14 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 14 enchantments)target(<14>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>enchantment) moveto(ownerhand)
auto=choice name(Strive 14) ability$!name(return 15 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 15 enchantments) target(<15>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>enchantment) moveto(ownerhand)
auto=choice name(Strive 15) ability$!name(return 16 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 16 enchantments) target(<16>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>enchantment) moveto(ownerhand)
auto=choice name(Strive 16) ability$!name(return 17 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 17 enchantments) target(<17>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>enchantment) moveto(ownerhand)
auto=choice name(Strive 17) ability$!name(return 18 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 18 enchantments) target(<18>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>enchantment) moveto(ownerhand)
auto=choice name(Strive 18) ability$!name(return 19 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 19 enchantments) target(<19>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>enchantment) moveto(ownerhand)
auto=choice name(Strive 19) ability$!name(return 20 enchantments) pay[[{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}{U}]] name(return 20 enchantments) target(<20>*[enchantment]) moveto(ownerhand)!$ controller auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>enchantment) moveto(ownerhand)
text=Strive — Kiora's Dismissal costs {U} more to cast for each target beyond the first. -- Return any number of target enchantments to their owners' hands. auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>enchantment) moveto(ownerhand)
auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>enchantment) moveto(ownerhand)
text=Strive - Kiora's Dismissal costs {U} more to cast for each target beyond the first. -- Return any number of target enchantments to their owners' hands.
mana={U} mana={U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Kira, Great Glass-Spinner
abilities=flying
auto=lord(other creature|mybattlefield) transforms((,newability[@targeted(this) turnlimited:name(Counter spell) all(trigger[from]) fizzle]))
auto=@targeted(this) turnlimited:name(Counter spell) target(*|stack) fizzle
text=Flying -- Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
mana={1}{U}{U}
type=Legendary Creature
subtype=Spirit
power=2
toughness=2
[/card]
[card]
name=Kitchen Imp name=Kitchen Imp
abilities=madness,flying,haste abilities=madness,flying,haste
autoexile=restriction{discarded} pay({B}) name(pay B to cast) activate name(pay B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard) autoexile=restriction{discarded} pay({B}) name(pay B to cast) activate name(pay B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
@@ -36601,28 +36658,29 @@ toughness=3
[/card] [/card]
[card] [card]
name=Launch the Fleet name=Launch the Fleet
kicker=multi{1} abilities=hasnokicker,hasstrive
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot kicker=multi{1} name(Strive)
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[_ATTACKING_create(Soldier:Creature Soldier:1/1:white:battleready)])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
text=Strive — Launch the Fleet costs {1} more to cast for each target beyond the first. -- Until end of turn, any number of target creatures each gain "Whenever this creature attacks, put a 1/1 white Soldier creature token onto the battlefield tapped and attacking." auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[_ATTACKING_token(Soldier^Creature Soldier^1/1^white^battleready)])) ueot
text=Strive - Launch the Fleet costs {1} more to cast for each target beyond the first. -- Until end of turn, any number of target creatures each gain "Whenever this creature attacks, put a 1/1 white Soldier creature token onto the battlefield tapped and attacking."
mana={W} mana={W}
type=Sorcery type=Sorcery
[/card] [/card]
@@ -42549,27 +42607,29 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Nature's Panoply name=Nature's Panoply
auto=choice name(Don't strive) ability$!name(choose 1 creature) name(choose 1 creature) target(*[creature]) counter(1/1)!$ controller abilities=hasnokicker,hasstrive
auto=choice name(Strive 1) ability$!name(choose 2 creatures) pay[[{2}{G}]] name(choose 2 creatures) target(<2>*[creature]) counter(1/1)!$ controller kicker=multi{2}{G} name(Strive)
auto=choice name(Strive 2) ability$!name(choose 3 creatures) pay[[{4}{G}{G}]] name(choose 3 creatures) target(<3>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) counter(1/1)
auto=choice name(Strive 3) ability$!name(choose 4 creatures) pay[[{6}{G}{G}{G}]] name(choose 4 creatures)target(<4>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) counter(1/1)
auto=choice name(Strive 4) ability$!name(choose 5 creatures) pay[[{8}{G}{G}{G}{G}]] name(choose 5 creatures) target(<5>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) counter(1/1)
auto=choice name(Strive 5) ability$!name(choose 6 creatures) pay[[{10}{G}{G}{G}{G}{G}]] name(choose 6 creatures) target(<6>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) counter(1/1)
auto=choice name(Strive 6) ability$!name(choose 7 creatures) pay[[{12}{G}{G}{G}{G}{G}{G}]] name(choose 7 creatures) target(<7>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) counter(1/1)
auto=choice name(Strive 7) ability$!name(choose 8 creatures) pay[[{14}{G}{G}{G}{G}{G}{G}{G}]] name(choose 8 creatures) target(<8>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) counter(1/1)
auto=choice name(Strive 8) ability$!name(choose 9 creatures) pay[[{16}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 9 creatures) target(<9>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) counter(1/1)
auto=choice name(Strive 9) ability$!name(choose 10 creatures) pay[[{18}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 10 creatures) target(<10>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) counter(1/1)
auto=choice name(Strive 10) ability$!name(choose 11 creatures) pay[[{20}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 11 creatures) target(<11>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) counter(1/1)
auto=choice name(Strive 11) ability$!name(choose 12 creatures) pay[[{22}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 12 creatures) target(<12>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) counter(1/1)
auto=choice name(Strive 12) ability$!name(choose 13 creatures) pay[[{24}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 13 creatures) target(<13>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) counter(1/1)
auto=choice name(Strive 13) ability$!name(choose 14 creatures) pay[[{26}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 14 creatures)target(<14>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) counter(1/1)
auto=choice name(Strive 14) ability$!name(choose 15 creatures) pay[[{28}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 15 creatures) target(<15>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) counter(1/1)
auto=choice name(Strive 15) ability$!name(choose 16 creatures) pay[[{30}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 16 creatures) target(<16>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) counter(1/1)
auto=choice name(Strive 16) ability$!name(choose 17 creatures) pay[[{32}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 17 creatures) target(<17>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) counter(1/1)
auto=choice name(Strive 17) ability$!name(choose 18 creatures) pay[[{34}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 18 creatures) target(<18>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) counter(1/1)
auto=choice name(Strive 18) ability$!name(choose 19 creatures) pay[[{36}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 19 creatures) target(<19>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) counter(1/1)
auto=choice name(Strive 19) ability$!name(choose 20 creatures) pay[[{38}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}{G}]] name(choose 20 creatures) target(<20>*[creature]) counter(1/1)!$ controller auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) counter(1/1)
text=Strive — Nature's Panoply costs {2}{G} more to cast for each target beyond the first. -- Choose any number of target creatures. Put a +1/+1 counter on each of them. auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) counter(1/1)
auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) counter(1/1)
text=Strive - Nature's Panoply costs {2}{G} more to cast for each target beyond the first. -- Choose any number of target creatures. Put a +1/+1 counter on each of them.
mana={G} mana={G}
type=Instant type=Instant
[/card] [/card]
@@ -43194,6 +43254,18 @@ mana={5}{U}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Neyith of the Dire Hunt
auto=@combat(blocked) source(creature|mybattlefield) turnlimited:name(Draw a card) draw:1 controller
auto=@damaged(creature) from(creature[-attacking]|mybattlefield) turnlimited:may name(Draw a card) draw:1 controller
auto=@each my combatbegins:name(Pay and double creature's power) pay({2}{RG}) name(Pay and double creature's power) target(creature) transforms((,newability[p/0],newability[all(creature|opponentbattlefield) transforms((,newability[mustblock])) ueot])) ueot
text=Whenever one or more creatures you control fight or become blocked, draw a card. -- At the beginning of combat on your turn, you may pay {2}{R} or {G}. If you do, double target creature's power until end of turn. That creature must be blocked this combat if able. ( {R} or {G} can be paid with either {R} or {G}.)
mana={2}{G}{G}
type=Legendary Creature
subtype=Human Warrior
power=3
toughness=3
[/card]
[card]
name=Nezahal, Primal Tide name=Nezahal, Primal Tide
abilities=nofizzle,nomaxhand abilities=nofizzle,nomaxhand
auto=@movedTo(*|opponentstack):draw:1 auto=@movedTo(*|opponentstack):draw:1
@@ -46555,27 +46627,29 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Phalanx Formation name=Phalanx Formation
auto=choice name(Don't strive) ability$!name(choose 1 creature) name(choose 1 creature) target(*[creature]) double strike ueot!$ controller abilities=hasnokicker,hasstrive
auto=choice name(Strive 1) ability$!name(choose 2 creatures) pay[[{1}{W}]] name(choose 2 creatures) target(<2>*[creature]) double strike ueot!$ controller kicker=multi{1}{W} name(Strive)
auto=choice name(Strive 2) ability$!name(choose 3 creatures) pay[[{2}{W}{W}]] name(choose 3 creatures) target(<3>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 3) ability$!name(choose 4 creatures) pay[[{3}{W}{W}{W}]] name(choose 4 creatures)target(<4>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 4) ability$!name(choose 5 creatures) pay[[{4}{W}{W}{W}{W}]] name(choose 5 creatures) target(<5>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 5) ability$!name(choose 6 creatures) pay[[{5}{W}{W}{W}{W}{W}]] name(choose 6 creatures) target(<6>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 6) ability$!name(choose 7 creatures) pay[[{6}{W}{W}{W}{W}{W}{W}]] name(choose 7 creatures) target(<7>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 7) ability$!name(choose 8 creatures) pay[[{7}{W}{W}{W}{W}{W}{W}{W}]] name(choose 8 creatures) target(<8>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 8) ability$!name(choose 9 creatures) pay[[{8}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 9 creatures) target(<9>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 9) ability$!name(choose 10 creatures) pay[[{9}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 10 creatures) target(<10>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 10) ability$!name(choose 11 creatures) pay[[{10}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 11 creatures) target(<11>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 11) ability$!name(choose 12 creatures) pay[[{11}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 12 creatures) target(<12>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 12) ability$!name(choose 13 creatures) pay[[{12}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 13 creatures) target(<13>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 13) ability$!name(choose 14 creatures) pay[[{13}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 14 creatures)target(<14>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 14) ability$!name(choose 15 creatures) pay[[{14}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 15 creatures) target(<15>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 15) ability$!name(choose 16 creatures) pay[[{15}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 16 creatures) target(<16>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 16) ability$!name(choose 17 creatures) pay[[{16}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 17 creatures) target(<17>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 17) ability$!name(choose 18 creatures) pay[[{17}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 18 creatures) target(<18>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 18) ability$!name(choose 19 creatures) pay[[{18}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 19 creatures) target(<19>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[double strike])) ueot
auto=choice name(Strive 19) ability$!name(choose 20 creatures) pay[[{19}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}{W}]] name(choose 20 creatures) target(<20>*[creature]) double strike ueot!$ controller auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[double strike])) ueot
text=Strive — Phalanx Formation costs {1}{W} more to cast for each target beyond the first. -- Any number of target creatures each gain double strike until end of turn. (They deal both first-strike and regular combat damage.) auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[double strike])) ueot
auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[double strike])) ueot
text=Strive - Phalanx Formation costs {1}{W} more to cast for each target beyond the first. -- Any number of target creatures each gain double strike until end of turn. (They deal both first-strike and regular combat damage.)
mana={2}{W} mana={2}{W}
type=Instant type=Instant
[/card] [/card]
@@ -47545,6 +47619,16 @@ mana={1}{U}{U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Polymorphous Rush
abilities=hasnokicker,hasstrive
kicker=multi{1}{U} name(Strive)
autostack=name(Choose a creature to copy) target(creature) transforms((,newability[phaseaction[endofturn once] counter(0/0.-1.RushEffect)],newability[counter(0/0.1.RushEffect)])) oneshot
auto=name(Creatures become copy) name(Creatures become copy) target(<upto:kickedplus1plusend>creature) transforms((,newability[all(creature[counter{0/0.1.RushEffect}]|battlefield) copy and!( all(this) transforms((,newability[phaseaction[endofturn once] flip(myorigname) undocpy])) ueot )!])) ueot
text=Strive - Polymorphous Rush costs {1}{U} more to cast for each target beyond the first. -- Choose a creature on the battlefield. Any number of target creatures you control each become a copy of that creature until end of turn.
mana={2}{U}
type=Instant
[/card]
[card]
name=Polyraptor name=Polyraptor
auto=_ENRAGE_token(polyraptor) auto=_ENRAGE_token(polyraptor)
text=Enrage — Whenever Polyraptor is dealt damage, create a token that's a copy of Polyraptor. text=Enrage — Whenever Polyraptor is dealt damage, create a token that's a copy of Polyraptor.
@@ -52089,6 +52173,16 @@ power=1
toughness=3 toughness=3
[/card] [/card]
[card] [card]
name=Riftsweeper
auto=name(Shuffle back exiled card) target(*|exile) moveto(ownerlibrary) and!( shuffle )!
text=When Riftsweeper enters the battlefield, choose target face-up exiled card. Its owner shuffles it into his or her library.
mana={1}{G}
type=Creature
subtype=Elf Shaman
power=2
toughness=2
[/card]
[card]
name=Rigging Runner name=Rigging Runner
abilities=first strike abilities=first strike
auto=if raid then counter(1/1,1) auto=if raid then counter(1/1,1)
@@ -53160,7 +53254,8 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Rouse the Mob name=Rouse the Mob
kicker=multi{2}{R} abilities=hasnokicker,hasstrive
kicker=multi{2}{R} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[2/0],newability[trample])) ueot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[2/0],newability[trample])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[2/0],newability[trample])) ueot
@@ -53180,8 +53275,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[2/0],newability[trample])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[2/0],newability[trample])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[2/0],newability[trample])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/0],newability[trample])) ueot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[2/0],newability[trample])) ueot
text=Strive Rouse the Mob costs {2}{R} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+0 and gain trample until end of turn. text=Strive - Rouse the Mob costs {2}{R} more to cast for each target beyond the first. -- Any number of target creatures each get +2/+0 and gain trample until end of turn.
mana={R} mana={R}
type=Instant type=Instant
[/card] [/card]
@@ -56336,28 +56431,29 @@ toughness=1
[/card] [/card]
[card] [card]
name=Setessan Tactics name=Setessan Tactics
kicker=multi{G} abilities=hasnokicker,hasstrive
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot kicker=multi{G} name(Strive)
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~3 then name(choose 4 creatures) name(choose 4 creatures) target(<upto:4>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~4 then name(choose 5 creatures) name(choose 5 creatures) target(<upto:5>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~5 then name(choose 6 creatures) name(choose 6 creatures) target(<upto:6>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~6 then name(choose 7 creatures) name(choose 7 creatures) target(<upto:7>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~7 then name(choose 8 creatures) name(choose 8 creatures) target(<upto:8>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~8 then name(choose 9 creatures) name(choose 9 creatures) target(<upto:9>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~9 then name(choose 10 creatures) name(choose 10 creatures) target(<upto:10>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~10 then name(choose 11 creatures) name(choose 11 creatures) target(<upto:11>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~11 then name(choose 12 creatures) name(choose 12 creatures) target(<upto:12>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~12 then name(choose 13 creatures) name(choose 13 creatures) target(<upto:13>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~13 then name(choose 14 creatures) name(choose 14 creatures) target(<upto:14>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~14 then name(choose 15 creatures) name(choose 15 creatures) target(<upto:15>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16 creatures) target(<upto:16>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1 ueot],newability[{T}:target(other creature) dynamicability<!powerstrike eachother!>])) ueot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
text=Strive — Setessan Tactics costs {G} more to cast for each target beyond the first. -- Until end of turn, any number of target creatures each get +1/+1 and gain "{T}: This creature fights another target creature." auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[1/1],newability[{T}:name(Fight another creature) target(other creature) dynamicability<!powerstrike eachother!>])) ueot
text=Strive - Setessan Tactics costs {G} more to cast for each target beyond the first. -- Until end of turn, any number of target creatures each get +1/+1 and gain "{T}: This creature fights another target creature."
mana={1}{G} mana={1}{G}
type=Instant type=Instant
[/card] [/card]
@@ -57656,7 +57752,8 @@ toughness=2
[/card] [/card]
[card] [card]
name=Silence the Believers name=Silence the Believers
kicker=multi{2}{B} abilities=hasnokicker,hasstrive
kicker=multi{2}{B} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
@@ -57676,8 +57773,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[moveto(ownerexile) all(mychild)],newability[moveto(ownerexile)])) forever
text=Strive Silence the Believers costs {2}{B} more to cast for each target beyond the first. -- Exile any number of target creatures and all Auras attached to them. text=Strive - Silence the Believers costs {2}{B} more to cast for each target beyond the first. -- Exile any number of target creatures and all Auras attached to them.
mana={2}{B}{B} mana={2}{B}{B}
type=Instant type=Instant
[/card] [/card]
@@ -58011,6 +58108,17 @@ power=0
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Sin Prodder
abilities=menace
auto=@each my upkeep:name(Reveal top card) all(*[zpos=1]|mylibrary) moveto(opponenthand) and!( transforms((,newability[choice name(Put in opponent hand) moveto(opponenthand)],newability[choice name(put in opponent graveyard) moveto(opponentgraveyard) and!( damage:manacost controller)!])) oneshot )!
text=Menace -- At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.
mana={2}{R}
type=Creature
subtype=Devil
power=3
toughness=2
[/card]
[card]
name=Sindbad name=Sindbad
auto={T}:name(Draw and reveal) reveal:1 optionone if type(land|reveal)~lessthan~1 then moveto(mygraveyard) optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) optiontwoend revealend auto={T}:name(Draw and reveal) reveal:1 optionone if type(land|reveal)~lessthan~1 then moveto(mygraveyard) optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) optiontwoend revealend
text={T}: Draw a card and reveal it. If it isn't a land card, discard it. text={T}: Draw a card and reveal it. If it isn't a land card, discard it.
@@ -59573,7 +59681,8 @@ subtype=Aura
[/card] [/card]
[card] [card]
name=Solidarity of Heroes name=Solidarity of Heroes
kicker=multi{1}{G} abilities=hasnokicker,hasstrive
kicker=multi{1}{G} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
@@ -59593,8 +59702,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature) transforms((,newability[thisforeach(counter{1/1.1}) counter(1/1) all(this)])) oneshot
text=Strive Solidarity of Heroes costs {1}{G} more to cast for each target beyond the first. -- Choose any number of target creatures. Double the number of +1/+1 counters on each of them. text=Strive - Solidarity of Heroes costs {1}{G} more to cast for each target beyond the first. -- Choose any number of target creatures. Double the number of +1/+1 counters on each of them.
mana={1}{G} mana={1}{G}
type=Instant type=Instant
[/card] [/card]
@@ -64280,6 +64389,14 @@ mana={1}{W}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Tale's End
target=*[legendary]|stack
auto=fizzle
text=Counter target activated ability, triggered ability, or legendary spell.
mana={1}{U}
type=Instant
[/card]
[card]
name=Tales of the Ancestors name=Tales of the Ancestors
abilities=foretell abilities=foretell
autohand={2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly autohand={2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly
@@ -64767,6 +64884,15 @@ mana={2}{U}{U}
type=Legendary Enchantment type=Legendary Enchantment
[/card] [/card]
[card] [card]
name=Teferi's Protection
abilities=exiledeath
auto=all(*|myBattlefield) phaseout
auto=token(Teferi's Protection,Emblem,0/0,indestructible,shroud,cantchangelife,controllershroud,notrigger) and!( transforms((,newability[@each my untap:sacrifice])) forever )!
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Teferi's Protege name=Teferi's Protege
auto={1}{U}{T}:draw:1 controller && transforms((,newability[target(*|myhand) reject])) oneshot auto={1}{U}{T}:draw:1 controller && transforms((,newability[target(*|myhand) reject])) oneshot
text={1}{U}, {T}: Draw a card, then discard a card. text={1}{U}, {T}: Draw a card, then discard a card.
@@ -68633,7 +68759,8 @@ toughness=3
[/card] [/card]
[card] [card]
name=Twinflame name=Twinflame
kicker=multi{2}{R} abilities=hasnokicker,hasstrive
kicker=multi{2}{R} name(Strive)
auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~0 then name(choose 1 creature) name(choose 1 creature) target(creature|myBattlefield) clone with(unearth,haste)
auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~1 then name(choose 2 creatures) name(choose 2 creatures) target(<upto:2>creature|myBattlefield) clone with(unearth,haste)
auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~2 then name(choose 3 creatures) name(choose 3 creatures) target(<upto:3>creature|myBattlefield) clone with(unearth,haste)
@@ -68653,8 +68780,8 @@ auto=if compare(kicked)~equalto~15 then name(choose 16 creatures) name(choose 16
auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~16 then name(choose 17 creatures) name(choose 17 creatures) target(<upto:17>creature|myBattlefield) clone with(unearth,haste)
auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~17 then name(choose 18 creatures) name(choose 18 creatures) target(<upto:18>creature|myBattlefield) clone with(unearth,haste)
auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~equalto~18 then name(choose 19 creatures) name(choose 19 creatures) target(<upto:19>creature|myBattlefield) clone with(unearth,haste)
auto=if compare(kicked)~equalto~19 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature|myBattlefield) clone with(unearth,haste) auto=if compare(kicked)~morethan~18 then name(choose 20 creatures) name(choose 20 creatures) target(<upto:20>creature|myBattlefield) clone with(unearth,haste)
text=Strive Twinflame costs {2}{R} more to cast for each target beyond the first. -- Choose any number of target creatures you control. For each of them, put a token that's a copy of that creature onto the battlefield. Those tokens have haste. Exile them at the beginning of the next end step. text=Strive - Twinflame costs {2}{R} more to cast for each target beyond the first. -- Choose any number of target creatures you control. For each of them, put a token that's a copy of that creature onto the battlefield. Those tokens have haste. Exile them at the beginning of the next end step.
mana={1}{R} mana={1}{R}
type=Sorcery type=Sorcery
[/card] [/card]

View File

@@ -2483,15 +2483,6 @@ mana={U}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Disciple of Deceit
text=Inspired — Whenever Disciple of Deceit becomes untapped, you may discard a nonland card. If you do, search your library for a card with the same converted mana cost as that card, reveal it, put it into your hand, then shuffle your library.
mana={U}{B}
type=Creature
subtype=Human Rogue
power=1
toughness=3
[/card]
[card]
name=Discontinuity name=Discontinuity
text=As long as it's your turn, this spell costs {2}{U}{U} less to cast. -- End the turn. (Exile all spells and abilities from the stack, including this card. The player whose turn it is discards down to their maximum hand size. Damage wears off, and "this turn" and "until end of turn" effects end.) text=As long as it's your turn, this spell costs {2}{U}{U} less to cast. -- End the turn. (Exile all spells and abilities from the stack, including this card. The player whose turn it is discards down to their maximum hand size. Damage wears off, and "this turn" and "until end of turn" effects end.)
mana={3}{U}{U}{U} mana={3}{U}{U}{U}
@@ -3151,14 +3142,6 @@ mana={2}{B}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Face of Divinity
auto=teach(creature) 2/2
text=Enchant creature -- Enchanted creature gets +2/+2. -- As long as another Aura is attached to enchanted creature, it has first strike and lifelink.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Face to Face name=Face to Face
text=You and target opponent play a best two-out-of-three Rock, Paper, Scissors match. If you win, Face to Face deals 5 damage to that opponent. text=You and target opponent play a best two-out-of-three Rock, Paper, Scissors match. If you win, Face to Face deals 5 damage to that opponent.
mana={1}{R} mana={1}{R}
@@ -4092,15 +4075,6 @@ type=Legendary Artifact
subtype=Equipment subtype=Equipment
[/card] [/card]
[card] [card]
name=Goldenhide Ox
text=Constellation — Whenever Goldenhide Ox or another enchantment enters the battlefield under your control, target creature must be blocked this turn if able.
mana={5}{G}
type=Enchantment Creature
subtype=Ox
power=5
toughness=4
[/card]
[card]
name=Golgothian Sylex name=Golgothian Sylex
text={1}, {T}: Each nontoken permanent from the Antiquities expansion is sacrificed by its controller. text={1}, {T}: Each nontoken permanent from the Antiquities expansion is sacrificed by its controller.
mana={4} mana={4}
@@ -5405,16 +5379,6 @@ mana={5}
type=Legendary Artifact type=Legendary Artifact
[/card] [/card]
[card] [card]
name=Kira, Great Glass-Spinner
abilities=flying
text=Flying -- Creatures you control have "Whenever this creature becomes the target of a spell or ability for the first time in a turn, counter that spell or ability."
mana={1}{U}{U}
type=Legendary Creature
subtype=Spirit
power=2
toughness=2
[/card]
[card]
name=Kithkin Armor name=Kithkin Armor
text=Enchant creature -- Enchanted creature can't be blocked by creatures with power 3 or greater. -- Sacrifice Kithkin Armor: The next time a source of your choice would deal damage to enchanted creature this turn, prevent that damage. text=Enchant creature -- Enchanted creature can't be blocked by creatures with power 3 or greater. -- Sacrifice Kithkin Armor: The next time a source of your choice would deal damage to enchanted creature this turn, prevent that damage.
mana={W} mana={W}
@@ -7114,15 +7078,6 @@ type=Artifact
subtype=Contraption subtype=Contraption
[/card] [/card]
[card] [card]
name=Neyith of the Dire Hunt
text=Whenever one or more creatures you control fight or become blocked, draw a card. -- At the beginning of combat on your turn, you may pay {2}{R} or {G}. If you do, double target creature's power until end of turn. That creature must be blocked this combat if able. ( {R} or {G} can be paid with either {R} or {G}.)
mana={2}{G}{G}
type=Legendary Creature
subtype=Human Warrior
power=3
toughness=3
[/card]
[card]
name=Ninja name=Ninja
text=You may activate Ninja's augment ability any time you could cast an instant. -- Whenever this creature deals combat damage to a player, -- Augment {2}{B} ({2}{B}, Reveal this card from your hand: Combine it with target host. Augment only as—oh, nevermind.) text=You may activate Ninja's augment ability any time you could cast an instant. -- Whenever this creature deals combat damage to a player, -- Augment {2}{B} ({2}{B}, Reveal this card from your hand: Combine it with target host. Augment only as—oh, nevermind.)
type=Creature type=Creature
@@ -7968,12 +7923,6 @@ mana={W}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Polymorphous Rush
text=Strive — Polymorphous Rush costs {1}{U} more to cast for each target beyond the first. -- Choose a creature on the battlefield. Any number of target creatures you control each become a copy of that creature until end of turn.
mana={2}{U}
type=Instant
[/card]
[card]
name=Pools of Becoming name=Pools of Becoming
text=At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards. -- Whenever you roll {C}, reveal the top three cards of your planar deck. Each of the revealed cards' {C} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. text=At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards. -- Whenever you roll {C}, reveal the top three cards of your planar deck. Each of the revealed cards' {C} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order.
type=Plane type=Plane
@@ -8632,15 +8581,6 @@ mana={R}
type=Enchantment type=Enchantment
[/card] [/card]
[card] [card]
name=Riftsweeper
text=When Riftsweeper enters the battlefield, choose target face-up exiled card. Its owner shuffles it into his or her library.
mana={1}{G}
type=Creature
subtype=Elf Shaman
power=2
toughness=2
[/card]
[card]
name=Righteous Aura name=Righteous Aura
text={W}, Pay 2 life: The next time a source of your choice would deal damage to you this turn, prevent that damage. text={W}, Pay 2 life: The next time a source of your choice would deal damage to you this turn, prevent that damage.
mana={1}{W} mana={1}{W}
@@ -9418,16 +9358,6 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Sin Prodder
abilities=menace
text=Menace -- At the beginning of your upkeep, reveal the top card of your library. Any opponent may have you put that card into your graveyard. If a player does, Sin Prodder deals damage to that player equal to that card's converted mana cost. Otherwise, put that card into your hand.
mana={2}{R}
type=Creature
subtype=Devil
power=3
toughness=2
[/card]
[card]
name=Singe-Mind Ogre name=Singe-Mind Ogre
text=When Singe-Mind Ogre enters the battlefield, target player reveals a card at random from his or her hand, then loses life equal to that card's converted mana cost. text=When Singe-Mind Ogre enters the battlefield, target player reveals a card at random from his or her hand, then loses life equal to that card's converted mana cost.
mana={2}{B}{R} mana={2}{B}{R}
@@ -10546,12 +10476,6 @@ type=Enchantment
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
name=Tale's End
text=Counter target activated ability, triggered ability, or legendary spell.
mana={1}{U}
type=Instant
[/card]
[card]
name=Talent of the Telepath name=Talent of the Telepath
text=Target opponent reveals the top seven cards of his or her library. You may cast an instant or sorcery card from among them without paying its mana cost. Then that player puts the rest into his or her graveyard. -- Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may cast up to two revealed instant and/or sorcery cards instead of one. text=Target opponent reveals the top seven cards of his or her library. You may cast an instant or sorcery card from among them without paying its mana cost. Then that player puts the rest into his or her graveyard. -- Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, you may cast up to two revealed instant and/or sorcery cards instead of one.
mana={2}{U}{U} mana={2}{U}{U}
@@ -10609,13 +10533,6 @@ power=2
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Teferi's Protection
abilities=exiledeath
text=Until your next turn, your life total can't change and you gain protection from everything. All permanents you control phase out. (While they're phased out, they're treated as though they don't exist. They phase in before you untap during your untap step.) -- Exile Teferi's Protection.
mana={2}{W}
type=Instant
[/card]
[card]
name=Teferi's Response name=Teferi's Response
text=Counter target spell or ability an opponent controls that targets a land you control. If a permanent's ability is countered this way, destroy that permanent. -- Draw two cards. text=Counter target spell or ability an opponent controls that targets a land you control. If a permanent's ability is countered this way, destroy that permanent. -- Draw two cards.
mana={1}{U} mana={1}{U}

View File

@@ -1105,7 +1105,9 @@ class TrVampired: public Trigger
{ {
public: public:
TargetChooser * fromTc; TargetChooser * fromTc;
TrVampired(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, bool once = false) : bool limitOnceATurn;
int triggeredTurn;
TrVampired(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, bool once = false, bool limitOnceATurn = false) :
Trigger(observer, id, source, once, tc), fromTc(fromTc) Trigger(observer, id, source, once, tc), fromTc(fromTc)
{ {
} }
@@ -1115,7 +1117,8 @@ public:
WEventVampire * vamp = dynamic_cast<WEventVampire*>(event); WEventVampire * vamp = dynamic_cast<WEventVampire*>(event);
if (!vamp) if (!vamp)
return 0; return 0;
if (limitOnceATurn && triggeredTurn == game->turn)
return 0;
if(fromTc && !fromTc->canTarget(vamp->source)) if(fromTc && !fromTc->canTarget(vamp->source))
return 0; return 0;
tc->setAllZones(); tc->setAllZones();
@@ -1123,8 +1126,8 @@ public:
//setting allzones, as we don't care since we know the preexisting condiations cover the zones. //setting allzones, as we don't care since we know the preexisting condiations cover the zones.
if(!tc->canTarget(vamp->victem)) if(!tc->canTarget(vamp->victem))
return 0; return 0;
triggeredTurn = game->turn;
return 1; return 1;
} }
~TrVampired() ~TrVampired()
@@ -1144,7 +1147,9 @@ class TrTargeted: public Trigger
public: public:
TargetChooser * fromTc; TargetChooser * fromTc;
int type; int type;
TrTargeted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, int type = 0, bool once = false) : bool limitOnceATurn;
int triggeredTurn;
TrTargeted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL, int type = 0, bool once = false, bool limitOnceATurn = false) :
Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type) Trigger(observer, id, source, once, tc), fromTc(fromTc), type(type)
{ {
} }
@@ -1153,9 +1158,11 @@ public:
{ {
WEventTarget * e = dynamic_cast<WEventTarget *> (event); WEventTarget * e = dynamic_cast<WEventTarget *> (event);
if (!e) return 0; if (!e) return 0;
if (limitOnceATurn && triggeredTurn == game->turn)
return 0;
if (!tc->canTarget(e->card)) return 0; if (!tc->canTarget(e->card)) return 0;
if (fromTc && !fromTc->canTarget(e->source)) return 0; if (fromTc && !fromTc->canTarget(e->source)) return 0;
triggeredTurn = game->turn;
return 1; return 1;
} }

View File

@@ -327,7 +327,8 @@ class Constants
DAYBOUND = 200, DAYBOUND = 200,
NIGHTBOUND = 201, NIGHTBOUND = 201,
DECAYED = 202, DECAYED = 202,
NB_BASIC_ABILITIES = 203, HASSTRIVE = 203,
NB_BASIC_ABILITIES = 204,
RARITY_S = 'S', //Special Rarity RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics RARITY_M = 'M', //Mythics

View File

@@ -171,7 +171,7 @@ MTGCardInstance * CardDescriptor::match_or(MTGCardInstance * card)
// Quantified restrictions are always AND-ed: // Quantified restrictions are always AND-ed:
if (foretoldComparisonMode && !valueInRange(foretoldComparisonMode, card->foretellTurn, foretellTurn)) if (foretoldComparisonMode && !valueInRange(foretoldComparisonMode, card->foretellTurn, foretellTurn))
return NULL; return NULL;
if (kickedComparisonMode && (!valueInRange(kickedComparisonMode, card->kicked, kicked) || card->has(Constants::HASREPLICATE))) if (kickedComparisonMode && (!valueInRange(kickedComparisonMode, card->kicked, kicked) || card->has(Constants::HASREPLICATE) || card->has(Constants::HASSTRIVE))) //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
return NULL; return NULL;
if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power)) if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power))
return NULL; return NULL;
@@ -219,7 +219,7 @@ MTGCardInstance * CardDescriptor::match_and(MTGCardInstance * card)
if (foretoldComparisonMode && !valueInRange(foretoldComparisonMode, card->foretellTurn, foretellTurn)) if (foretoldComparisonMode && !valueInRange(foretoldComparisonMode, card->foretellTurn, foretellTurn))
match = NULL; match = NULL;
if (kickedComparisonMode && (!valueInRange(kickedComparisonMode, card->kicked, kicked) || card->has(Constants::HASREPLICATE))) if (kickedComparisonMode && (!valueInRange(kickedComparisonMode, card->kicked, kicked) || card->has(Constants::HASREPLICATE) || card->has(Constants::HASSTRIVE))) //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
match = NULL; match = NULL;
if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power)) if (powerComparisonMode && !valueInRange(powerComparisonMode, card->getPower(), power))
match = NULL; match = NULL;
@@ -237,7 +237,6 @@ MTGCardInstance * CardDescriptor::match_and(MTGCardInstance * card)
MTGCardInstance * CardDescriptor::match(MTGCardInstance * card) MTGCardInstance * CardDescriptor::match(MTGCardInstance * card)
{ {
MTGCardInstance * match = card; MTGCardInstance * match = card;
if (mode == CD_AND) if (mode == CD_AND)
{ {

View File

@@ -1150,31 +1150,31 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
//Card unTapped //Card unTapped
if (TargetChooser *tc = parseSimpleTC(s,"untapped", card)) if (TargetChooser *tc = parseSimpleTC(s,"untapped", card))
return NEW TrCardTapped(observer, id, card, tc, false,once); return NEW TrCardTapped(observer, id, card, tc, false, once);
//Card Tapped //Card Tapped
if (TargetChooser *tc = parseSimpleTC(s,"tapped", card)) if (TargetChooser *tc = parseSimpleTC(s,"tapped", card))
return NEW TrCardTapped(observer, id, card, tc, true,once); return NEW TrCardTapped(observer, id, card, tc, true, once);
//Card Tapped for mana //Card Tapped for mana
if (TargetChooser *tc = parseSimpleTC(s,"tappedformana", card)) if (TargetChooser *tc = parseSimpleTC(s,"tappedformana", card))
return NEW TrCardTappedformana(observer, id, card, tc, true,once); return NEW TrCardTappedformana(observer, id, card, tc, true, once);
//Card Transforms //Card Transforms
if (TargetChooser *tc = parseSimpleTC(s,"transformed", card)) if (TargetChooser *tc = parseSimpleTC(s,"transformed", card))
return NEW TrCardTransformed(observer, id, card, tc,once); return NEW TrCardTransformed(observer, id, card, tc, once);
//Card Faces Up //Card Faces Up
if (TargetChooser *tc = parseSimpleTC(s,"facedup", card)) if (TargetChooser *tc = parseSimpleTC(s,"facedup", card))
return NEW TrCardFaceUp(observer, id, card, tc,once); return NEW TrCardFaceUp(observer, id, card, tc, once);
//Card Phases In //Card Phases In
if (TargetChooser *tc = parseSimpleTC(s,"phasedin", card)) if (TargetChooser *tc = parseSimpleTC(s,"phasedin", card))
return NEW TrCardPhasesIn(observer, id, card, tc,once); return NEW TrCardPhasesIn(observer, id, card, tc, once);
//Card Exerted //Card Exerted
if (TargetChooser *tc = parseSimpleTC(s,"exerted", card)) if (TargetChooser *tc = parseSimpleTC(s,"exerted", card))
return NEW TrCardExerted(observer, id, card, tc,once); return NEW TrCardExerted(observer, id, card, tc, once);
//CombatTrigger //CombatTrigger
//Card card attacked and is blocked //Card card attacked and is blocked
@@ -1210,8 +1210,8 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrCombatTrigger(observer, id, card, tc, fromTc,once,limitOnceATurn,sourceUntapped,opponentPoisoned, return NEW TrCombatTrigger(observer, id, card, tc, fromTc, once, limitOnceATurn, sourceUntapped, opponentPoisoned,
attackingTrigger,attackedAloneTrigger,notBlockedTrigger,attackBlockedTrigger,blockingTrigger); attackingTrigger, attackedAloneTrigger, notBlockedTrigger, attackBlockedTrigger, blockingTrigger);
} }
//energized player - controller of card //energized player - controller of card
@@ -1349,7 +1349,7 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
//Card is sacrificed //Card is sacrificed
if (TargetChooser * tc = parseSimpleTC(s, "sacrificed", card)) if (TargetChooser * tc = parseSimpleTC(s, "sacrificed", card))
return NEW TrCardSacrificed(observer, id, card, tc ,once); return NEW TrCardSacrificed(observer, id, card, tc, once);
//Card is Discarded //Card is Discarded
if (TargetChooser * tc = parseSimpleTC(s, "discarded", card)) if (TargetChooser * tc = parseSimpleTC(s, "discarded", card))
@@ -1357,69 +1357,69 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
//Card is cycled //Card is cycled
if (TargetChooser * tc = parseSimpleTC(s, "cycled", card)) if (TargetChooser * tc = parseSimpleTC(s, "cycled", card))
return NEW TrCardDiscarded(observer, id, card, tc,once,true); return NEW TrCardDiscarded(observer, id, card, tc, once, true);
//Card Damaging non combat current controller //Card Damaging non combat current controller
if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamageof", card)) if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamageof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 2,false,false,once,true,false); return NEW TrDamaged(observer, id, card, tc, fromTc, 2, false, false, once, true, false);
} }
//Card Damaging non combat current opponent //Card Damaging non combat current opponent
if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamagefoeof", card)) if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamagefoeof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 2,false,false,once,false,true); return NEW TrDamaged(observer, id, card, tc, fromTc, 2, false, false, once, false, true);
} }
//Card Damaging non combat static //Card Damaging non combat static
if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamaged", card)) if (TargetChooser * tc = parseSimpleTC(s, "noncombatdamaged", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 2,once); return NEW TrDamaged(observer, id, card, tc, fromTc, 2, once);
} }
//Card Damaging combat current controller //Card Damaging combat current controller
if (TargetChooser * tc = parseSimpleTC(s, "combatdamageof", card)) if (TargetChooser * tc = parseSimpleTC(s, "combatdamageof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 1,sourceUntapped,limitOnceATurn,once,true,false); return NEW TrDamaged(observer, id, card, tc, fromTc, 1, sourceUntapped, limitOnceATurn, once, true, false);
} }
//Card Damaging combat current opponent //Card Damaging combat current opponent
if (TargetChooser * tc = parseSimpleTC(s, "combatdamagefoeof", card)) if (TargetChooser * tc = parseSimpleTC(s, "combatdamagefoeof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 1,sourceUntapped,limitOnceATurn,once,false,true); return NEW TrDamaged(observer, id, card, tc, fromTc, 1, sourceUntapped, limitOnceATurn, once, false, true);
} }
//Card Damaging combat static //Card Damaging combat static
if (TargetChooser * tc = parseSimpleTC(s, "combatdamaged", card)) if (TargetChooser * tc = parseSimpleTC(s, "combatdamaged", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 1,sourceUntapped,limitOnceATurn,once); return NEW TrDamaged(observer, id, card, tc, fromTc, 1, sourceUntapped, limitOnceATurn, once);
} }
//Card Damaging current controller //Card Damaging current controller
if (TargetChooser * tc = parseSimpleTC(s, "damageof", card)) if (TargetChooser * tc = parseSimpleTC(s, "damageof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 0,sourceUntapped,limitOnceATurn,once,true,false); return NEW TrDamaged(observer, id, card, tc, fromTc, 0, sourceUntapped, limitOnceATurn, once, true, false);
} }
//Card Damaging current opponent //Card Damaging current opponent
if (TargetChooser * tc = parseSimpleTC(s, "damagefoeof", card)) if (TargetChooser * tc = parseSimpleTC(s, "damagefoeof", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 0,sourceUntapped,limitOnceATurn,once,false,true); return NEW TrDamaged(observer, id, card, tc, fromTc, 0, sourceUntapped, limitOnceATurn, once, false, true);
} }
//Card Damaging static //Card Damaging static
if (TargetChooser * tc = parseSimpleTC(s, "damaged", card)) if (TargetChooser * tc = parseSimpleTC(s, "damaged", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrDamaged(observer, id, card, tc, fromTc, 0,sourceUntapped,limitOnceATurn,once); return NEW TrDamaged(observer, id, card, tc, fromTc, 0, sourceUntapped, limitOnceATurn, once);
} }
//Lifed current controller //Lifed current controller
@@ -1428,9 +1428,9 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,true,false,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped, once, true, false, limitOnceATurn, exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,true,false,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped, once, true, false, limitOnceATurn);
} }
//Lifed current opponent //Lifed current opponent
@@ -1439,9 +1439,9 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,false,true,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped,once, false, true, limitOnceATurn, exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,false,true,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped,once, false, true, limitOnceATurn);
} }
//Lifed static //Lifed static
@@ -1450,9 +1450,9 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,false,false,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped, once, false, false, limitOnceATurn, exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 0,sourceUntapped,once,false,false,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 0, sourceUntapped, once, false, false, limitOnceATurn);
} }
//Life Loss current player //Life Loss current player
@@ -1461,9 +1461,9 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,true,false,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, true, false, limitOnceATurn, exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,true,false,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, true, false, limitOnceATurn);
} }
//Life Loss current opponent //Life Loss current opponent
@@ -1472,9 +1472,9 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,false,true,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, false, true, limitOnceATurn,exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,false,true,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, false, true, limitOnceATurn);
} }
//Life Loss static //Life Loss static
@@ -1483,23 +1483,23 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality) TargetChooser *exception = parseSimpleTC(s, "except", card); // Added a new keyword except to specify a life gain/loss card exception in order to avoid life gain loop (eg. Angels of Vitality)
if(exception) if(exception)
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,false,false,limitOnceATurn,exception->source); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, false, false, limitOnceATurn, exception->source);
else else
return NEW TrLifeGained(observer, id, card, tc, fromTc, 1,sourceUntapped,once,false,false,limitOnceATurn); return NEW TrLifeGained(observer, id, card, tc, fromTc, 1, sourceUntapped, once, false, false, limitOnceATurn);
} }
//Card Damaged and killed by a creature this turn //Card Damaged and killed by a creature this turn
if (TargetChooser * tc = parseSimpleTC(s, "vampired", card)) if (TargetChooser * tc = parseSimpleTC(s, "vampired", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrVampired(observer, id, card, tc, fromTc,once); return NEW TrVampired(observer, id, card, tc, fromTc, once, limitOnceATurn);
} }
//when card becomes the target of a spell or ability //when card becomes the target of a spell or ability
if (TargetChooser * tc = parseSimpleTC(s, "targeted", card)) if (TargetChooser * tc = parseSimpleTC(s, "targeted", card))
{ {
TargetChooser *fromTc = parseSimpleTC(s, "from", card); TargetChooser *fromTc = parseSimpleTC(s, "from", card);
return NEW TrTargeted(observer, id, card, tc, fromTc, 0,once); return NEW TrTargeted(observer, id, card, tc, fromTc, 0, once, limitOnceATurn);
} }
if (s.find("counteradded(") != string::npos) if (s.find("counteradded(") != string::npos)
@@ -1569,7 +1569,7 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
found = s.find(Constants::MTGPhaseCodeNames[i]); found = s.find(Constants::MTGPhaseCodeNames[i]);
if (found != string::npos) if (found != string::npos)
{ {
return NEW TriggerNextPhase(observer, id, card, target, i, who,sourceUntapped,once); return NEW TriggerNextPhase(observer, id, card, target, i, who, sourceUntapped, once);
} }
} }
} }
@@ -1583,7 +1583,7 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
found = s.find(Constants::MTGPhaseCodeNames[i]); found = s.find(Constants::MTGPhaseCodeNames[i]);
if (found != string::npos) if (found != string::npos)
{ {
return NEW TriggerAtPhase(observer, id, card, target, i, who,sourceUntapped,sourceTap,lifelost,lifeamount,once); return NEW TriggerAtPhase(observer, id, card, target, i, who, sourceUntapped, sourceTap, lifelost, lifeamount, once);
} }
} }
} }
@@ -1592,7 +1592,7 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
found = s.find("rebounded"); found = s.find("rebounded");
if (found != string::npos) if (found != string::npos)
{ {
return NEW TriggerRebound(observer, id, card, target, 2, 1,sourceUntapped,once); return NEW TriggerRebound(observer, id, card, target, 2, 1, sourceUntapped, once);
} }
return NULL; return NULL;

View File

@@ -233,7 +233,8 @@ const char* Constants::MTGBasicAbilities[] = {
"hasdisturb", //Retrace cost is a disturb cost (e.g. "Beloved Beggar") "hasdisturb", //Retrace cost is a disturb cost (e.g. "Beloved Beggar")
"daybound", //Card has daybound (e.g. "Brutal Cathar") "daybound", //Card has daybound (e.g. "Brutal Cathar")
"nightbound", //Card has nightbound (e.g. "Moonrage Brute") "nightbound", //Card has nightbound (e.g. "Moonrage Brute")
"decayed" //Card has decayd. "decayed", //Card has decayed.
"hasstrive" //Kicker cost is a strive cost (e.g. "Aerial Formation")
}; };
map<string,int> Constants::MTGBasicAbilitiesMap; map<string,int> Constants::MTGBasicAbilitiesMap;

View File

@@ -526,7 +526,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA)))
{ {
withKickerCost->add(withKickerCost->getKicker()); withKickerCost->add(withKickerCost->getKicker());
if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost) or they are a replicate cost (eg. "Vacuumelt"). if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE] || card->basicAbilities[Constants::HASSTRIVE]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
} }
for(int i = 0;i < card->kicked;i++) for(int i = 0;i < card->kicked;i++)
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
@@ -537,7 +537,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
{ {
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
payResult = ManaCost::MANA_PAID_WITH_KICKER; payResult = ManaCost::MANA_PAID_WITH_KICKER;
if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost) or they are a replicate cost (eg. "Vacuumelt"). if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE] || card->basicAbilities[Constants::HASSTRIVE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1; card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1;
} }
delete withKickerCost; delete withKickerCost;
@@ -681,7 +681,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
{ {
if (!game->targetListIsSet(card)) if (!game->targetListIsSet(card))
{ {
if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost) or they are a replicate cost (eg. "Vacuumelt"). if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE] || card->basicAbilities[Constants::HASSTRIVE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
return 0; return 0;
} }
} }
@@ -704,7 +704,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA))) while(previousManaPool->canAfford(withKickerCost,card->has(Constants::ANYTYPEOFMANA)))
{ {
withKickerCost->add(withKickerCost->getKicker()); withKickerCost->add(withKickerCost->getKicker());
if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost) or they are a replicate cost (eg. "Vacuumelt"). if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE] || card->basicAbilities[Constants::HASSTRIVE]) card->kicked += 1; //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
} }
for(int i = 0;i < card->kicked;i++) for(int i = 0;i < card->kicked;i++)
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
@@ -715,7 +715,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
{ {
player->getManaPool()->pay(card->getManaCost()->getKicker()); player->getManaPool()->pay(card->getManaCost()->getKicker());
payResult = ManaCost::MANA_PAID_WITH_KICKER; payResult = ManaCost::MANA_PAID_WITH_KICKER;
if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost) or they are a replicate cost (eg. "Vacuumelt"). if(!card->basicAbilities[Constants::HASNOKICKER] || card->basicAbilities[Constants::HASREPLICATE] || card->basicAbilities[Constants::HASSTRIVE]) card->kicked = 1; //Some kicker costs are not a real kicker (e.g. Fuse cost, Replicate cost, Strive cost).
card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1; card->alternateCostPaid[ManaCost::MANA_PAID_WITH_KICKER] = 1;
} }
delete withKickerCost; delete withKickerCost;