Fixed AFR, STA, STX and J21 sets, fixed "_PROLIFERATE_" macro and fixed primitives with "proliferate" ability, fixed all primitives with "mutate" ability, improved "proliferate" and "duplicatecounters" keywords, added a new target "permanent" to target togheter a player and permanents on battlefield (e.g. cards with "proliferate").

This commit is contained in:
Vittorio Alfieri
2021-09-13 18:56:16 +02:00
parent 04a6a4bfe2
commit 2af470e42b
10 changed files with 80 additions and 36 deletions
+4 -1
View File
@@ -2,8 +2,11 @@
## [master] (https://github.com/WagicProject/wagic/tree/master) ## [master] (https://github.com/WagicProject/wagic/tree/master)
### 13/09/21
- *Committed:* Fixed AFR, STA, STX and J21 sets, fixed "_PROLIFERATE_" macro and fixed primitives with "proliferate" ability, fixed all primitives with "mutate" ability, improved "proliferate" and "duplicatecounters" keywords, added a new target "permanent" to target togheter a player and permanents on battlefield (e.g. cards with "proliferate"). ([Vitty85](https://github.com/Vitty85))
### 12/09/21 ### 12/09/21
- *Committed:* Added/Fixed primitives, updated the "missing_cards_by_sets" folder, added a new option "keepname" to keep the original name after the copy (e.g. Olag, Ludevic's Hubris), implemented a fix to avoid triggering of oneshot abilities when "flip" ability is used to return from a copy, fixed an issue with colors and "transforms" keyword, implemented a fix to avoid crashes when the card paying extracost has also a cost alteration (e.g. combo with "Pirate's Pillage" and "Ruby Medallion"), added a new keyword "totmanaspent" to return the real amount of mana spent to cast a card (e.g. Memory Deluge), added new keywords "pnumofidentitycols" and "onumofidentitycols" to return the total amount of commander identity colors for controller or opponent (e.g. War Room), improved "totcnt" keyword, added new keywords "totalcololorsinplay" and "oppototalcololorsinplay" to return the total amount of colors on controller or opponent battlefield (e.g. Moonveil Regent), added new keywords "pcoven" and "ocoven" to return if a player controls three or more creatures with different powers (e.g. Augur of Autumn). ([Vitty85](https://github.com/Vitty85)) - *Committed:* Added/Fixed primitives, updated the "missing_cards_by_sets" folder, added a new option "keepname" to keep the original name after the copy (e.g. Olag, Ludevic's Hubris), implemented a fix to avoid triggering of oneshot abilities when "flip" ability is used to return from a copy, fixed an issue with colors and "transforms" keyword, implemented a fix to avoid crashes when the card paying extracost has also a cost alteration (e.g. combo with "Pirate's Pillage" and "Ruby Medallion"), added a new keyword "totmanaspent" to return the real amount of mana spent to cast a card (e.g. Memory Deluge), added new keywords "pnumofidentitycols" and "onumofidentitycols" to return the total amount of commander identity colors for controller or opponent (e.g. War Room), improved "totcnt" keyword, added new keywords "totalcololorsinplay" and "oppototalcololorsinplay" to return the total amount of colors on controller or opponent battlefield (e.g. Moonveil Regent), added new keywords "pcoven" and "ocoven" to return if a player controls three or more creatures with different powers (e.g. Augur of Autumn). https://github.com/WagicProject/wagic/commit/04a6a4bfe2a4ae6fd2541723e3a338343320d851 ([Vitty85](https://github.com/Vitty85))
### 07/09/21 ### 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). https://github.com/WagicProject/wagic/commit/9aa15766d455c6b9f5fec1bb003ca35a34cbb5fc ([Vitty85](https://github.com/Vitty85)) - *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). https://github.com/WagicProject/wagic/commit/9aa15766d455c6b9f5fec1bb003ca35a34cbb5fc ([Vitty85](https://github.com/Vitty85))
+1 -1
View File
@@ -1,7 +1,7 @@
[meta] [meta]
author=Wagic Team author=Wagic Team
name=Adventures in the Forgotten Realms name=Adventures in the Forgotten Realms
orderindex=EXP-ZZI.AFR orderindex=EXP-ZZJ.AFR
year=2021-07-23 year=2021-07-23
total=313 total=313
[/meta] [/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta] [meta]
author=Wagic Team author=Wagic Team
name=Jumpstart: Historic Horizons name=Jumpstart: Historic Horizons
orderindex=ONL-E.J21 orderindex=REP-K.J21
year=2021-08-26 year=2021-08-26
total=446 total=446
[/meta] [/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta] [meta]
author=Wagic Team author=Wagic Team
name=Strixhaven Mystical Archive name=Strixhaven Mystical Archive
orderindex=EXP-K.STA orderindex=EXP-J.STA
year=2021-04-23 year=2021-04-23
total=63 total=63
[/meta] [/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta] [meta]
author=Wagic Team author=Wagic Team
name=Strixhaven: School of Mages name=Strixhaven: School of Mages
orderindex=REP-J.STX orderindex=EXP-ZZI.STX
year=2021-04-23 year=2021-04-23
total=340 total=340
[/meta] [/meta]
@@ -94,11 +94,7 @@ $AUTO_DEFINE _CLASH_ Put here a code if compare the casting cost based on Errati
#AUTO_DEFINE _CONSPIRE_ @movedTo(this|myStak):may {T(creature|myBattlefield)}{T(creature|myBattlefield)} castcard(copied noevent) target(*|myStack) #AUTO_DEFINE _CONSPIRE_ @movedTo(this|myStak):may {T(creature|myBattlefield)}{T(creature|myBattlefield)} castcard(copied noevent) target(*|myStack)
# Proliferate # Proliferate
#AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single) #AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(<anyamount>player^permanent) proliferate
# Proliferate, still need to target players since the old code doesn't work (*[artifact;creature;...;players]) just let you target creature and player
#AUTO_DEFINE _OLDPROLIFERATE_ name(Proliferate) notAtarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) propagate
#AUTO_DEFINE _OLDOLDPROLIFERATE_ name(proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) proliferate
# Scavenge # Scavenge
#AUTO_DEFINE _SCAVENGE_($cost) name(Scavenge) autograveyard={$cost}{E}:counter(1/1,$c) target(creature) asSorcery #AUTO_DEFINE _SCAVENGE_($cost) name(Scavenge) autograveyard={$cost}{E}:counter(1/1,$c) target(creature) asSorcery
@@ -1972,8 +1972,7 @@ toughness=2
[card] [card]
name=Animation Module name=Animation Module
auto=@counteradded(1/1) from(*|mybattlefield):name(pay 1 for 1/1 Servo) pay[[{1}]] name(pay 1 for 1/1 Servo) token(Servo,Artifact Creature Servo,1/1) auto=@counteradded(1/1) from(*|mybattlefield):name(pay 1 for 1/1 Servo) pay[[{1}]] name(pay 1 for 1/1 Servo) token(Servo,Artifact Creature Servo,1/1)
auto={3}{T}:name(Add counter to a permanent) name(Add counter to a permanent) target(*[counter{any}]|battlefield) duplicatecounters(single) auto={3}{T}:name(Add a counter) name(Add a counter) target(player,permanent) duplicatecounters(single)
auto={3}{T}:name(Add counter to a player) name(Add counter to a player) target(player) duplicatecounters(single)
text=Whenever one or more +1/+1 counters are placed on a permanent you control, you may pay {1}. If you do, create a 1/1 colorless Servo artifact creature token. -- {3}, {T}: Choose a counter on target permanent or player. Give that permanent or player another counter of that kind. text=Whenever one or more +1/+1 counters are placed on a permanent you control, you may pay {1}. If you do, create a 1/1 colorless Servo artifact creature token. -- {3}, {T}: Choose a counter on target permanent or player. Give that permanent or player another counter of that kind.
mana={1} mana={1}
type=Artifact type=Artifact
@@ -2729,6 +2728,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={5}{U} name(Mutate) other={5}{U} name(Mutate)
auto=transforms((,newability[@mutated(this):name(Tap X creatures) thisforeach(mutations) may target(creature) freeze])) auto=transforms((,newability[@mutated(this):name(Tap X creatures) thisforeach(mutations) may target(creature) freeze]))
@@ -3743,6 +3743,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={5}{G} name(Mutate) other={5}{G} name(Mutate)
aicode=activate transforms((,newability[target(*[zpos=findfirsttypepermanent]|mylibrary) moveto(myexile) and!( moveto(myBattlefield) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )! )!])) oneshot aicode=activate transforms((,newability[target(*[zpos=findfirsttypepermanent]|mylibrary) moveto(myexile) and!( moveto(myBattlefield) and!( all(*[zpos<=findfirsttypepermanent]|mylibrary) moveto(myexile) )! )!])) oneshot
@@ -7200,6 +7201,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{BG}{BG} name(Mutate) other={2}{BG}{BG} name(Mutate)
auto=transforms((,newability[@mutated(this):moveto(myhand) target(*|mygraveyard)])) auto=transforms((,newability[@mutated(this):moveto(myhand) target(*|mygraveyard)]))
@@ -8071,6 +8073,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{UB}{G}{G} name(Mutate) other={2}{UB}{G}{G} name(Mutate)
auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield)
@@ -9561,6 +9564,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{B} name(Mutate) other={3}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):ability$!name(discard) target(*|myhand) reject!$ opponent])) auto=transforms((,newability[@mutated(this):ability$!name(discard) target(*|myhand) reject!$ opponent]))
@@ -10660,6 +10664,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={4}{B} name(Mutate) other={4}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):ability$!sacrifice name(opponent sacrifices creature) notatarget(creature|mybattlefield)!$ opponent])) auto=transforms((,newability[@mutated(this):ability$!sacrifice name(opponent sacrifices creature) notatarget(creature|mybattlefield)!$ opponent]))
@@ -11366,6 +11371,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{R} name(Mutate) other={3}{R} name(Mutate)
auto=transforms((,newability[@mutated(this):may reject notatarget(*|myhand) and!( draw:1 controller )!])) auto=transforms((,newability[@mutated(this):may reject notatarget(*|myhand) and!( draw:1 controller )!]))
@@ -13558,6 +13564,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{W}{W} name(Mutate) other={2}{W}{W} name(Mutate)
auto=transforms((,newability[@mutated(this):token(Cat Cub)*2])) auto=transforms((,newability[@mutated(this):token(Cat Cub)*2]))
@@ -16441,6 +16448,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{B}{B} name(Mutate) other={2}{B}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):target(*[creature;planeswalker]|opponentBattlefield) destroy])) auto=transforms((,newability[@mutated(this):target(*[creature;planeswalker]|opponentBattlefield) destroy]))
@@ -17833,6 +17841,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{U} name(Mutate) other={3}{U} name(Mutate)
auto=transforms((,newability[@mutated(this):draw:1 controller])) auto=transforms((,newability[@mutated(this):draw:1 controller]))
@@ -20446,6 +20455,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{R} name(Mutate) other={3}{R} name(Mutate)
auto=transforms((,newability[@mutated(this):token(Feather Eve)])) auto=transforms((,newability[@mutated(this):token(Feather Eve)]))
@@ -24938,6 +24948,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={1}{G}{G} name(Mutate) other={1}{G}{G} name(Mutate)
auto=transforms((,newability[@mutated(this):target(*[artifact;enchantment]|opponentBattlefield) destroy])) auto=transforms((,newability[@mutated(this):target(*[artifact;enchantment]|opponentBattlefield) destroy]))
@@ -26142,6 +26153,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{G} name(Mutate) other={3}{G} name(Mutate)
auto=transforms((,newability[@mutated(this):counter(1/1) && counter(1/1)])) auto=transforms((,newability[@mutated(this):counter(1/1) && counter(1/1)]))
@@ -31100,6 +31112,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{W} name(Mutate) other={2}{W} name(Mutate)
auto=transforms((,newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot])) auto=transforms((,newability[@mutated(this):name(All creatures X/X ueot) thisforeach(mutations) all(other creature|myBattlefield) 1/1 ueot]))
@@ -31576,6 +31589,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{RG}{U}{U} name(Mutate) other={3}{RG}{U}{U} name(Mutate)
auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(mylibrary) revealuntil(*[-land;-instant;-sorcery]|mylibrary) optionone name(May move non land permanent on battlefield) target(<upto:1>*[-land;-instant;-sorcery]|myreveal) moveto(mybattlefield) optiononeend optiontwo name(Move revealed cards to exile) all(*|myreveal) moveto(myexile) optiontwoend afterrevealed name(Move last exiled non land permanent to hand) moveto(myhand) target(*[fresh;-land;-instant;-sorcery]|myexile) afterrevealedend revealend!$ controller])) auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(mylibrary) revealuntil(*[-land;-instant;-sorcery]|mylibrary) optionone name(May move non land permanent on battlefield) target(<upto:1>*[-land;-instant;-sorcery]|myreveal) moveto(mybattlefield) optiononeend optiontwo name(Move revealed cards to exile) all(*|myreveal) moveto(myexile) optiontwoend afterrevealed name(Move last exiled non land permanent to hand) moveto(myhand) target(*[fresh;-land;-instant;-sorcery]|myexile) afterrevealedend revealend!$ controller]))
@@ -32684,6 +32698,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{B} name(Mutate) other={2}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):name(Life and damage) thisforeach(mutations) life:1 controller && life:-1 opponent])) auto=transforms((,newability[@mutated(this):name(Life and damage) thisforeach(mutations) life:1 controller && life:-1 opponent]))
@@ -38303,6 +38318,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={UR}{UR} name(Mutate) other={UR}{UR} name(Mutate)
auto=transforms((,newability[@mutated(this):moveto(myhand) target(*[instant;sorcery]|mygraveyard)])) auto=transforms((,newability[@mutated(this):moveto(myhand) target(*[instant;sorcery]|mygraveyard)]))
@@ -39149,6 +39165,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
auto=transforms((,newability[@mutated(this):life:4 controller])) auto=transforms((,newability[@mutated(this):life:4 controller]))
auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield) auto=if paid(alternative) then name(Mutate Over) this(mutations<1) name(Mutate Over) choice name(Mutate Over) mutateover target(other creature[-human]|mybattlefield)
@@ -40791,6 +40808,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{G} name(Mutate) other={2}{G} name(Mutate)
auto=transforms((,newability[@mutated(this):name(Search basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!])) auto=transforms((,newability[@mutated(this):name(Search basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!]))
@@ -40947,6 +40965,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={4}{B} name(Mutate) other={4}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(opponentlibrary) optionone name(Exile opponent top card?) target(<upto:1>*|myreveal) moveto(opponentexile) optiononeend optiontwo name(Play exiled card) target(<1>*|myreveal) activate castcard(normal) optiontwoend revealend!$ controller])) auto=transforms((,newability[@mutated(this):ability$!name(Reveal) reveal:1 revealzone(opponentlibrary) optionone name(Exile opponent top card?) target(<upto:1>*|myreveal) moveto(opponentexile) optiononeend optiontwo name(Play exiled card) target(<1>*|myreveal) activate castcard(normal) optiontwoend revealend!$ controller]))
@@ -42781,6 +42800,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{WB}{WB} name(Mutate) other={2}{WB}{WB} name(Mutate)
auto=transforms((,newability[@mutated(this):target(creature[manacost<=3]|mygraveyard) moveTo(myBattlefield)])) auto=transforms((,newability[@mutated(this):target(creature[manacost<=3]|mygraveyard) moveTo(myBattlefield)]))
@@ -43088,6 +43108,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={4}{GW}{B}{B} name(Mutate) other={4}{GW}{B}{B} name(Mutate)
auto=transforms((,newability[@mutated(this):target(<anyamount>creature[manacost<=10]|mygraveyard) moveTo(myBattlefield)])) auto=transforms((,newability[@mutated(this):target(<anyamount>creature[manacost<=10]|mygraveyard) moveTo(myBattlefield)]))
@@ -45570,6 +45591,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={1}{B}{G}{U} name(Mutate) other={1}{B}{G}{U} name(Mutate)
auto=transforms((,newability[@combatdamaged(player) from(this):moveto(myhand) target(creature[mutate]|mygraveyard)])) auto=transforms((,newability[@combatdamaged(player) from(this):moveto(myhand) target(creature[mutate]|mygraveyard)]))
@@ -46142,6 +46164,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={G}{U} name(Mutate) other={G}{U} name(Mutate)
auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue,green)])) forever all(this) auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue,green)])) forever all(this)
@@ -47383,7 +47406,7 @@ toughness=3
[/card] [/card]
[card] [card]
name=Planewide Celebration name=Planewide Celebration
auto=thisforeach(variable{4}) ability$!name(Choose one) choice name(Create citizen) token(Citizen,Creature Citizen,2/2,white,blue,black,red,green) _ choice name(Return permanent) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single) _choice name(Gain life) life:4 controller!$ controller auto=thisforeach(variable{4}) ability$!name(Choose one) choice name(Create citizen) token(Citizen,Creature Citizen,2/2,white,blue,black,red,green) _ choice name(Return permanent) target(*[-instant;-sorcery]|mygraveyard) moveto(ownerhand) _ choice name(Proliferate) notatarget(<anyamount>player,permanent) proliferate _choice name(Gain life) life:4 controller!$ controller
text=Choose four. You may choose the same mode more than once. -- • Create a 2/2 Citizen creature token that's all colors. -- • Return target permanent card from your graveyard to your hand. -- • Proliferate. -- • You gain 4 life. text=Choose four. You may choose the same mode more than once. -- • Create a 2/2 Citizen creature token that's all colors. -- • Return target permanent card from your graveyard to your hand. -- • Proliferate. -- • You gain 4 life.
mana={5}{G}{G} mana={5}{G}{G}
type=Sorcery type=Sorcery
@@ -47569,8 +47592,8 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Pollenbright Druid name=Pollenbright Druid
auto=choice counter(1/1) target(creature) auto=choice name(Put 1/1 counter) counter(1/1) target(creature)
auto=choice name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single) auto=choice name(Proliferate) notatarget(<anyamount>player,permanent) proliferate
text=When Pollenbright Druid enters the battlefield, choose one — -- • Put a +1/+1 counter on target creature. -- • Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) text=When Pollenbright Druid enters the battlefield, choose one — -- • Put a +1/+1 counter on target creature. -- • Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.)
mana={1}{G} mana={1}{G}
type=Creature type=Creature
@@ -47723,6 +47746,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{R} name(Mutate) other={2}{R} name(Mutate)
auto=transforms((,newability[name(damage target) {T}:name(damage target) thisforeach(mutations) damage:1 target(*)])) auto=transforms((,newability[name(damage target) {T}:name(damage target) thisforeach(mutations) damage:1 target(*)]))
@@ -47843,6 +47867,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{U} name(Mutate) other={3}{U} name(Mutate)
auto=transforms((,newability[@mutated(this):may target(creature|opponentbattlefield) moveTo(opponenthand)])) auto=transforms((,newability[@mutated(this):may target(creature|opponentbattlefield) moveTo(opponenthand)]))
@@ -51077,6 +51102,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={1}{RW}{RW} name(Mutate) other={1}{RW}{RW} name(Mutate)
auto=transforms((,newability[@mutated(this):all(other creature|myBattlefield) 2/1 ueot])) auto=transforms((,newability[@mutated(this):all(other creature|myBattlefield) 2/1 ueot]))
@@ -51753,9 +51779,9 @@ type=Instant
[/card] [/card]
[card] [card]
name=Return to Nature name=Return to Nature
auto=destroy target(artifact) auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) destroy target(artifact)
auto=destroy target(enchantment) auto=if type(artifact|enchantment)~morethan~0 then choice name(Destroy enchantment) name(Destroy enchantment) destroy target(enchantment)
auto=moveto(exile) target(*|graveyard) auto=if type(*|graveyard)~morethan~0 then choice name(Exile a card) name(Exile a card) moveto(exile) target(*|graveyard)
text=Choose one — -- • Destroy target artifact. -- • Destroy target enchantment. -- • Exile target card from a graveyard. text=Choose one — -- • Destroy target artifact. -- • Destroy target enchantment. -- • Exile target card from a graveyard.
mana={1}{G} mana={1}{G}
type=Instant type=Instant
@@ -52842,7 +52868,7 @@ type=Sorcery
name=Roalesk, Apex Hybrid name=Roalesk, Apex Hybrid
abilities=flying,trample abilities=flying,trample
auto=counter(1/1,2) target(other creature|myBattlefield) auto=counter(1/1,2) target(other creature|myBattlefield)
auto=_DIES_name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot auto=_DIES_name(Proliferate) notatarget(<anyamount>player,permanent) proliferate && proliferate
text=Flying, trample -- When Roalesk, Apex Hybrid enters the battlefield, put two +1/+1 counters on another target creature you control. -- When Roalesk dies, proliferate, then proliferate again. (Choose any number of permanents and/or players, then give each another counter of each kind already there. Then do it again.) text=Flying, trample -- When Roalesk, Apex Hybrid enters the battlefield, put two +1/+1 counters on another target creature you control. -- When Roalesk dies, proliferate, then proliferate again. (Choose any number of permanents and/or players, then give each another counter of each kind already there. Then do it again.)
mana={2}{G}{G}{U} mana={2}{G}{G}{U}
type=Legendary Creature type=Legendary Creature
@@ -54960,6 +54986,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{G} name(Mutate) other={3}{G} name(Mutate)
auto=transforms((,newability[@mutated(this):name(Destroy and create token) ability$!name(Choose one) choice name(Controller) target(*[-creature]|myBattlefield) destroy && token(Beast Saw) controller _ choice name(opponent) target(*[-creature]|opponentBattlefield) destroy && token(Beast Saw) opponent!$ controller])) auto=transforms((,newability[@mutated(this):name(Destroy and create token) ability$!name(Choose one) choice name(Controller) target(*[-creature]|myBattlefield) destroy && token(Beast Saw) controller _ choice name(opponent) target(*[-creature]|opponentBattlefield) destroy && token(Beast Saw) opponent!$ controller]))
@@ -55651,6 +55678,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={1}{U} name(Mutate) other={1}{U} name(Mutate)
auto=transforms((,newability[@combatdamaged(player) from(this):draw:1 controller])) auto=transforms((,newability[@combatdamaged(player) from(this):draw:1 controller]))
@@ -59421,6 +59449,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{BR}{W}{W} name(Mutate) other={2}{BR}{W}{W} name(Mutate)
auto=transforms((,newability[@mutated(this):life:4 controller],newability[@mutated(this):damage:4 target(*[creature;planeswalker]|opponentBattlefield)])) auto=transforms((,newability[@mutated(this):life:4 controller],newability[@mutated(this):damage:4 target(*[creature;planeswalker]|opponentBattlefield)]))
@@ -60295,6 +60324,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={5}{U} name(Mutate) other={5}{U} name(Mutate)
auto=transforms((,newability[@mutated(this):target(artifact[-creature]|opponentbattlefield) moveTo(myBattlefield)])) auto=transforms((,newability[@mutated(this):target(artifact[-creature]|opponentbattlefield) moveTo(myBattlefield)]))
@@ -68460,6 +68490,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={3}{GU}{GU} name(Mutate) other={3}{GU}{GU} name(Mutate)
auto=transforms((,newability[@mutated(this):token(Beast Tru)])) auto=transforms((,newability[@mutated(this):token(Beast Tru)]))
@@ -69064,9 +69095,9 @@ type=Instant
name=Unbounded Potential name=Unbounded Potential
other={3}{W} name(Entwine) other={3}{W} name(Entwine)
auto=ifnot paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) target(<upto:2>creature|battlefield) counter(1/1) auto=ifnot paid(alternative) then if type(creature|battlefield)~morethan~0 then choice name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) target(<upto:2>creature|battlefield) counter(1/1)
auto=ifnot paid(alternative) then choice name(Proliferate) name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single) auto=ifnot paid(alternative) then choice name(Proliferate) _PROLIFERATE_
auto=if paid(alternative) then if type(creature|battlefield)~morethan~0 then name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) target(<upto:2>creature|battlefield) counter(1/1) auto=if paid(alternative) then if type(creature|battlefield)~morethan~0 then name(Put 1/1 counter) name(Put 1/1 counter) name(Put 1/1 counter) target(<upto:2>creature|battlefield) counter(1/1)
auto=if paid(alternative) then ability$!name(Proliferate) name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single)!$ controller auto=if paid(alternative) then ability$!name(Proliferate) _PROLIFERATE_
text=Choose one — -- • Put a +1/+1 counter on each of up to two target creatures. -- • Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) -- Entwine {3}{W} (Choose both if you pay the entwine cost.) text=Choose one — -- • Put a +1/+1 counter on each of up to two target creatures. -- • Proliferate. (Choose any number of permanents and/or players, then give each another counter of each kind already there.) -- Entwine {3}{W} (Choose both if you pay the entwine cost.)
mana={1}{W} mana={1}{W}
type=Instant type=Instant
@@ -69804,6 +69835,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={1}{WU}{R}{R} name(Mutate) other={1}{WU}{R}{R} name(Mutate)
auto=transforms((,newability[@mutated(this):may castcard(normal) target(*[-creature;manacost<=3]|mygraveyard)])) auto=transforms((,newability[@mutated(this):may castcard(normal) target(*[-creature;manacost<=3]|mygraveyard)]))
@@ -71860,6 +71892,7 @@ auto=@movedTo(mytgt|hand) from(battlefield):all(this) moveTo(myHand)
auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile) auto=@movedTo(mytgt|exile) from(battlefield):all(this) moveTo(myExile)
auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary) auto=@movedTo(mytgt|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard) auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip auto={9999}:equip
other={2}{W} name(Mutate) other={2}{W} name(Mutate)
auto=transforms((,newability[@mutated(this):counter(1/1)])) auto=transforms((,newability[@mutated(this):counter(1/1)]))
@@ -72155,9 +72188,10 @@ auto=counter(0/0,1,Lore)
auto=@each my firstmain:counter(0/0,1,Lore) auto=@each my firstmain:counter(0/0,1,Lore)
auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ controller auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ controller
auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ opponent auto=ability$!name(Choose one) choice name(Don't put anything) donothing _ choice name(Put from hand) target(*[zombie;planeswalker]|myhand) moveTo(myBattlefield) _ choice name(Put from graveyard) target(*[zombie;planeswalker]|myGraveyard) moveTo(myBattlefield)!$ opponent
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) target(<anyamount>*[creature;planeswalker]|myBattlefield) transforms((,newability[sacrifice],newability[ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|myBattlefield) sacrifice!$ opponent])) oneshot auto=@counteradded(0/0,1,Lore) from(this) restriction{compare(hascntlore)~equalto~2}:may name(Sacrifice creatures and planeswalkers) target(<anyamount>*[creature;planeswalker]|myBattlefield) transforms((,newability[sacrifice],newability[ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) notatarget(*[creature;planeswalker]|myBattlefield) sacrifice!$ opponent])) oneshot
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) target(*[Bolas]|battlefield) moveTo(exile) and!( transforms((,newability[notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot])) oneshot auto=@counteradded(0/0,1,Lore) from(this) restriction{compare(hascntlore)~equalto~3}:may name(Exile a bolas) target(*[Bolas]|battlefield) moveTo(exile)
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this) auto=@counteradded(0/0,1,Lore) from(this) restriction{compare(hascntlore)~equalto~3}:name(Proliferate 3 times) notatarget(<anyamount>player,permanent) proliferate && proliferate && proliferate
auto=@counteradded(0/0,1,Lore) from(this) restriction{compare(hascntlore)~equalto~3}:name(Sacrifice) sacrifice
text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I — Each player may put a planeswalker or Zombie card from War of the Spark from their hand or graveyard onto the battlefield. -- II — Sacrifice any number of creatures and/or planeswalkers. Each opponent sacrifices that many creatures and/or planeswalkers. -- III — Exile up to one target Bolas. Proliferate three times. text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I — Each player may put a planeswalker or Zombie card from War of the Spark from their hand or graveyard onto the battlefield. -- II — Sacrifice any number of creatures and/or planeswalkers. Each opponent sacrifices that many creatures and/or planeswalkers. -- III — Exile up to one target Bolas. Proliferate three times.
mana={3}{B} mana={3}{B}
type=Enchantment type=Enchantment
+1 -1
View File
@@ -22160,7 +22160,7 @@ type=Artifact
[card] [card]
name=Contagion Engine name=Contagion Engine
auto=target(player) ability$!name(target player) counter(-1/-1,1) all(creature|mybattlefield)!$ targetedplayer auto=target(player) ability$!name(target player) counter(-1/-1,1) all(creature|mybattlefield)!$ targetedplayer
auto={4}{T}:name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) transforms((,newability[duplicatecounters(single)],newability[duplicatecounters(single)])) oneshot auto={4}{T}:name(Proliferate) notatarget(<anyamount>player,permanent) proliferate && proliferate
text=When Contagion Engine enters the battlefield, put a -1/-1 counter on each creature target player controls. -- {4},{T}: Proliferate, then proliferate again. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there. Then do it again.) text=When Contagion Engine enters the battlefield, put a -1/-1 counter on each creature target player controls. -- {4},{T}: Proliferate, then proliferate again. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there. Then do it again.)
mana={6} mana={6}
type=Artifact type=Artifact
+7 -7
View File
@@ -2866,7 +2866,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->energyCount) if(pTarget && pTarget->energyCount)
{ {
MTGAbility * a = NULL; MTGAbility * a = NULL;
if(single) if(single)
@@ -2876,7 +2876,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->experienceCount) if(pTarget && pTarget->experienceCount)
{ {
MTGAbility * a = NULL; MTGAbility * a = NULL;
if(single) if(single)
@@ -2886,7 +2886,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if (cTarget && cTarget->counters) if (cTarget && cTarget->counters)
{ {
Counters * counters = cTarget->counters; Counters * counters = cTarget->counters;
for(size_t i = 0; i < counters->counters.size(); ++i) for(size_t i = 0; i < counters->counters.size(); ++i)
@@ -2954,25 +2954,25 @@ int AAProliferate::resolve()
Player * pTarget = dynamic_cast<Player *>(target); Player * pTarget = dynamic_cast<Player *>(target);
MTGCardInstance * cTarget = dynamic_cast<MTGCardInstance *>(target); MTGCardInstance * cTarget = dynamic_cast<MTGCardInstance *>(target);
if(pTarget && pTarget->poisonCount && pTarget != source->controller()) if(pTarget && pTarget->poisonCount)
{ {
MTGAbility * a = NEW AAAlterPoison(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL); MTGAbility * a = NEW AAAlterPoison(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->energyCount && pTarget == source->controller()) if(pTarget && pTarget->energyCount)
{ {
MTGAbility * a = NEW AAAlterEnergy(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL); MTGAbility * a = NEW AAAlterEnergy(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if(pTarget && pTarget->experienceCount && pTarget == source->controller()) if(pTarget && pTarget->experienceCount)
{ {
MTGAbility * a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL); MTGAbility * a = NEW AAAlterExperience(game, game->mLayers->actionLayer()->getMaxId(), source, target, 1, NULL);
a->oneShot = true; a->oneShot = true;
pcounters.push_back(a); pcounters.push_back(a);
} }
else if (cTarget && cTarget->counters) if (cTarget && cTarget->counters)
{ {
Counters * counters = cTarget->counters; Counters * counters = cTarget->counters;
for(size_t i = 0; i < counters->counters.size(); ++i) for(size_t i = 0; i < counters->counters.size(); ++i)
+15 -4
View File
@@ -148,6 +148,8 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker) if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("planeswalker^creature"); 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) if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "creature,planeswalker"); //Any Damageable target (player, creature, planeswalker)
found = s.find("permanent");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other, false, "permanent"); //Any player or permanet (player, creature, planeswalker, artifact, land, enchantment)
found = s.find("creature"); found = s.find("creature");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature) if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature)
found = s.find("planeswalker"); found = s.find("planeswalker");
@@ -1466,16 +1468,25 @@ bool CardTargetChooser::equals(TargetChooser * tc)
TypeTargetChooser::TypeTargetChooser(GameObserver *observer, const char * _type, MTGCardInstance * card, int _maxtargets, bool other,bool targetMin) : TypeTargetChooser::TypeTargetChooser(GameObserver *observer, const char * _type, MTGCardInstance * card, int _maxtargets, bool other,bool targetMin) :
TargetZoneChooser(observer, card, _maxtargets, other,targetMin) TargetZoneChooser(observer, card, _maxtargets, other,targetMin)
{ {
nbtypes = 0;
if(!strcmp(_type,"creature,planeswalker")){ if(!strcmp(_type,"creature,planeswalker")){
int id = MTGAllCards::findType("creature"); int id = MTGAllCards::findType("creature");
nbtypes = 0;
addType(id); addType(id);
id = MTGAllCards::findType("planeswalker"); id = MTGAllCards::findType("planeswalker");
addType(id); addType(id);
} } else if(!strcmp(_type,"permanent")){
else { 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);
} else {
int id = MTGAllCards::findType(_type); int id = MTGAllCards::findType(_type);
nbtypes = 0;
addType(id); addType(id);
} }
int default_zones[] = { MTGGameZone::MY_BATTLEFIELD, MTGGameZone::OPPONENT_BATTLEFIELD }; int default_zones[] = { MTGGameZone::MY_BATTLEFIELD, MTGGameZone::OPPONENT_BATTLEFIELD };