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)
### 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
- *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
- *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]
author=Wagic Team
name=Adventures in the Forgotten Realms
orderindex=EXP-ZZI.AFR
orderindex=EXP-ZZJ.AFR
year=2021-07-23
total=313
[/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta]
author=Wagic Team
name=Jumpstart: Historic Horizons
orderindex=ONL-E.J21
orderindex=REP-K.J21
year=2021-08-26
total=446
[/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta]
author=Wagic Team
name=Strixhaven Mystical Archive
orderindex=EXP-K.STA
orderindex=EXP-J.STA
year=2021-04-23
total=63
[/meta]
+1 -1
View File
@@ -1,7 +1,7 @@
[meta]
author=Wagic Team
name=Strixhaven: School of Mages
orderindex=REP-J.STX
orderindex=EXP-ZZI.STX
year=2021-04-23
total=340
[/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)
# Proliferate
#AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single)
# 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
#AUTO_DEFINE _PROLIFERATE_ name(Proliferate) notatarget(<anyamount>player^permanent) proliferate
# Scavenge
#AUTO_DEFINE _SCAVENGE_($cost) name(Scavenge) autograveyard={$cost}{E}:counter(1/1,$c) target(creature) asSorcery
@@ -1972,8 +1972,7 @@ toughness=2
[card]
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={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 counter to a player) name(Add counter to a player) target(player) duplicatecounters(single)
auto={3}{T}:name(Add a counter) name(Add a counter) target(player,permanent) 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.
mana={1}
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={5}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{BG}{BG} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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)
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{B} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={4}{B} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{R} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{W}{W} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{B}{B} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{R} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={1}{G}{G} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{G} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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]))
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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]))
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{B} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={UR}{UR} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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)
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{G} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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]))
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{WB}{WB} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={4}{GW}{B}{B} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={1}{B}{G}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={G}{U} name(Mutate)
auto=ifnot paid(alternative) then transforms((,newability[becomes(,,blue,green)])) forever all(this)
@@ -47383,7 +47406,7 @@ toughness=3
[/card]
[card]
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.
mana={5}{G}{G}
type=Sorcery
@@ -47569,8 +47592,8 @@ type=Sorcery
[/card]
[card]
name=Pollenbright Druid
auto=choice counter(1/1) target(creature)
auto=choice name(Proliferate) notatarget(<anyamount>*[artifact;creature;enchantment;land;planeswalker;player]) duplicatecounters(single)
auto=choice name(Put 1/1 counter) counter(1/1) target(creature)
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.)
mana={1}{G}
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{R} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={1}{RW}{RW} name(Mutate)
auto=transforms((,newability[@mutated(this):all(other creature|myBattlefield) 2/1 ueot]))
@@ -51753,9 +51779,9 @@ type=Instant
[/card]
[card]
name=Return to Nature
auto=destroy target(artifact)
auto=destroy target(enchantment)
auto=moveto(exile) target(*|graveyard)
auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) destroy target(artifact)
auto=if type(artifact|enchantment)~morethan~0 then choice name(Destroy enchantment) name(Destroy enchantment) destroy target(enchantment)
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.
mana={1}{G}
type=Instant
@@ -52842,7 +52868,7 @@ type=Sorcery
name=Roalesk, Apex Hybrid
abilities=flying,trample
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.)
mana={2}{G}{G}{U}
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
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]))
@@ -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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={1}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{BR}{W}{W} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={5}{U} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={3}{GU}{GU} name(Mutate)
auto=transforms((,newability[@mutated(this):token(Beast Tru)]))
@@ -69064,9 +69095,9 @@ type=Instant
name=Unbounded Potential
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 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 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.)
mana={1}{W}
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={1}{WU}{R}{R} name(Mutate)
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|library) from(battlefield):all(this) moveTo(myLibrary)
auto=@movedTo(mytgt|sideboard) from(battlefield):all(this) moveTo(mySideboard)
auto=@movedTo(mytgt|commandzone) from(battlefield):all(this) moveTo(myCommandzone)
auto={9999}:equip
other={2}{W} name(Mutate)
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=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=@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):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):this(counter{0/0.3.Lore}) sacrifice(this)
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) restriction{compare(hascntlore)~equalto~3}:may name(Exile a bolas) target(*[Bolas]|battlefield) moveTo(exile)
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.
mana={3}{B}
type=Enchantment
+1 -1
View File
@@ -22160,7 +22160,7 @@ type=Artifact
[card]
name=Contagion Engine
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.)
mana={6}
type=Artifact
+7 -7
View File
@@ -2866,7 +2866,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->energyCount)
if(pTarget && pTarget->energyCount)
{
MTGAbility * a = NULL;
if(single)
@@ -2876,7 +2876,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if(pTarget && pTarget->experienceCount)
if(pTarget && pTarget->experienceCount)
{
MTGAbility * a = NULL;
if(single)
@@ -2886,7 +2886,7 @@ int AADuplicateCounters::resolve()
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters)
if (cTarget && cTarget->counters)
{
Counters * counters = cTarget->counters;
for(size_t i = 0; i < counters->counters.size(); ++i)
@@ -2954,25 +2954,25 @@ int AAProliferate::resolve()
Player * pTarget = dynamic_cast<Player *>(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);
a->oneShot = true;
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);
a->oneShot = true;
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);
a->oneShot = true;
pcounters.push_back(a);
}
else if (cTarget && cTarget->counters)
if (cTarget && cTarget->counters)
{
Counters * counters = cTarget->counters;
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)
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)
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");
if (found != string::npos) return NEW DamageableTargetChooser(observer, card, maxtargets, other); //2 Damageable target (player, creature)
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) :
TargetZoneChooser(observer, card, _maxtargets, other,targetMin)
{
nbtypes = 0;
if(!strcmp(_type,"creature,planeswalker")){
int id = MTGAllCards::findType("creature");
nbtypes = 0;
addType(id);
id = MTGAllCards::findType("planeswalker");
addType(id);
}
else {
} else if(!strcmp(_type,"permanent")){
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);
nbtypes = 0;
addType(id);
}
int default_zones[] = { MTGGameZone::MY_BATTLEFIELD, MTGGameZone::OPPONENT_BATTLEFIELD };