Fixed all primitives that should target any target instead of player and creatures using the new implemented target "anytarget", added new target "propagation" for "propagate" ability, removed the duplicated "unsacrificable" basic ability to use the previous "cantbesacrified" one.

This commit is contained in:
Vittorio Alfieri
2023-07-08 19:19:17 +02:00
parent 17b4dbf55a
commit 2ed35bcaa2
7 changed files with 1176 additions and 1091 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
#Planeswalkers Primitives Pack for Wagic the Homebrew.
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
#We sorted this in alphabetical order - Luruz & Vitty85 05-07-2023
#We sorted this in alphabetical order - Luruz & Vitty85 08-07-2023
[card]
name=Abian, Luvion Usurper
auto=counter(0/0,5,loyalty)
@@ -9,26 +9,26 @@ auto=@lifelostof(player) from(*[-Abian]):counter(0/0,-thatmuch,Loyalty) all(this
auto=@lifeof(player) from(*[-Abian]):counter(0/0,thatmuch,Loyalty) all(this)
auto={C(0/0,3,Loyalty)}:name(+3: Discard your hand and draw a card equal to highest power) reject all(*|myhand) && draw:power:highest:creature:mybattlefield controller && life:3 controller
auto={C(0/0,1,Loyalty)}:name(+1: Create a 3/2 Spirit) token(Spirit,Creature Spirit,3/2,red,green) && life:1 controller
auto={C(0/0,-1,Loyalty)}{L:1}:name(-1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}{L:2}:name(-2: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker)
auto={C(0/0,-3,Loyalty)}{L:3}:name(-3: Deals 3 damage to any target) damage:3 target(player,creature,planeswalker)
auto={C(0/0,-4,Loyalty)}{L:4}:name(-4: Deals 4 damage to any target) damage:4 target(player,creature,planeswalker)
auto={C(0/0,-5,Loyalty)}{L:5}:name(-5: Deals 5 damage to any target) damage:5 target(player,creature,planeswalker)
auto={C(0/0,-6,Loyalty)}{L:6}:name(-6: Deals 6 damage to any target) damage:6 target(player,creature,planeswalker)
auto={C(0/0,-7,Loyalty)}{L:7}:name(-7: Deals 7 damage to any target) damage:7 target(player,creature,planeswalker)
auto={C(0/0,-8,Loyalty)}{L:8}:name(-8: Deals 8 damage to any target) damage:8 target(player,creature,planeswalker)
auto={C(0/0,-9,Loyalty)}{L:9}:name(-9: Deals 9 damage to any target) damage:9 target(player,creature,planeswalker)
auto={C(0/0,-10,Loyalty)}{L:10}:name(-10: Deals 10 damage to any target) damage:10 target(player,creature,planeswalker)
auto={C(0/0,-11,Loyalty)}{L:11}:name(-11: Deals 11 damage to any target) damage:11 target(player,creature,planeswalker)
auto={C(0/0,-12,Loyalty)}{L:12}:name(-12: Deals 12 damage to any target) damage:12 target(player,creature,planeswalker)
auto={C(0/0,-13,Loyalty)}{L:13}:name(-13: Deals 13 damage to any target) damage:13 target(player,creature,planeswalker)
auto={C(0/0,-14,Loyalty)}{L:14}:name(-14: Deals 14 damage to any target) damage:14 target(player,creature,planeswalker)
auto={C(0/0,-15,Loyalty)}{L:15}:name(-15: Deals 15 damage to any target) damage:15 target(player,creature,planeswalker)
auto={C(0/0,-16,Loyalty)}{L:16}:name(-16: Deals 16 damage to any target) damage:16 target(player,creature,planeswalker)
auto={C(0/0,-17,Loyalty)}{L:17}:name(-17: Deals 17 damage to any target) damage:17 target(player,creature,planeswalker)
auto={C(0/0,-18,Loyalty)}{L:18}:name(-18: Deals 18 damage to any target) damage:18 target(player,creature,planeswalker)
auto={C(0/0,-19,Loyalty)}{L:19}:name(-19: Deals 19 damage to any target) damage:19 target(player,creature,planeswalker)
auto={C(0/0,-20,Loyalty)}{L:20}:name(-20: Deals 20 damage to any target) damage:20 target(player,creature,planeswalker)
auto={C(0/0,-1,Loyalty)}{L:1}:name(-1: Deals 1 damage to any target) damage:1 target(anytarget)
auto={C(0/0,-2,Loyalty)}{L:2}:name(-2: Deals 2 damage to any target) damage:2 target(anytarget)
auto={C(0/0,-3,Loyalty)}{L:3}:name(-3: Deals 3 damage to any target) damage:3 target(anytarget)
auto={C(0/0,-4,Loyalty)}{L:4}:name(-4: Deals 4 damage to any target) damage:4 target(anytarget)
auto={C(0/0,-5,Loyalty)}{L:5}:name(-5: Deals 5 damage to any target) damage:5 target(anytarget)
auto={C(0/0,-6,Loyalty)}{L:6}:name(-6: Deals 6 damage to any target) damage:6 target(anytarget)
auto={C(0/0,-7,Loyalty)}{L:7}:name(-7: Deals 7 damage to any target) damage:7 target(anytarget)
auto={C(0/0,-8,Loyalty)}{L:8}:name(-8: Deals 8 damage to any target) damage:8 target(anytarget)
auto={C(0/0,-9,Loyalty)}{L:9}:name(-9: Deals 9 damage to any target) damage:9 target(anytarget)
auto={C(0/0,-10,Loyalty)}{L:10}:name(-10: Deals 10 damage to any target) damage:10 target(anytarget)
auto={C(0/0,-11,Loyalty)}{L:11}:name(-11: Deals 11 damage to any target) damage:11 target(anytarget)
auto={C(0/0,-12,Loyalty)}{L:12}:name(-12: Deals 12 damage to any target) damage:12 target(anytarget)
auto={C(0/0,-13,Loyalty)}{L:13}:name(-13: Deals 13 damage to any target) damage:13 target(anytarget)
auto={C(0/0,-14,Loyalty)}{L:14}:name(-14: Deals 14 damage to any target) damage:14 target(anytarget)
auto={C(0/0,-15,Loyalty)}{L:15}:name(-15: Deals 15 damage to any target) damage:15 target(anytarget)
auto={C(0/0,-16,Loyalty)}{L:16}:name(-16: Deals 16 damage to any target) damage:16 target(anytarget)
auto={C(0/0,-17,Loyalty)}{L:17}:name(-17: Deals 17 damage to any target) damage:17 target(anytarget)
auto={C(0/0,-18,Loyalty)}{L:18}:name(-18: Deals 18 damage to any target) damage:18 target(anytarget)
auto={C(0/0,-19,Loyalty)}{L:19}:name(-19: Deals 19 damage to any target) damage:19 target(anytarget)
auto={C(0/0,-20,Loyalty)}{L:20}:name(-20: Deals 20 damage to any target) damage:20 target(anytarget)
text=As Abian, Luvion Usurper enters the battlefield, you become Abian. (Your life total becomes equal to their loyalty. You can activate the loyalty abilities by spending or gaining life.) -- +3: Discard your hand, then draw cards equal to the greatest power among creatures you control. -- +1: Create a 3/2 red and green Spirit creature token. -- X: You deal X damage to any target.
mana={5}{R}{G}
type=Legendary Planeswalker
@@ -155,7 +155,7 @@ subtype=Ajani
name=Ajani Vengeant
auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Permanent doesn't untap) frozen target(*)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage and gain 3 life) damage:3 target(player,creature,planeswalker) && life:3 controller
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage and gain 3 life) damage:3 target(anytarget) && life:3 controller
auto={C(0/0,-7,Loyalty)}:name(-7: Destroy all lands) target(player) destroy all(land|targetedpersonsbattlefield)
text=+1: Target permanent doesn't untap during its controller's next untap step. -- -2: Ajani Vengeant deals 3 damage to any target and you gain 3 life. -- -7: Destroy all lands target player controls.
mana={2}{R}{W}
@@ -397,7 +397,7 @@ subtype=Calix
[card]
name=Chandra Ablaze
auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Discard a card and deals 4 damage) all(this) transforms((,newability[reject notatarget(*|myhand)],newability[@discarded(*[red]|myhand) once:damage:4 target(*[creature;player])])) ueot
auto={C(0/0,1,Loyalty)}:name(+1: Discard a card and deals 4 damage) all(this) transforms((,newability[reject notatarget(*|myhand)],newability[@discarded(*[red]|myhand) once:damage:4 target(anytarget)])) ueot
auto={C(0/0,-2,Loyalty)}:name(-2: Discard hand and draw three cards) reject all(*|hand) && draw:3 all(player)
auto={C(0/0,-7,Loyalty)}:name(-7: Cast any number of instants or sorceries for zero) castcard(normal) target(<anyamount>*[red;instant;sorcery]|mygraveyard)
text=+1: Discard a card. If a red card is discarded this way, Chandra Ablaze deals 4 damage to target creature or player. -- -2: Each player discards his or her hand, then draws three cards. -- -7: Cast any number of red instant and/or sorcery cards from your graveyard without paying their mana costs.
@@ -503,7 +503,7 @@ subtype=Chandra
[card]
name=Chandra, Flame's Fury
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(anytarget)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 4 to creature and 2 to its controller) damage:4 target(creature) && damage:2 targetController
auto={C(0/0,-8,Loyalty)}:name(-8: Deals 10 damage to target player and his creatures) damage:10 target(player) && damage:10 all(creature|targetedpersonsbattlefield)
text=+1: Chandra, Flame's Fury deals 2 damage to any target. -- -2: Chandra, Flame's Fury deals 4 damage to target creature and 2 damage to that creature's controller. -- -8: Chandra, Flame's Fury deals 10 damage to target player and each creature that player controls.
@@ -515,7 +515,7 @@ subtype=Chandra
name=Chandra, Gremlin Wrangler
auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Create a 2/2 red Gremlin creature token) token(Gremlin,Creature Gremlin,2/2,red)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals X damage to any target... ) damage:damage:type:creature[Gremlin]|myBattlefield target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals X damage to any target... ) damage:damage:type:creature[Gremlin]|myBattlefield target(anytarget)
text=+1: Create a 2/2 red Gremlin creature token. -- -2: Chandra, Gremlin Wrangler deals X damage to any target, where X is the number of Gremlins you control.
mana={2}{R}{R}
type=Legendary Planeswalker
@@ -526,7 +526,7 @@ name=Chandra, Heart of Fire
aicode=activate moveto(exile) target(<anyamount>*[instant;sorcery;red]|myLibrary,myGraveyard) and!( canplayfromexile )!
auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Discard hand, exile three from top and cast from exile) ability$!name(Discard hand) reject all(*|myHand)!$ controller && moveTo(exile) all(*[zpos<=3]|mylibrary) && transforms((,newability[canplayfromexile])) ueot
auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 2 damage to any target) damage:2 target(anytarget)
auto={C(0/0,-9,Loyalty)}:name(-9: Search instants or sorceries, exile them and add six red mana) target(<anyamount>*[instant;sorcery;red]|myLibrary,myGraveyard) moveto(exile) and!( transforms((,newability[canplayfromexile])) ueot )! && shuffle controller && add{R}{R}{R}{R}{R}{R}
text=+1: Discard your hand, then exile the top three cards of your library. Until end of turn, you may play cards exiled this way. -- +1: Chandra, Heart of Fire deals 2 damage to any target. -- 9: Search your graveyard and library for any number of red instant and/or sorcery cards, exile them, then shuffle your library. You may cast them this turn. Add six {R}.
mana={3}{R}{R}
@@ -539,46 +539,46 @@ auto=counter(0/0,5,loyalty)
auto=@movedTo(*[instant;sorcery]|mystack) turnlimited:name(Copy spell) name(Copy spell) all(trigger[to]) transforms((,newability[name(Copy spell) activate castcard(copied noevent)])) oneshot
auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{R} _ choice name(Add green) add{G} _ choice name(Add black) add{B}!$ controller
auto={C(0/0,+1,Loyalty)}:name(+1: Exile top 5 cards) all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[instant;sorcery]|*) then transforms((,newability[canplayfromexile])) ueot )!
auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:1!$ controller
auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:1!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:2!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:2!$ controller
auto={C(0/0,-3,Loyalty)}:name(-3: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:3!$ controller
auto={C(0/0,-3,Loyalty)}:name(-3: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:3!$ controller
auto={C(0/0,-4,Loyalty)}:name(-4: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:4!$ controller
auto={C(0/0,-4,Loyalty)}:name(-4: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:4!$ controller
auto={C(0/0,-5,Loyalty)}:name(-5: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:5!$ controller
auto={C(0/0,-5,Loyalty)}:name(-5: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:5!$ controller
auto={C(0/0,-6,Loyalty)}:name(-6: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:6!$ controller
auto={C(0/0,-6,Loyalty)}:name(-6: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:6!$ controller
auto={C(0/0,-7,Loyalty)}:name(-7: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:7!$ controller
auto={C(0/0,-7,Loyalty)}:name(-7: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:7!$ controller
auto={C(0/0,-8,Loyalty)}:name(-8: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:8!$ controller
auto={C(0/0,-8,Loyalty)}:name(-8: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:8!$ controller
auto={C(0/0,-9,Loyalty)}:name(-9: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:9!$ controller
auto={C(0/0,-9,Loyalty)}:name(-9: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:9!$ controller
auto={C(0/0,-10,Loyalty)}:name(-10: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:10!$ controller
auto={C(0/0,-10,Loyalty)}:name(-10: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:10!$ controller
auto={C(0/0,-11,Loyalty)}:name(-11: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:11!$ controller
auto={C(0/0,-11,Loyalty)}:name(-11: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:11!$ controller
auto={C(0/0,-12,Loyalty)}:name(-12: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:12!$ controller
auto={C(0/0,-12,Loyalty)}:name(-12: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:12!$ controller
auto={C(0/0,-13,Loyalty)}:name(-13: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:13!$ controller
auto={C(0/0,-13,Loyalty)}:name(-13: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:13!$ controller
auto={C(0/0,-14,Loyalty)}:name(-14: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:14!$ controller
auto={C(0/0,-14,Loyalty)}:name(-14: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:14!$ controller
auto={C(0/0,-15,Loyalty)}:name(-15: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:15!$ controller
auto={C(0/0,-15,Loyalty)}:name(-15: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:15!$ controller
auto={C(0/0,-16,Loyalty)}:name(-16: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:16!$ controller
auto={C(0/0,-16,Loyalty)}:name(-16: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:16!$ controller
auto={C(0/0,-17,Loyalty)}:name(-17: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:17!$ controller
auto={C(0/0,-17,Loyalty)}:name(-17: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:17!$ controller
auto={C(0/0,-18,Loyalty)}:name(-18: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:18!$ controller
auto={C(0/0,-18,Loyalty)}:name(-18: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:18!$ controller
auto={C(0/0,-19,Loyalty)}:name(-19: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:19!$ controller
auto={C(0/0,-19,Loyalty)}:name(-19: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:19!$ controller
auto={C(0/0,-20,Loyalty)}:name(-20: Damage one target) ability$!name(Damage target) name(Damage target) target(player,creature,planeswalker) damage:20!$ controller
auto={C(0/0,-20,Loyalty)}:name(-20: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>player,creature,planeswalker) damage:20!$ controller
auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:1!$ controller
auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:1!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:2!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:2!$ controller
auto={C(0/0,-3,Loyalty)}:name(-3: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:3!$ controller
auto={C(0/0,-3,Loyalty)}:name(-3: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:3!$ controller
auto={C(0/0,-4,Loyalty)}:name(-4: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:4!$ controller
auto={C(0/0,-4,Loyalty)}:name(-4: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:4!$ controller
auto={C(0/0,-5,Loyalty)}:name(-5: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:5!$ controller
auto={C(0/0,-5,Loyalty)}:name(-5: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:5!$ controller
auto={C(0/0,-6,Loyalty)}:name(-6: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:6!$ controller
auto={C(0/0,-6,Loyalty)}:name(-6: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:6!$ controller
auto={C(0/0,-7,Loyalty)}:name(-7: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:7!$ controller
auto={C(0/0,-7,Loyalty)}:name(-7: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:7!$ controller
auto={C(0/0,-8,Loyalty)}:name(-8: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:8!$ controller
auto={C(0/0,-8,Loyalty)}:name(-8: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:8!$ controller
auto={C(0/0,-9,Loyalty)}:name(-9: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:9!$ controller
auto={C(0/0,-9,Loyalty)}:name(-9: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:9!$ controller
auto={C(0/0,-10,Loyalty)}:name(-10: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:10!$ controller
auto={C(0/0,-10,Loyalty)}:name(-10: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:10!$ controller
auto={C(0/0,-11,Loyalty)}:name(-11: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:11!$ controller
auto={C(0/0,-11,Loyalty)}:name(-11: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:11!$ controller
auto={C(0/0,-12,Loyalty)}:name(-12: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:12!$ controller
auto={C(0/0,-12,Loyalty)}:name(-12: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:12!$ controller
auto={C(0/0,-13,Loyalty)}:name(-13: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:13!$ controller
auto={C(0/0,-13,Loyalty)}:name(-13: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:13!$ controller
auto={C(0/0,-14,Loyalty)}:name(-14: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:14!$ controller
auto={C(0/0,-14,Loyalty)}:name(-14: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:14!$ controller
auto={C(0/0,-15,Loyalty)}:name(-15: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:15!$ controller
auto={C(0/0,-15,Loyalty)}:name(-15: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:15!$ controller
auto={C(0/0,-16,Loyalty)}:name(-16: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:16!$ controller
auto={C(0/0,-16,Loyalty)}:name(-16: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:16!$ controller
auto={C(0/0,-17,Loyalty)}:name(-17: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:17!$ controller
auto={C(0/0,-17,Loyalty)}:name(-17: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:17!$ controller
auto={C(0/0,-18,Loyalty)}:name(-18: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:18!$ controller
auto={C(0/0,-18,Loyalty)}:name(-18: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:18!$ controller
auto={C(0/0,-19,Loyalty)}:name(-19: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:19!$ controller
auto={C(0/0,-19,Loyalty)}:name(-19: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:19!$ controller
auto={C(0/0,-20,Loyalty)}:name(-20: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:20!$ controller
auto={C(0/0,-20,Loyalty)}:name(-20: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:20!$ controller
text=Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. This ability triggers only once each turn. -- [+2]: Add two mana in any combination of colors. -- [+1]: Exile the top five cards of your library. Until the end of your next turn, you may cast an instant or sorcery spell from among those exiled cards. -- [X]: Chandra, Hope's Beacon deals X damage to each of up to two targets.
mana={4}{R}{R}
type=Legendary Planeswalker
@@ -610,7 +610,7 @@ auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Add red mana) add{R} controller
auto={C(0/0,1,Loyalty)}:name(+1: Add red and deal damage) target(player,planeswalker) damage:1 && add{R} controller
auto={C(0/0,1,Loyalty)}:name(+1: Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( if cantargetcard(*[red]|*) then canplayfromexile ueot )!
auto={C(0/0,-7,Loyalty)}:name(-7: Exile top 5 cards) emblem transforms((,newability[@movedto(*[red]|mystack):all(trigger[to]) transforms((,newability[name(Deals damage) target(player^creature^planeswalker) damage:totmanaspent])) oneshot],newability[all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[red]|*) then canplayfromexile ueot )!])) forever dontremove
auto={C(0/0,-7,Loyalty)}:name(-7: Exile top 5 cards) emblem transforms((,newability[@movedto(*[red]|mystack):all(trigger[to]) transforms((,newability[name(Deals damage) target(anytarget) damage:totmanaspent])) oneshot],newability[all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[red]|*) then canplayfromexile ueot )!])) forever dontremove
text=+1: Add {R}. Chandra, Dressed to Kill deals 1 damage to up to one target player or planeswalker. -- +1: Exile the top card of your library. If it's red, you may cast it this turn. -- -7: Exile the top five cards of your library. You may cast red spells from among them this turn. You get an emblem with "Whenever you cast a red spell, this emblem deals X damage to any target, where X is the amount of mana spent to cast that spell."
mana={1}{R}{R}
type=Legendary Planeswalker
@@ -621,7 +621,7 @@ name=Chandra, Novice Pyromancer
auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Elemental creatures gets +2/+0) all(creature[elemental]|mybattlefield) 2/0 ueot
auto={C(0/0,-1,Loyalty)}:name(-1: Add two red mana) add{R}{R}
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 2 damage to any target) damage:2 target(anytarget)
text=+1: Elementals you control get +2/+0 until end of turn. -- -1: Add {R}{R}. -- -2: Chandra, Novice Pyromancer deals 2 damage to any target.
mana={3}{R}
type=Legendary Planeswalker
@@ -665,7 +665,7 @@ color=red
[card]
name=Chandra, the Firebrand
auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker)
auto={C(0/0,1,Loyalty)}:name(+1: Deals 1 damage to any target) damage:1 target(anytarget)
auto={C(0/0,-2,Loyalty)}:name(-2: When cast instant or sorcery, copy spell) emblem transforms((,newability[@movedto(*[instant;sorcery]|myStack) turnlimited:all(trigger[to]) activate castcard(copied noevent)])) ueot
auto={C(0/0,-6,Loyalty)}:name(-6: Deals 6 damage up to six targets) ability$!name(Choose one) choice name(Damage opponent and five creature) damage:6 opponent && damage:6 target(<upto:5>creature) _ choice name(Damage controller and five creature) damage:6 controller && damage:6 target(<upto:5>creature) _ choice name(Damage creature) damage:6 target(<upto:6>creature)!$ controller
text=+1: Chandra, the Firebrand deals 1 damage to any target. -- -2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. -- -6: Chandra, the Firebrand deals 6 damage to each of up to six target creatures and/or players.
@@ -682,7 +682,7 @@ auto=@each endofturn:if type(*[counter{0/0.1.ChandraEffect}]|myexile)~morethan~0
auto=@each endofturn:if type(*[counter{0/0.1.ChandraEffect}]|myexile)~morethan~0 then name(Deals 2 damage) name(Deals 2 damage) damage:2 opponent
auto={C(0/0,1,Loyalty)}:name(+1: Add two red mana) add{R}{R}
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 4 damage to target creature) damage:4 target(creature)
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: Deals 5 damage when casting a spell) emblem transforms((,newability[@movedTo(*|mystack):damage:5 target(player^creature^planeswalker)])) forever dontremove
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: Deals 5 damage when casting a spell) emblem transforms((,newability[@movedTo(*|mystack):damage:5 target(anytarget)])) forever dontremove
text=+1: Exile the top card of your library. You may cast that card. If you don't, Chandra, Torch of Defiance deals 2 damage to each opponent. -- +1: Add {R}{R} to your mana pool. -- -3: Chandra, Torch of Defiance deals 4 damage to target creature. -- -7: You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to any target."
mana={2}{R}{R}
type=Legendary Planeswalker
@@ -788,7 +788,7 @@ name=Domri, City Smasher
auto=counter(0/0,4,loyalty)
aicode=activate moveto(myHand) target(creature[zpos=2]|myLibrary)
auto={C(0/0,2,Loyalty)}:name(+2: Creatures gets +1/+1 and haste) all(creature|myBattlefield) 1/1 ueot && ability$!name(gain haste) all(creature|myBattlefield) haste ueot !$ controller
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 3 damage to any target) damage:3 target(player,creature,planeswalker)
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 3 damage to any target) damage:3 target(anytarget)
auto={C(0/0,-8,Loyalty)}:name(-8: Put three +1/+1 counters and trample) counter(1/1,3) all(creature|myBattlefield) && ability$!name(gain trample) all(creature|myBattlefield) trample ueot !$ controller
text=+2: Creatures you control get +1/+1 and gain haste until end of turn. -- 3: Domri, City Smasher deals 3 damage to any target. -- 8: Put three +1/+1 counters on each creature you control. Those creatures gain trample until end of turn.
mana={4}{R}{G}
@@ -1582,7 +1582,7 @@ auto=@damaged(*|opponentBattlefield) from(other *[red]|*):all(trigger[to]) damag
auto=@damaged(*|mybattlefield) from(other *[red]|myzones):all(trigger[to]) damage:1
auto=@damageof(player) from(other *[red]|myzones):damage:1 controller
auto=@damagefoeof(player) from(other *[red]|*):damage:1 opponent
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 2 damage to any target) damage:2 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 2 damage to any target) damage:2 target(anytarget)
text=If another red source you control would deal damage to a permanent or player, it deals that much damage plus 1 to that permanent or player instead. -- 2: Jaya, Venerated Firemage deals 2 damage to any target.
mana={2}{R}{R}{R}
type=Legendary Planeswalker
@@ -2091,7 +2091,7 @@ auto=counter(0/0,5,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Don't discard any card) donothing
auto={C(0/0,1,Loyalty)}:name(+1: Discard and draw) target(*|myhand) transforms((,newability[reject],newability[if cantargetcard(*[creature]|*) then draw:2 else draw:1])) oneshot
auto={C(0/0,-2,Loyalty)}:name(-2: Return creature from graveyard) target(creature|mygraveyard) moveto(mybattlefield) and!( transforms((,newability[unearth],newability[haste])) forever )!
auto={C(0/0,-7,Loyalty)}:name(-7: Get emblem powerstrike) emblem transforms((,newability[@movedTo(creature|mybattlefield):name(Damage any target) all(trigger[to]) transforms((,newability[name(Damage any target) damage:power target(player^creature^planeswalker)])) oneshot])) forever dontremove
auto={C(0/0,-7,Loyalty)}:name(-7: Get emblem powerstrike) emblem transforms((,newability[@movedTo(creature|mybattlefield):name(Damage any target) all(trigger[to]) transforms((,newability[name(Damage any target) damage:power target(anytarget)])) oneshot])) forever dontremove
text=+1: You may discard a card. If you do, draw a card. If a creature card was discarded this way, draw two cards instead. -- 2: Return target creature card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of your next upkeep. -- 7: You get an emblem with "Whenever a creature enters the battlefield under your control, it deals damage equal to its power to any target." // {1}{W}{W} Mila, Crafty Companion
mana={4}{R}{R}
type=Legendary Planeswalker
@@ -2105,8 +2105,8 @@ auto=may name(Create Boo) token(Boo,Legendary Creature Hamster,1/1,red,trample,h
auto=@each my upkeep:may name(Create Boo) token(Boo,Legendary Creature Hamster,1/1,red,trample,haste)
auto={C(0/0,+1,Loyalty)}:name(Don't put counters) donothing
auto={C(0/0,+1,Loyalty)}:name(Put 1/1 counters) target(creature[trample;haste]) counter(1/1,3)
auto={C(0/0,-2,Loyalty)}{S(creature[-hamster]|mybattlefield)}:name(Sacrifice a non hamster creature) target(player,creature,planeswalker) damage:storedpower
auto={C(0/0,-2,Loyalty)}{S(creature[hamster]|mybattlefield)}:name(Sacrifice a hamster) target(player,creature,planeswalker) damage:storedpower && draw:storedpower controller
auto={C(0/0,-2,Loyalty)}{S(creature[-hamster]|mybattlefield)}:name(Sacrifice a non hamster creature) target(anytarget) damage:storedpower
auto={C(0/0,-2,Loyalty)}{S(creature[hamster]|mybattlefield)}:name(Sacrifice a hamster) target(anytarget) damage:storedpower && draw:storedpower controller
text=When Minsc & Boo, Timeless Heroes enters the battlefield and at the beginning of your upkeep, you may create Boo, a legendary 1/1 red Hamster creature token with trample and haste. -- [+1]: Put three +1/+1 counters on up to one target creature with trample or haste. -- [2]: Sacrifice a creature. When you do, Minsc & Boo, Timeless Heroes deals X damage to any target, where X is that creature's power. If the sacrificed creature was a Hamster, draw X cards. -- Minsc & Boo, Timeless Heroes can be your commander.
mana={2}{R}{G}
type=Legendary Planeswalker
@@ -2274,7 +2274,7 @@ auto=counter(0/0,4,Loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Gain 2 life and produce mana) life:2 controller && if type(*[-creature]|myhand)~morethan~0 then ability$!choice add{U} _ choice add{R} _ choice add{W}!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Draw and may discard land) draw:1 controller && ability$!name(May discard a land) may target(*[land]|myhand) reject!$ controller
auto={C(0/0,-2,Loyalty)}{D(*[-land]|myhand)}:name(-2: Draw, discard nonland and damage) draw:1 controller && damage:storedmanacost target(creature;planeswalker)
auto={C(0/0,-6,Loyalty)}:name(-6: Emblem: Cast a noncreature spell and deals 2 damage) emblem transforms((,newability[@movedTo(*[-creature]|mystack):damage:2 target(player,creature,planeswalker)])) forever dontremove
auto={C(0/0,-6,Loyalty)}:name(-6: Emblem: Cast a noncreature spell and deals 2 damage) emblem transforms((,newability[@movedTo(*[-creature]|mystack):damage:2 target(anytarget)])) forever dontremove
text=+1: You gain 2 life. Add {U}, {R}, or {W}. Spend this mana only to cast a noncreature spell. -- -2: Draw a card, then you may discard a card. When you discard a nonland card this way, Narset of the Ancient Way deals damage equal to that card's mana value to target creature or planeswalker. -- -6: You get an emblem with "Whenever you cast a noncreature spell, this emblem deals 2 damage to any target."
mana={1}{U}{R}{W}
type=Legendary Planeswalker
@@ -2596,7 +2596,7 @@ subtype=Liliana
name=Ral, Caller of Storms
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 controller
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage divided to any target) thisforeach(variable{3}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planewsalker) damage:1!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage divided to any target) thisforeach(variable{3}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(anytarget) damage:1!$ controller
auto={C(0/0,-7,Loyalty)}:name(-7: Draw 7 cards and deals 7 to each creature) draw:7 controller && damage:7 all(creature|opponentBattlefield)
text=+1: Draw a card. -- -2: Ral, Caller of Storms deals 3 damage divided as you choose among one, two, or three targets. -- -7: Draw seven cards. Ral, Caller of Storms deals 7 damage to each creature your opponents control.
mana={4}{U}{R}
@@ -2609,7 +2609,7 @@ auto=counter(0/0,4,loyalty)
aicode=activate transforms((,newability[choice all(*[zpos=2]|mylibrary) moveto(myhand) and!(deplete:1)!],newability[choice all(*[zpos=1]|mylibrary) moveto(myhand) and!(deplete:1)!])) ueot
auto={C(0/0,1,Loyalty)}:name(+1: Look the top two, put one in hand other graveyard) name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend
auto={C(0/0,-3,Loyalty)}:name(-3: Deals damage for each instant and sorcery) target(creature) damage:type:*[instant;sorcery]:myexilepluspginstantsorceryplusend
auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever cast spell, deals 4 damage, draw two cards") emblem transforms((,newability[@movedTo(*[instant;sorcery]|myStack):draw:2 controller && damage:4 target(player,creature,planeswalker)])) forever dontremove
auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever cast spell, deals 4 damage, draw two cards") emblem transforms((,newability[@movedTo(*[instant;sorcery]|myStack):draw:2 controller && damage:4 target(anytarget)])) forever dontremove
text=+1: Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. -- 3: Ral, Izzet Viceroy deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard. -- 8: You get an emblem with "Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards."
mana={3}{U}{R}
type=Legendary Planeswalker
@@ -2631,7 +2631,7 @@ subtype=Ral
name=Ral Zarek
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Tap and untap other permanent) tap(noevent) target(*) && ability$!untap target(other *)!$ controller
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage to any target) damage:3 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 3 damage to any target) damage:3 target(anytarget)
auto={C(0/0,-7,Loyalty)}:name(-7: Flip five coins and take an extra turn for each head) flipacoin winability turns:+1 controller winabilityend flipend && flipacoin winability turns:+1 controller winabilityend flipend && flipacoin winability turns:+1 controller winabilityend flipend && flipacoin winability turns:+1 controller winabilityend flipend && flipacoin winability turns:+1 controller winabilityend flipend
text=+1: Tap target permanent, then untap another target permanent. -- -2: Ral Zarek deals 3 damage to target creature or player. -- -7: Flip five coins. Take an extra turn after this one for each coin that comes up heads.
mana={2}{U}{R}
@@ -2715,7 +2715,7 @@ name=Samut, the Tested
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Don't target any creature) donothing
auto={C(0/0,1,Loyalty)}:name(+1: Target creature gains double strike) target(creature) transforms((,newability[double strike])) ueot
auto={C(0/0,-2,Loyalty)}:name(-2: Divided 2 damage) thisforeach(variable{2}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(player,creature,planeswalker) damage:1!$ controller ueot
auto={C(0/0,-2,Loyalty)}:name(-2: Divided 2 damage) thisforeach(variable{2}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(anytarget) damage:1!$ controller ueot
auto={C(0/0,-7,Loyalty)}:name(-7: Search two creature or planeswalker) moveto(mybattlefield) target(<upto:2>*[creature;planeswalker]|mylibrary)
text=+1: Up to one target creature gains double strike until end of turn. -- -2: Samut, the Tested deals 2 damage divided as you choose among one or two target creatures and/or players. -- -7: Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library.
mana={2}{R}{G}
@@ -2865,7 +2865,7 @@ subtype=Sorin
name=Sorin, Imperious Bloodlord
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Deathtouch and Lifelink) target(creature|myBattlefield) transforms((,newability[deathtouch],newability[lifelink],newability[if cantargetcard(*[vampire]|*) then counter(1/1)])) ueot
auto={C(0/0,1,Loyalty)}{S(vampire|myBattlefield)}:name(+1: Sacrifice and deals 3 damage) damage:3 target(player,creature,planeswalker)
auto={C(0/0,1,Loyalty)}{S(vampire|myBattlefield)}:name(+1: Sacrifice and deals 3 damage) damage:3 target(anytarget)
auto={C(0/0,-3,Loyalty)}:name(-3: Put a Vampire from your hand onto the battlefield) moveto(myBattlefield) target(creature[vampire]|myHand)
text=+1: Target creature you control gains deathtouch and lifelink until end of turn. If it's a Vampire, put a +1/+1 counter on it. -- +1: You may sacrifice a Vampire. When you do, Sorin, Imperious Bloodlord deals 3 damage to any target and you gain 3 life. -- -3: You may put a Vampire creature card from your hand onto the battlefield.
mana={2}{B}
@@ -2886,7 +2886,7 @@ subtype=Sorin
[card]
name=Sorin Markov
auto=counter(0/0,4,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: deals 2 damage to a creature and gain life...) damage:2 target(player,creature,planeswalker) && life:2 controller
auto={C(0/0,2,Loyalty)}:name(+2: deals 2 damage to a creature and gain life...) damage:2 target(anytarget) && life:2 controller
auto={C(0/0,-3,Loyalty)}:name(-3: Target opponent's life total becomes 10) lifeset:10 opponent
auto={C(0/0,-7,Loyalty)}:name(-7: you control target player -'Loses turn'-) turns:-1 opponent
text=+2: Sorin Markov deals 2 damage to any target and you gain 2 life. -- -3: Target opponent's life total becomes 10. -- -7: You control target player during that player's next turn.
@@ -2899,7 +2899,7 @@ name=Sorin the Mirthless
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Look top card) all(*[zpos=1]|mylibrary) moveto(myhand) and!( transforms((,newability[choice name(Put in hand) life:-manacost controller],newability[choice name(Put back in library) moveto(mylibrary)])) oneshot )!
auto={C(0/0,-2,Loyalty)}:name(-2: Create Vampire) token(Vampire,Creature Vampire,2/3,black,flying,lifelink)
auto={C(0/0,-7,Loyalty)}:name(-7: Deal 13 damage) damage:13 target(player,creature,planeswalker) && life:13 controller
auto={C(0/0,-7,Loyalty)}:name(-7: Deal 13 damage) damage:13 target(anytarget) && life:13 controller
text=+1: Look at the top card of your library. You may reveal that card and put it into your hand. If you do, you lose life equal to its mana value. -- -2: Create a 2/3 black Vampire creature token with flying and lifelink. -- -7: Sorin the Mirthless deals 13 damage to any target. You gain 13 life.
mana={2}{B}{B}
type=Legendary Planeswalker
@@ -2920,7 +2920,7 @@ subtype=Sorin
name=Sorin, Vampire Lord
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Creature gets +2/+0) target(creature) 2/0 ueot
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 4 damage and gains 4 life) life:4 controller && damage:4 target(player,creature,planeswalker)
auto={C(0/0,-2,Loyalty)}:name(-2: Deals 4 damage and gains 4 life) life:4 controller && damage:4 target(anytarget)
auto={C(0/0,-8,Loyalty)}:name(-8: Vampires gain: "Gain control of a creature") all(creature[vampire]|mybattlefield) transforms((,newability[{T}:moveTo(mybattlefield) target(creature)])) ueot
text=+1: Up to one target creature gets +2/+0 until end of turn. -- -2: Sorin, Vampire Lord deals 4 damage to any target. You gain 4 life. -- -8: Until end of turn, each Vampire you control gains " {T}: Gain control of target creature."
mana={4}{B}{B}
@@ -3357,7 +3357,7 @@ subtype=Tibalt
name=Tibalt, Rakish Instigator
auto=counter(0/0,5,loyalty)
abilities=nolifegainopponent
auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedto(this|mygraveyard):damage:1 target(*[player;creature;planeswalker])])) forever )!
auto={C(0/0,-2,Loyalty)}:name(-2: Create a 1/1 Devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedto(this|mygraveyard):damage:1 target(anytarget)])) forever )!
text=Your opponents can't gain life. -- -2: Create a 1/1 red Devil creature token with "Whenever this creature dies, it deals 1 damage to any target."
mana={2}{R}
type=Legendary Planeswalker
@@ -3394,26 +3394,26 @@ auto={C(0/0,1,Loyalty)}:name(+1: Draft Brimstone Vandal) conjure cards(Brimstone
auto={C(0/0,1,Loyalty)}:name(+1: Draft Devil's Play) conjure cards(Devil's Play) zone(myexile) and!( transforms((,newability[canplayfromexile],newability[add{R}{R}])) ueot )!
auto={C(0/0,1,Loyalty)}:name(+1: Damage opponent creature or planeswalker) target(*[creature;planeswalker]|opponentbattlefield) transforms((,newability[choice name(Damage target) damage:3],newability[choice name(Damage controller) damage:3 controller && ability$!may name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!( draw:1 controller )! !$ opponent])) oneshot
auto={C(0/0,1,Loyalty)}:name(+1: Damage your creature or planeswalker) target(*[creature;planeswalker]|mybattlefield) transforms((,newability[choice name(Damage target) damage:3],newability[choice name(Damage controller) damage:3 controller && ability$!may name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!( draw:1 controller )! !$ controller])) oneshot
auto={C(0/0,-1,Loyalty)}:name(-1: Create 1 devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-2,Loyalty)}:name(-2: Create 2 devils) token(Devil,Creature Devil,1/1,red)*2 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-3,Loyalty)}:name(-3: Create 3 devils) token(Devil,Creature Devil,1/1,red)*3 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-4,Loyalty)}:name(-4: Create 4 devils) token(Devil,Creature Devil,1/1,red)*4 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-5,Loyalty)}:name(-5: Create 5 devils) token(Devil,Creature Devil,1/1,red)*5 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-6,Loyalty)}:name(-6: Create 6 devils) token(Devil,Creature Devil,1/1,red)*6 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-7,Loyalty)}:name(-7: Create 7 devils) token(Devil,Creature Devil,1/1,red)*7 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-8,Loyalty)}:name(-8: Create 8 devils) token(Devil,Creature Devil,1/1,red)*8 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-9,Loyalty)}:name(-9: Create 9 devils) token(Devil,Creature Devil,1/1,red)*9 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-10,Loyalty)}:name(-10: Create 10 devils) token(Devil,Creature Devil,1/1,red)*10 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-11,Loyalty)}:name(-11: Create 11 devils) token(Devil,Creature Devil,1/1,red)*11 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-12,Loyalty)}:name(-12: Create 12 devils) token(Devil,Creature Devil,1/1,red)*12 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-13,Loyalty)}:name(-13: Create 13 devils) token(Devil,Creature Devil,1/1,red)*13 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-14,Loyalty)}:name(-14: Create 14 devils) token(Devil,Creature Devil,1/1,red)*14 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-15,Loyalty)}:name(-15: Create 15 devils) token(Devil,Creature Devil,1/1,red)*15 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-16,Loyalty)}:name(-16: Create 16 devils) token(Devil,Creature Devil,1/1,red)*16 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-17,Loyalty)}:name(-17: Create 17 devils) token(Devil,Creature Devil,1/1,red)*17 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-18,Loyalty)}:name(-18: Create 18 devils) token(Devil,Creature Devil,1/1,red)*18 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-19,Loyalty)}:name(-19: Create 19 devils) token(Devil,Creature Devil,1/1,red)*19 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-20,Loyalty)}:name(-20: Create 20 devils) token(Devil,Creature Devil,1/1,red)*20 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(player^creature^planeswalker)])) forever )!
auto={C(0/0,-1,Loyalty)}:name(-1: Create 1 devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-2,Loyalty)}:name(-2: Create 2 devils) token(Devil,Creature Devil,1/1,red)*2 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-3,Loyalty)}:name(-3: Create 3 devils) token(Devil,Creature Devil,1/1,red)*3 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-4,Loyalty)}:name(-4: Create 4 devils) token(Devil,Creature Devil,1/1,red)*4 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-5,Loyalty)}:name(-5: Create 5 devils) token(Devil,Creature Devil,1/1,red)*5 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-6,Loyalty)}:name(-6: Create 6 devils) token(Devil,Creature Devil,1/1,red)*6 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-7,Loyalty)}:name(-7: Create 7 devils) token(Devil,Creature Devil,1/1,red)*7 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-8,Loyalty)}:name(-8: Create 8 devils) token(Devil,Creature Devil,1/1,red)*8 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-9,Loyalty)}:name(-9: Create 9 devils) token(Devil,Creature Devil,1/1,red)*9 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-10,Loyalty)}:name(-10: Create 10 devils) token(Devil,Creature Devil,1/1,red)*10 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-11,Loyalty)}:name(-11: Create 11 devils) token(Devil,Creature Devil,1/1,red)*11 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-12,Loyalty)}:name(-12: Create 12 devils) token(Devil,Creature Devil,1/1,red)*12 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-13,Loyalty)}:name(-13: Create 13 devils) token(Devil,Creature Devil,1/1,red)*13 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-14,Loyalty)}:name(-14: Create 14 devils) token(Devil,Creature Devil,1/1,red)*14 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-15,Loyalty)}:name(-15: Create 15 devils) token(Devil,Creature Devil,1/1,red)*15 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-16,Loyalty)}:name(-16: Create 16 devils) token(Devil,Creature Devil,1/1,red)*16 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-17,Loyalty)}:name(-17: Create 17 devils) token(Devil,Creature Devil,1/1,red)*17 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-18,Loyalty)}:name(-18: Create 18 devils) token(Devil,Creature Devil,1/1,red)*18 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-19,Loyalty)}:name(-19: Create 19 devils) token(Devil,Creature Devil,1/1,red)*19 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
auto={C(0/0,-20,Loyalty)}:name(-20: Create 20 devils) token(Devil,Creature Devil,1/1,red)*20 and!( transforms((,newability[@movedto(this|graveyard) from(battlefield):name(Deal 1 damage) target(anytarget)])) forever )!
text=+1: Add {R}{R}. Draft a card from Tibalt, Wicked Tormenter's spellbook, then exile it. Until end of turn, you may cast that card. -- +1: Tibalt, Wicked Tormenter deals 3 damage to target creature or planeswalker unless its controller has Tibalt deal 3 damage to them. If they do, you may discard a card. If you do, draw card. -- X: Create X 1/1 red Devil creature tokens with "When this creature dies, it deals 1 damage to any target."
mana={3}{R}{R}
type=Legendary Planeswalker
@@ -3457,7 +3457,7 @@ subtype=Ugin
[card]
name=Ugin, the Spirit Dragon
auto=counter(0/0,7,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Deals 3 damage to target creature or player) damage:3 target(player,creature,planeswalker)
auto={C(0/0,2,Loyalty)}:name(+2: Deals 3 damage to target creature or player) damage:3 target(anytarget)
auto={C(0/0,-0,Loyalty)}:name(-0: Exile each permanent with mana cost 0) moveto(exile) all(*[white;blue;black;red;green;manacost<=0])
auto={C(0/0,-1,Loyalty)}:name(-1: Exile each permanent with mana cost 1) moveto(exile) all(*[white;blue;black;red;green;manacost<=1])
auto={C(0/0,-2,Loyalty)}:name(-2: Exile each permanent with mana cost 2) moveto(exile) all(*[white;blue;black;red;green;manacost<=2])
@@ -3716,7 +3716,7 @@ name=Wrenn and Six
auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:restriction{type(land|mygraveyard)~morethan~0} name(+1: Return target land from graveyard) moveTo(myHand) target(land|myGraveyard)
auto={C(0/0,1,Loyalty)}:name(+1: Don't return any land) donothing
auto={C(0/0,-1,Loyalty)}:name(-1: Deals 1 damage to any target) damage:1 target(player,creature,planeswalker)
auto={C(0/0,-1,Loyalty)}:name(-1: Deals 1 damage to any target) damage:1 target(anytarget)
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: Instants and Sorceries have Retrace) emblem transforms((,newability[lord(*[instant;sorcery]|myGraveyard) transforms((,newability[{D(land|myhand)}:name(Discard land and gain retrace) canplayfromgraveyard limit:1]))])) forever dontremove
text=+1: Return up to one target land card from your graveyard to your hand. -- -1: Wrenn and Six deals 1 damage to any target. -- -7: You get an emblem with "Instant and sorcery cards in your graveyard have retrace." (You may cast instant and sorcery cards from your graveyard by discarding a land card in addition to paying their other costs.)
mana={R}{G}
@@ -3739,7 +3739,7 @@ subtype=Xenagos
name=Zariel, Archduke of Avernus
auto=counter(0/0,4,Loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Creatures get 1/0 and haste) all(creature|myBattlefield) transforms((,newability[1/0],newability[haste])) ueot
auto={C(0/0,0,Loyalty)}:name(+0: Create devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedTo(this|graveyard) from(battlefield):name(Deal 1 damage) damage:1 target(player^creature^planeswalker)])) forever )!
auto={C(0/0,0,Loyalty)}:name(+0: Create devil) token(Devil,Creature Devil,1/1,red) and!( transforms((,newability[@movedTo(this|graveyard) from(battlefield):name(Deal 1 damage) damage:1 target(anytarget)])) forever )!
auto={C(0/0,-6,Loyalty)}:name(-6: Get emblem on combat phase) emblem transforms((,newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Gain new combat phae) nextphasealter(add^combatphases^controller^after<combatends>)],newability[@combat(attacking) source(creature|myBattlefield) turnlimited:name(Untap all creatures after combat ends) all(creature[attacking]|myBattlefield) transforms((,newability[phaseaction[my combatends once sourceinplay] untap])) ueot])) forever dontremove
text=+1: Creatures you control get +1/+0 and gain haste until end of turn. -- 0: Create a 1/1 red Devil creature token with "When this creature dies, it deals 1 damage to any target." -- -6: You get an emblem with "At the end of the first combat phase on your turn, untap target creature you control. After this phase, there is an additional combat phase."
mana={2}{R}{R}

View File

@@ -361,8 +361,7 @@ class Constants
POISONNINETOXIC = 233,
POISONTENTOXIC = 234,
EQPASINST = 235,
UNSACRIFICABLE = 236,
NB_BASIC_ABILITIES = 237,
NB_BASIC_ABILITIES = 236,
RARITY_S = 'S', //Special Rarity
RARITY_M = 'M', //Mythics

View File

@@ -4404,7 +4404,7 @@ int AASacrificeCard::resolve()
MTGCardInstance * _target = (MTGCardInstance *) target;
if (_target)
{
if(_target->has(Constants::UNSACRIFICABLE)) return 0; // The card cannot be sacrified (e.g. "Hithlain Rope")
if(_target->has(Constants::CANTBESACRIFIED)) return 0; // The card cannot be sacrified (e.g. "Hithlain Rope")
if(_target->mutation && _target->parentCards.size() > 0) return 0; // Mutated down cards cannot be sacrificed or exploited, they will follow the fate of top-card
Player * p = _target->controller();
MTGCardInstance * beforeCard = _target;

View File

@@ -158,7 +158,7 @@ const char* Constants::MTGBasicAbilities[] = {
"cantchangelife",
"combattoughness",
"cantpaylife",
"cantbesacrified",
"cantbesacrified", // The card cannot be sacrified (e.g. "Hithlain Rope").
"skulk",
"menace",
"nosolo",
@@ -266,8 +266,7 @@ const char* Constants::MTGBasicAbilities[] = {
"poisoneighttoxic", // Card has toxic 8
"poisonninetoxic", // Card has toxic 9
"poisontentoxic", // Card has toxic 10
"eqpasinst", // Can equip as instant
"unsacrificable" // The card cannot be sacrified (e.g. "Hithlain Rope").
"eqpasinst" // Can equip as instant
};
map<string,int> Constants::MTGBasicAbilitiesMap;

View File

@@ -142,16 +142,54 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
}
several = s.find("<anyamount>");
if (several != string::npos) maxtargets = TargetChooser::UNLITMITED_TARGETS;
found = s.find("creature,planeswalker,battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("creature^planeswalker^battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("creature,battle,planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("creature^battle^planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("planeswalker,creature,battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("planeswalker^creature^battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("planeswalker,battle,creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("planeswalker^battle^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("battle,planeswalker,creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("battle^planeswalker^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("battle,creature,planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("battle^creature^planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker,battle"); //4 Damageable target (player, creature, planeswalker, battle)
found = s.find("creature,planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker, battle)
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //3 Damageable target (player, creature, planeswalker)
found = s.find("planeswalker,creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker, battle)
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //3 Damageable target (player, creature, planeswalker)
found = s.find("creature^planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker, battle)
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //3 Damageable target (player, creature, planeswalker)
found = s.find("planeswalker^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker, battle)
found = s.find("permanent");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "permanent"); //Any player or permanent (player, creature, planeswalker, artifact, land, enchantment, battle)
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //3 Damageable target (player, creature, planeswalker)
found = s.find("creature,battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,battle"); //3 Damageable target (player, creature, battle)
found = s.find("battle,creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,battle"); //3 Damageable target (player, creature, battle)
found = s.find("creature^battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,battle"); //3 Damageable target (player, creature, battle)
found = s.find("battle^creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,battle"); //3 Damageable target (player, creature, battle)
found = s.find("planeswalker,battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "planeswalker,battle"); //3 Damageable target (player, planeswalker, battle)
found = s.find("battle,planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "planeswalker,battle"); //3 Damageable target (player, planeswalker, battle)
found = s.find("planeswalker^battle");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "planeswalker,battle"); //3 Damageable target (player, planeswalker, battle)
found = s.find("battle^planeswalker");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "planeswalker,battle"); //3 Damageable target (player, planeswalker, battle)
found = s.find("creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature)
found = s.find("planeswalker");
@@ -161,6 +199,46 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
return NEW PlayerTargetChooser(observer, card, maxtargets); //Any player
}
found = s.find("anytarget");
if (found != string::npos)
{
int maxtargets = 1;
bool targetMin = false;
size_t limit = s.find('<');
if (limit != string::npos)
{
size_t end = s.find(">", limit);
string howmany;
if (end != string::npos)
{
howmany = s.substr(limit + 1, end - limit - 1);
size_t uptoamount= howmany.find("upto:");
if(uptoamount != string::npos)
{
howmany = s.substr(uptoamount + 6, end - uptoamount - 6);
}
else
{
targetMin = true; //if upto: is not found, then we need to have a minimum of the amount....
}
if (howmany.find("anyamount") != string::npos)
{
maxtargets = TargetChooser::UNLITMITED_TARGETS;
targetMin = false;
}
else
{
WParsedInt * howmuch = NEW WParsedInt(howmany, NULL, card);
maxtargets = howmuch->getValue();
delete howmuch;
}
s = s.substr(end + 1);
}
}
return NEW DamageableTargetChooser(observer, card, maxtargets, other, targetMin, "creature,planeswalker,battle"); //Any Damageable target (player, creature, planeswalker, battle)
}
found = s.find("mycurses");
if (found != string::npos)
{
@@ -175,6 +253,13 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
return NEW ProliferateChooser(observer, card, maxtargets);
}
found = s.find("propagation");
if (found != string::npos)
{
int maxtargets = 1;
return NEW ProliferateChooser(observer, card, maxtargets);
}
string s1;
found = s.find("|");
if (found != string::npos)
@@ -1630,19 +1715,21 @@ TypeTargetChooser::TypeTargetChooser(GameObserver *observer, const char * _type,
addType(id);
id = MTGAllCards::findType("planeswalker");
addType(id);
} else if(!strcmp(_type,"creature,battle")){
int id = MTGAllCards::findType("creature");
addType(id);
id = MTGAllCards::findType("battle");
addType(id);
} else if(!strcmp(_type,"permanent")){
} else if(!strcmp(_type,"planeswalker,battle")){
int id = MTGAllCards::findType("planeswalker");
addType(id);
id = MTGAllCards::findType("battle");
addType(id);
} else if(!strcmp(_type,"creature,planeswalker,battle")){
int id = MTGAllCards::findType("creature");
addType(id);
id = MTGAllCards::findType("planeswalker");
addType(id);
id = MTGAllCards::findType("land");
addType(id);
id = MTGAllCards::findType("artifact");
addType(id);
id = MTGAllCards::findType("enchantment");
addType(id);
id = MTGAllCards::findType("battle");
addType(id);
} else {