Bug reports 0.23.1

Do not post feature requests here, please.
Before posting bugs report check the Image Bug reporting help & guidelines
Forum rules
Do not post Features/Improvments request here (i.e : AI being stupid is not a bug, not being able to do a mulligan is not a bug, etc..etc..)
Before posting, please read the Bugs reporting guideline
Vitty85
Posts: 432
Joined: Mon Jul 29, 2019 5:58 pm

Re: Bug reports 0.23.1

Post by Vitty85 »

ph34rbot wrote: Mon Nov 15, 2021 2:08 am Oona, Queen of the Fae when its activated ability is used by the AI (can't close revealed cards)
Athreos, Shroud-Veiled CRASHES
Filtering by mana producing ability crashes the game

uynt effects end at your turn
playershroud is not the same as granting a player hexproof

Game didn't allow me to use Krav, the Unredeemed and Regna, the Redeemer as commanders, inside a game I only had Regna and like 75 cards.

The second ability represented by the “partner with [name]” keyword modifies the rules for deck construction in the Commander variant and has no function outside of that variant. If a legendary creature card with “partner with [name]” is designated as your commander, the named legendary creature card can also be designated as your commander. For more information on the Commander variant, please visit Wizards.com/Commander.

DECK EDITOR

Sort decks by creation date
Way to exclude colors or match color pair, I only want to see boros cards for example, currently that's not possible
In deck editor the number of cards owned obfuscate mana symbols
Hi,

I will try to reply point by point:

1) Oona, Queen of the Fae when its activated ability is used by the AI (can't close revealed cards)

Yes, i prefer to change the implementation strategy as follow:

Code: Select all

[card]
name=Oona, Queen of the Fae
abilities=flying
auto={1}{UB}:name(X=1) activatechooseacolor all(*[zpos<=1]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={2}{UB}:name(X=2) activatechooseacolor all(*[zpos<=2]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={3}{UB}:name(X=3) activatechooseacolor all(*[zpos<=3]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={4}{UB}:name(X=4) activatechooseacolor all(*[zpos<=4]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={5}{UB}:name(X=5) activatechooseacolor all(*[zpos<=5]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={6}{UB}:name(X=6) activatechooseacolor all(*[zpos<=6]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={7}{UB}:name(X=7) activatechooseacolor all(*[zpos<=7]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={8}{UB}:name(X=8) activatechooseacolor all(*[zpos<=8]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={9}{UB}:name(X=9) activatechooseacolor all(*[zpos<=9]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={10}{UB}:name(X=10) activatechooseacolor all(*[zpos<=10]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={11}{UB}:name(X=11) activatechooseacolor all(*[zpos<=11]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={12}{UB}:name(X=12) activatechooseacolor all(*[zpos<=12]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={13}{UB}:name(X=13) activatechooseacolor all(*[zpos<=13]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={14}{UB}:name(X=14) activatechooseacolor all(*[zpos<=14]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={15}{UB}:name(X=15) activatechooseacolor all(*[zpos<=15]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={16}{UB}:name(X=16) activatechooseacolor all(*[zpos<=16]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={17}{UB}:name(X=17) activatechooseacolor all(*[zpos<=7]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={18}{UB}:name(X=18) activatechooseacolor all(*[zpos<=18]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={19}{UB}:name(X=19) activatechooseacolor all(*[zpos<=19]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
auto={20}{UB}:name(X=20) activatechooseacolor all(*[zpos<=20]|opponentLibrary) moveto(exile) and!( if cantargetcard(*[chosencolor]|*) then token(Faerie Rogue,Creature Faerie Rogue,1/1,flying,blue,black) )! activatechooseend
text=Flying -- {X}{UB}: Choose a color. Target opponent exiles the top X cards of his or her library. For each card of the chosen color exiled this way, put a 1/1 blue and black Faerie Rogue creature token with flying onto the battlefield.
mana={3}{UB}{UB}{UB}
type=Legendary Creature
subtype=Faerie Wizard
power=5
toughness=5
[/card]
2) Athreos, Shroud-Veiled CRASHES

Yes, i had to correct the trigger syntax:

Code: Select all

[card]
name=Athreos, Shroud-Veiled
abilities=indestructible
auto=this(variable{orzhov}<7) transforms((removetypes,newability[becomes(Legendary Enchantment God)]))
auto=this(variable{orzhov}>6) transforms((Legendary Enchantment Creature))
auto=@each my endofturn:counter(0/0,1,Coin) target(other creature|battlefield)
auto=@movedto(creature[counter{0/0.1.Coin}]|graveyard,exile):name(Return on battlefield) all(trigger[to]) name(Return on battlefield) moveTo(mybattlefield)
text=Indestructible -- As long as your devotion to white and black is less than seven, Athreos isn't a creature. -- At the beginning of your end step, put a coin counter on another target creature. -- Whenever a creature with a coin counter on it dies or is put into exile, return that card to the battlefield under your control.
mana={4}{W}{B}
type=Legendary Enchantment Creature
subtype=God
power=4
toughness=7
[/card]
3) Filtering by mana producing ability crashes the game

I fixed the main issue with this filter, it was a ManaCost parser bug on some complex primitives, i also improved the filter to avoid the fake matches as much as possible (The analyzer of card text is now working row by row and not on full text in one shot).

4) uynt effects end at your turn

Actually that's not true for all cards, mainly permanents are ok (e.g. Azorius Arrester, Xenic Poltergeist). I generally saw that the problem occurs when the transformation is triggered by instant/sorcery or by card that left the battlefield (e.g. died) before the next turn, i'm fixing that. If you find other cases, can you please provide card examples to check?

5) playershroud is not the same as granting a player hexproof

Yes, i had to update several cards to use the correct "controllershroud" keyword which is the correct one.

Code: Select all

[card]
name=Teyo, the Shieldmage
abilities=controllershroud
auto=counter(0/0,5,loyalty)
auto={C(0/0,-2,Loyalty)}:name(-2: Create a 0/3 Wall with defender) create(Wall:Creature Wall:0/3:white:defender)
text=You have hexproof. (You can't be the target of spells or abilities your opponents control.) -- -2: Create a 0/3 white Wall creature token with defender.
mana={2}{W}
type=Legendary Planeswalker
subtype=Teyo
[/card]

[card]
name=Aegis of the Gods
abilities=controllershroud
text=You have hexproof. (You can't be the target of spells or abilities your opponents control.)
mana={1}{W}
type=Enchantment Creature
subtype=Human Soldier
power=2
toughness=1
[/card]

[card]
name=Witchbane Orb
abilities=controllershroud
auto=destroy all(mycurses)
text=When Witchbane Orb enters the battlefield, destroy all Curses attached to you. -- You have hexproof.
mana={4}
type=Artifact
[/card]

[card]
name=Gilded Light
abilities=cycling
auto=all(*|myBattlefield) transforms((,newability[playershroud])) ueot
autohand=__CYCLING__({2})
text=You gain shroud until end of turn. (You can't be the target of spells or abilities.) -- Cycling {2} ({2}, Discard this card: Draw a card.)
mana={1}{W}
type=Instant
[/card]

[card]
name=Gruul Spellbreaker
abilities=trample
auto=choice counter(1/1)
auto=choice aslongas(creature|myBattlefield) haste
auto=this(variable{controllerturn}) opponentshroud
auto=this(variable{controllerturn}) controllershroud
text=Riot (This creature enters the battlefield with your choice of a +1/+1 counter or haste.) -- Trample -- As long as it's your turn, you and Gruul Spellbreaker have hexproof.
mana={1}{R}{G}
type=Creature
subtype=Ogre Warrior
power=3
toughness=3
[/card]

[card]
name=Guardian Archon
abilities=flying
auto=this(cantargetcard(*[-effectactivated]) {0}:name(Gain protection) all(this) becomes(effectactivated) forever && target(*|mybattlefield) transforms((,newability[opponentshroud],newability[controllershroud])) ueot
text=Flying -- As Guardian Archon enters the battlefield, secretly choose an opponent. -- Reveal the player you chose: You and target permanent you control each gain protection from the chosen player until end of turn. Activate only once.
mana={4}{W}{W}
type=Creature
subtype=Archon
power=5
toughness=5
[/card]

[card]
name=Keen-Eared Sentry
abilities=controllershroud
auto=@counteradded(0/0,1,Explore) from(*[dungeon]|opponentcommandzone):transforms((,newability[nodngopp])) ueot
text=You have hexproof. (You can't be the target of spells or abilities your opponents control.) -- Your opponents can't venture into the dungeon more than once each turn.
mana={1}{W}
type=Creature
subtype=Human Soldier
power=2
toughness=1
[/card]

[card]
name=Lazotep Plating
auto=_AMASS_(1)
auto=all(*|myBattlefield) transforms((,newability[opponentshroud],newability[controllershroud])) ueot
text=Amass 1. (Put a +1/+1 counter on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.) -- You and permanents you control gain hexproof until end of turn. (You and they can't be the targets of spells or abilities your opponents control.)
mana={1}{U}
type=Instant
[/card]

[card]
name=Orbs of Warding
abilities=controllershroud
auto=@damageof(player) from(creature|battlefield):name(Prevent 1 damage) life:1 controller
text=You have hexproof. (You can't be the target of spells or abilities your opponents control.) -- If a creature would deal damage to you, prevent 1 of that damage.
mana={5}
type=Artifact
[/card]
6) Game didn't allow me to use Krav, the Unredeemed and Regna, the Redeemer as commanders

Yes, i had to improve the "partner" ability to "Krav, the Unredeemed" nd "Regna, the Redeemer" to allow the double commander to them (and all other similar cards):

Code: Select all

[card]
name=Krav, the Unredeemed
abilities=partner
partner=Regna, the Redeemer
auto=_PARTNER_
auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target yourself) name(Sacrifice 1 creature and target yourself) all(this) counter(1/1,1) && life:1 controller && draw:1 controller
auto={B}{S(creature|myBattlefield)}:name(Sacrifice 1 creature and target opponent) name(Sacrifice 1 creature and target opponent) all(this) counter(1/1,1) && life:1 opponent && draw:1 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 2 creatures and target yourself) name(Sacrifice 2 creatures and target yourself) all(this) counter(1/1,2) && life:2 controller && draw:2 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 2 creatures and target opponent) name(Sacrifice 2 creatures and target opponent) all(this) counter(1/1,2) && life:2 opponent && draw:2 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 3 creatures and target yourself) name(Sacrifice 3 creatures and target yourself) all(this) counter(1/1,3) && life:3 controller && draw:3 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 3 creatures and target opponent) name(Sacrifice 3 creatures and target opponent) all(this) counter(1/1,3) && life:3 opponent && draw:3 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 4 creatures and target yourself) name(Sacrifice 4 creatures and target yourself) all(this) counter(1/1,4) && life:4 controller && draw:4 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 4 creatures and target opponent) name(Sacrifice 4 creatures and target opponent) all(this) counter(1/1,4) && life:4 opponent && draw:4 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 5 creatures and target yourself) name(Sacrifice 5 creatures and target yourself) all(this) counter(1/1,5) && life:5 controller && draw:5 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 5 creatures and target opponent) name(Sacrifice 5 creatures and target opponent) all(this) counter(1/1,5) && life:5 opponent && draw:5 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 6 creatures and target yourself) name(Sacrifice 6 creatures and target yourself) all(this) counter(1/1,6) && life:6 controller && draw:6 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 6 creatures and target opponent) name(Sacrifice 6 creatures and target opponent) all(this) counter(1/1,6) && life:6 opponent && draw:6 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 7 creatures and target yourself) name(Sacrifice 7 creatures and target yourself) all(this) counter(1/1,7) && life:7 controller && draw:7 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 7 creatures and target opponent) name(Sacrifice 7 creatures and target opponent) all(this) counter(1/1,7) && life:7 opponent && draw:7 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 8 creatures and target yourself) name(Sacrifice 8 creatures and target yourself) all(this) counter(1/1,8) && life:8 controller && draw:8 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 8 creatures and target opponent) name(Sacrifice 8 creatures and target opponent) all(this) counter(1/1,8) && life:8 opponent && draw:8 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 9 creatures and target yourself) name(Sacrifice 9 creatures and target yourself) all(this) counter(1/1,9) && life:9 controller && draw:9 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 9 creatures and target opponent) name(Sacrifice 9 creatures and target opponent) all(this) counter(1/1,9) && life:9 opponent && draw:9 opponent
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 10 creatures and target yourself) name(Sacrifice 10 creatures and target yourself) all(this) counter(1/1,10) && life:10 controller && draw:10 controller
auto={B}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:name(Sacrifice 10 creatures and target opponent) name(Sacrifice 10 creatures and target opponent) all(this) counter(1/1,10) && life:10 opponent && draw:10 opponent
text=Partner with Regna, the Redeemer (When this creature enters the battlefield, target player may put Regna into their hand from their library, then shuffle.) -- {B}, Sacrifice X creatures: Target player draws X cards and gains X life. Put X +1/+1 counters on Krav, the Unredeemed.
mana={4}{B}
type=Legendary Creature
subtype=Demon Krav
power=3
toughness=3
[/card]

[card]
name=Regna, the Redeemer
abilities=flying,partner
partner=Krav, the Unredeemed
auto=_PARTNER_
auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white:)*2
text=Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.) -- Flying -- At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens.
mana={5}{W}
type=Legendary Creature
subtype=Angel
power=4
toughness=4
[/card]
7) DECK EDITOR:

7a) I will add a new game setting to sort decks list by date or name (by date means starting from deckXX.txt to deck1.txt that should be moreover the order form the last deck created to the first one).

7b) The logic of filters is a bit tricky, so the only solution i found is to add negative color filters so you can obtain a filter for just "White & Red" cards by excluding all the other colors (Not Colorless & Not Blue & Not Black & Not Green), there will be also an “Only Multicolored” filter to just display cards with 2 or more colors.

7c) Do you mean the "x1", "x2", etc. or the total collection number? I will try to move the "X1", "X2", etc. a bit more down and the total collection/deck number a bit more up to gain a bit more free space for mana symbols. In any case, if you wait a bit, all the writings disappear and the mana symbols are clearly visible.

I hope the fixes i proposed are fine, i already added them to the new release, you can download it from usual links.

Let me know if it's all ok, see you.
sandman423
Posts: 806
Joined: Thu Sep 10, 2009 8:59 pm

Re: Bug reports 0.23.1

Post by sandman423 »

Oko, Thief of Crowns. I targetted my Food token with the +1 to make it 3/3 and it doesn't become a 3/3. I am updated to the latest version for pc

Code: Select all

[card]
name=Oko, Thief of Crowns
auto=counter(0/0,4,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Food) token(Food)
auto={C(0/0,1,Loyalty)}:name(+1: Transform Artifact) target(artifact) loseabilities && transforms((,setpower=3,settoughness=3)) && transforms((Elk,green))
auto={C(0/0,-5,Loyalty)}:name(-5: Exchange) moveto(mybattlefield) target(creature[power<=3]|opponentbattlefield) && moveto(opponentbattlefield) target(*[creature;artifact]|mybattlefield)
text=+2: Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- +1: Target artifact or creature loses all abilities and becomes a green Elk creature with base power and toughness 3/3. -- -5: Exchange control of target artifact or creature you control and target creature an opponent controls with power 3 or less.
mana={1}{G}{U}
type=Legendary Planeswalker
subtype=Oko
[/card]
Vitty85
Posts: 432
Joined: Mon Jul 29, 2019 5:58 pm

Re: Bug reports 0.23.1

Post by Vitty85 »

sandman423 wrote: Thu Nov 25, 2021 12:08 am Oko, Thief of Crowns. I targetted my Food token with the +1 to make it 3/3 and it doesn't become a 3/3. I am updated to the latest version for pc

Code: Select all

[card]
name=Oko, Thief of Crowns
auto=counter(0/0,4,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Food) token(Food)
auto={C(0/0,1,Loyalty)}:name(+1: Transform Artifact) target(artifact) loseabilities && transforms((,setpower=3,settoughness=3)) && transforms((Elk,green))
auto={C(0/0,-5,Loyalty)}:name(-5: Exchange) moveto(mybattlefield) target(creature[power<=3]|opponentbattlefield) && moveto(opponentbattlefield) target(*[creature;artifact]|mybattlefield)
text=+2: Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- +1: Target artifact or creature loses all abilities and becomes a green Elk creature with base power and toughness 3/3. -- -5: Exchange control of target artifact or creature you control and target creature an opponent controls with power 3 or less.
mana={1}{G}{U}
type=Legendary Planeswalker
subtype=Oko
[/card]
Hi,

You are right, there was a bug, this version is ok:

Code: Select all

[card]
name=Oko, Thief of Crowns
auto=counter(0/0,4,loyalty)
auto={C(0/0,2,Loyalty)}:name(+2: Create food) token(Food)
auto={C(0/0,1,Loyalty)}:name(+1: Transform artifact or creature) target(*[creature;artifact]|battlefield) transforms((Creature Elk,newcolors[green],setpower=3,settoughness=3,newability[loseabilities])) forever
auto={C(0/0,-5,Loyalty)}:name(-5: Exchange control) target(*[creature;artifact]|mybattlefield) moveto(opponentbattlefield) and!( target(other creature[power<=3]|opponentbattlefield) moveto(mybattlefield) )!
text=+2: Create a Food token. (It's an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.") -- +1: Target artifact or creature loses all abilities and becomes a green Elk creature with base power and toughness 3/3. -- -5: Exchange control of target artifact or creature you control and target creature an opponent controls with power 3 or less.
mana={1}{G}{U}
type=Legendary Planeswalker
subtype=Oko
[/card]
I already added this fix in the latest release, so you can download it from usual links and test.

Let me know if it's all ok, see you soon.
User avatar
ph34rbot
Posts: 280
Joined: Thu Jan 07, 2010 6:33 am

Re: Bug reports 0.23.1

Post by ph34rbot »

Greetings to all working on this great game,

colored artifact should count as monocolor(try search for an exclusive red artifact and you get no results), artifact is like it's own color, this is a design of the engine, may be hard to change?
ill-gotten gains and other cards that must exile themselves (used to work)
jandors ring crashes the game if the player tries to click anything, this is a hardcoded card with alias=1117
Sigil of Valor crashes the game when trying to equip a different creature beyond the first
defense grid makes everything cost 6 more
random at commander could select a 60 card deck for the AI
stone hewer doesn't have random
I casted Tovolar, Dire Overlord and the AI used negate to counter day (?)
Akim, the Soaring Wind and Divine Visitation create an infinite loop with tokens entering
Vitty85
Posts: 432
Joined: Mon Jul 29, 2019 5:58 pm

Re: Bug reports 0.23.1

Post by Vitty85 »

ph34rbot wrote: Wed Dec 01, 2021 1:28 am Greetings to all working on this great game,

colored artifact should count as monocolor(try search for an exclusive red artifact and you get no results), artifact is like it's own color, this is a design of the engine, may be hard to change?
ill-gotten gains and other cards that must exile themselves (used to work)
jandors ring crashes the game if the player tries to click anything, this is a hardcoded card with alias=1117
Sigil of Valor crashes the game when trying to equip a different creature beyond the first
defense grid makes everything cost 6 more
random at commander could select a 60 card deck for the AI
stone hewer doesn't have random
I casted Tovolar, Dire Overlord and the AI used negate to counter day (?)
Akim, the Soaring Wind and Divine Visitation create an infinite loop with tokens entering
Hi,

I guess i solved all the issues in the new release (you can already download it from usual links).

I have just a doubt:

Jandor's Ring does not crash to me, it's working fine, so i think your crash could be related to another card interacting with it, i need more details to investigate this issue, i'm sorry.

Let me know if it's all ok, see you soon.
User avatar
ph34rbot
Posts: 280
Joined: Thu Jan 07, 2010 6:33 am

Re: Bug reports 0.23.1

Post by ph34rbot »

Vitty85 wrote: Thu Dec 02, 2021 4:10 pm Hi,

I guess i solved all the issues in the new release (you can already download it from usual links).

I have just a doubt:

Jandor's Ring does not crash to me, it's working fine, so i think your crash could be related to another card interacting with it, i need more details to investigate this issue, i'm sorry.

Let me know if it's all ok, see you soon.
Doing more testing, I noticed it crashes the game if you haven't draw a card this turn (using it duing your oppoent's turn), also it requires tapping to be activated and currently you can use it's ability when the artifact is already tapped,

Thanks Vitty, good day.
Vitty85
Posts: 432
Joined: Mon Jul 29, 2019 5:58 pm

Re: Bug reports 0.23.1

Post by Vitty85 »

ph34rbot wrote: Thu Dec 02, 2021 7:44 pm
Vitty85 wrote: Thu Dec 02, 2021 4:10 pm Hi,

I guess i solved all the issues in the new release (you can already download it from usual links).

I have just a doubt:

Jandor's Ring does not crash to me, it's working fine, so i think your crash could be related to another card interacting with it, i need more details to investigate this issue, i'm sorry.

Let me know if it's all ok, see you soon.
Doing more testing, I noticed it crashes the game if you haven't draw a card this turn (using it duing your oppoent's turn), also it requires tapping to be activated and currently you can use it's ability when the artifact is already tapped,

Thanks Vitty, good day.
Hi,

I solved the tapping problem, now it's not possible to use ability when card is already tapped.

I still cannot find any crash even using it on opponent turn, but in any case, to don't take any risk, i avoided the ability to work when there are no fresh cards in your hand in the current turn, so it should be safer now.

I just released the new Wagic version, you can already download from usual links and test it again.

See you.
User avatar
ph34rbot
Posts: 280
Joined: Thu Jan 07, 2010 6:33 am

Re: Bug reports 0.23.1

Post by ph34rbot »

time spiral remastered numbers(gathererID) are off
Commander Collection: Green (CC1) numbers(gathererID) are off


puresteel paladin the AI keeps equiping (tricky one)
escape to the wilds and similar cards that let you play until end of your NEXT turn
Gatecreeper Vine lets you search any land
ilysian caryatid
trapjaw tyrant on death
skinshifter not transforming
Nahiri's Lithoforming
winds of abandon land search
Rebbec, Architect of Ascension protection every condition is always true
Blinding beam entwine doesn't work
Toils of night and day can't do both options
Rain of Thorns, Rise to Glory (Choice both options cards seem buggy, crush contraband works)
Boompile does nothing
Blizzard Strix doesn't blink another permanent
Fiend Artisan sacrifices itself
Kunoros, Hound of Athreos doesn't allow anyone to cast spells form hand maxCast(*|graveyard) doesn't seem to be supported
Lurrus of the Dream-Den doesn't really has the correct effect
If Warlock Class is at level 2, the level 2 triggers again when I level up Ranger Class or when I play another Ranger Class
Docent of Perfection not changing image to the flip side
Wandering Fumarole dies if you try to swap its pow / tou
Farideh's Fireball and Contact Other Plane (both non permanents) didn't shown the roll a dice message, also the message on other roll a dice is way too fast
Hammer of Nazahn didn't got equipped when I played a new equipment
Diabolic Servitude leaves play and the creature it revived remains on the field
Stir the Sands makes two tokens when cycled
Marauding Raptor any creature triggers its effect
Ring of Immortals can counter spell casted on opponent's permanents
Gaea's Blessing doesn't have a correct effect, it can even shuffle itself
Silent Arbiter works for the player but not for the AI
Ral, Izzet Viceroy -3
Sage-Eye Avengers return ability seems to choose the lowest power among creature
Muldrotha, does not have a correct effect
Dwindle must destroy the creature after it blocks
Burning Sun's Avatar, permanent cards with two different types of targets (player and creature) are buggy
hostage taker can't cast card
Windreaver; try to swap p/t, then pump toughness, Windreaver gets more attack instead
dream eater doesn't return a card to hand
sundering titan does nothing
ray of command, creature gets tapped at end of opponent turn
Chandra, Torch of Defiance, you still have to pay the cost of the card you cast from her first ability also her emblem doesn't work (it used to work)
nightmare's thirst not working
Siona, Captain of the Pyleas bottom should be at random
Varragoth, Bloodsky Sire search ability isn't working
apex devastator just gets 2 cascades instead of 4
pillar of flame exiles itself when it targets a player
solemnity allows counters
Hour of Promise

-------------------

Ardenn, Intrepid Archaeologist attach not working
Jace, Cunning Castaway +1
will kenrith
Archon of Valor's Reach type selection
Abu Ja'far
nine lives can't get counters since it prevents the damage
Cataclysmic Gearhulk
Ghalta, Primal Hunger reduction not working
Sisters of Stone Death not working
life//death
sword of D&D
mad dog dies on turn casted
bloodmist infiltrator can be blocked
Varchild's Crusader can be blocked
synapse sliver opponent draws
psychic impetus scry
tidewalker dies instantly
Eternity Vessel kills player controlling it on activation
basri, devoted paladin -1 ability
test of faith always gives 3 counters, no damage prevention is necessary
Benthic Explorers can't produce mana
caller of the hunt dies even after choosing human if it's the only creature
pale moon, nonbasics can't produce mana
goblin barrage does both even without kicker
mijae djinn seems like it never can attack
escaped shapeshifter gains protection and there's no creature with protection
conversion prevents mountains from producing mana
lavabelly sliver
skullwinder
if combat celebrant leaves the field after attacking you don't get an extra attack step
gideon blackblade granting abilities
Voyage's End when casted by AI hangs the game
The Triumph of Anax dos nothing

-------------------

naga oracle can select any number of cards in GY
Tibalt, the Fiend-Blooded +1 is draw then discard at random
rebuff the wicked, in general cards that counter spells that target something are just counter any spell

-------------------

Kamahl's Druidic Vow just sends all land cards to GY
playing ashaya, soul of the wild counts as land drop
Approach of the Second Sun
Gyrus, Waker of Corpses no creature exiled while attacking
dormant sliver
Karador, Ghost Chieftain can't cast creature from GY
out of time vanishes creatures on subsequent turns
ensnaring bridge persist after going to GY
Nicol Bolas, the Ravager discards when flipped into Nicol Bolas, the Arisen
stalking leonin keeps activating the same effect over and over when controlled by the AI
rousing of souls missing each player draws a card
Omen didn't draw
Elvish Rejuvenator looks at too many cards, should just be 5
garruk's harbinger
sandstone oracle does nothing
harsh scrutiny can't be casted if opponent has no creatures in hand, you should be able to
Yasharn, Implacable Earth can search any land
Kaza, Roil Chaser cost reduction not working
otherworldly journey used to give counter
Vitty85
Posts: 432
Joined: Mon Jul 29, 2019 5:58 pm

Re: Bug reports 0.23.1

Post by Vitty85 »

ph34rbot wrote: Thu Dec 09, 2021 2:22 am
Hi,

You post a very long list this time so it will take time to check and fix all... I will keep track of resolutions here till the next release:

About ids of TSR and CC1 i guess there is no problem to leave the situation as it is, i already completed those sets and updated the images, so to change the ids will require a useless effort since nothing changes for the final user in my opinion.

About "puresteel paladin the AI keeps equiping (tricky one)":

Code: Select all

[card]
name=Puresteel Paladin
auto=@movedTo(equipment|mybattlefield):may name(Draw a card) draw:1 controller
auto=this(variable{ishuman}>0) lord(equipment|mybattlefield) transforms((,newability[{0}:name(Equip Zero) rehook target(creature|mybattlefield) assorcery restriction{type(artifact|mybattlefield)~morethan~2}]))
auto=this(variable{ishuman}=0) lord(equipment|mybattlefield) transforms((,newability[{0}:name(Equip Zero) rehook target(creature|mybattlefield) assorcery limit:1 restriction{type(artifact|mybattlefield)~morethan~2}]))
text=Whenever an Equipment enters the battlefield under your control, you may draw a card. -- Metalcraft - As long as you control 3 or more artifacts, each Equipment you control has equip {0}.
mana={W}{W}
type=Creature
subtype=Human Knight
power=2
toughness=2
[/card]
About "Gatecreeper Vine lets you search any land":

Code: Select all

[card]
name=Gatecreeper Vine
abilities=defender
auto=choice name(Don't search anything) donothing
auto=if type(land[basic]|mylibrary)~morethan~0 then choice name(Search basic land) name(Search basic land) target(land[basic]|mylibrary) moveto(myhand) and!( shuffle )!
auto=if type(gate|mylibrary)~morethan~0 then choice name(Search gate) name(Search gate) target(gate|mylibrary) moveto(myhand) and!( shuffle )!
text=Defender -- When Gatecreeper Vine enters the battlefield, you may search your library for a basic land card or a Gate card, reveal it, put it into your hand, then shuffle your library.
mana={1}{G}
type=Creature
subtype=Plant
power=0
toughness=2
[/card]
About "ilysian caryatid":

Code: Select all

[card]
name=Ilysian Caryatid
auto={T}:if type(creature[power>=4]|myBattlefield)~morethan~0 then name(Add green mana) name(Add green mana) add{G}{G} else add{G}
auto={T}:if type(creature[power>=4]|myBattlefield)~morethan~0 then name(Add white mana) name(Add white mana) add{W}{W} else add{W}
auto={T}:if type(creature[power>=4]|myBattlefield)~morethan~0 then name(Add blue mana) name(Add blue mana) add{U}{U} else add{U}
auto={T}:if type(creature[power>=4]|myBattlefield)~morethan~0 then name(Add black mana) name(Add black mana) add{B}{B} else add{B}
auto={T}:if type(creature[power>=4]|myBattlefield)~morethan~0 then name(Add red mana) name(Add red mana) add{R}{R} else add{R}
text={T}: Add one mana of any color. If you control a creature with power 4 or greater, add two mana of any one color instead.
mana={1}{G}
type=Creature
subtype=Plant
power=1
toughness=1
[/card]
About "trapjaw tyrant on death":

Code: Select all

[card]
name=Trapjaw Tyrant
auto=_ENRAGE_if type(this|myBattlefield)~morethan~0 then name(Exile a creature) name(Exile a creature) (blink)forsrc target(creature|opponentbattlefield)
text=Enrage - Whenever Trapjaw Tyrant is dealt damage, exile target creature an opponent controls until Trapjaw Tyrant leaves the battlefield.
mana={3}{W}{W}
type=Creature
subtype=Dinosaur
power=5
toughness=5
[/card]
About "skinshifter not transforming":

Code: Select all

[card]
name=Skinshifter
auto={G}:name(Choose transformation) transforms((,newability[choice name(Becomes Rhino) becomes(Rhino Creature^4/4^green^trample) ueot],newability[choice name(Becomes Bird) becomes(Bird Creature^2/2^green^flying) ueot],newability[choice name(Becomes Plant) becomes(Plant Creature^0/8^green) ueot])) ueot limit:1
text={G}: Choose one  Until end of turn, Skinshifter becomes a 4/4 Rhino and gains trample; or until end of turn, Skinshifter becomes a 2/2 Bird and gains flying; or until end of turn, Skinshifter becomes a 0/8 Plant. Activate this ability only once each turn.
mana={1}{G}
type=Creature
subtype=Human Shaman
power=1
toughness=1
[/card]
About "Nahiri's Lithoforming":

Code: Select all

[card]
name=Nahiri's Lithoforming
target=<prex>land|myBattlefield
auto=emblem transforms((,newability[_LANDFALL_all(trigger[to]) tap(noevent)])) ueot
auto=sacrifice and!( draw:1 controller )!
auto=maxPlay(land)+1 ueot
text=Sacrifice X lands. For each land sacrificed this way, draw a card. You may play X additional lands this turn. Lands you control enter the battlefield tapped this turn.
mana={X}{R}{R}
type=Sorcery
[/card]
About "winds of abandon land search":

Code: Select all

[card]
name=Winds of Abandon
restriction=type(creature|oppponentbattlefield)~morethan~0
other={4}{W}{W} name(Overload)
auto=if paid(alternative) then name(Exile all creatures) name(Exile all creatures) all(creature|opponentbattlefield) moveto(exile) and!( transforms((,newability[name(choose basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!])) oneshot )!
auto=ifnot paid(alternative) then name(Exile a creature) name(Exile a creature) target(creature|opponentbattlefield) moveto(exile) and!( transforms((,newability[name(choose basic land) target(land[basic]|mylibrary) moveto(myBattlefield) and!( tap(noevent) )!])) oneshot )!
text=Exile target creature you don't control. For each creature exiled this way, its controller searches their library for a basic land card. Those players put those cards onto the battlefield tapped, then shuffle their libraries. -- Overload {4}{W}{W} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.")
mana={1}{W}
type=Sorcery
[/card]
About "Rebbec, Architect of Ascension protection every condition is always true":

Code: Select all

[card]
name=Rebbec, Architect of Ascension
abilities=partner
auto=aslongas(artifact[manacost=0]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=0])]))
auto=aslongas(artifact[manacost=1]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=1])]))
auto=aslongas(artifact[manacost=2]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=2])]))
auto=aslongas(artifact[manacost=3]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=3])]))
auto=aslongas(artifact[manacost=4]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=4])]))
auto=aslongas(artifact[manacost=5]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=5])]))
auto=aslongas(artifact[manacost=6]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=6])]))
auto=aslongas(artifact[manacost=7]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=7])]))
auto=aslongas(artifact[manacost=8]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=8])]))
auto=aslongas(artifact[manacost=9]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=9])]))
auto=aslongas(artifact[manacost=10]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=10])]))
auto=aslongas(artifact[manacost=11]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=11])]))
auto=aslongas(artifact[manacost=12]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=12])]))
auto=aslongas(artifact[manacost=13]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=13])]))
auto=aslongas(artifact[manacost=14]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=14])]))
auto=aslongas(artifact[manacost=15]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=15])]))
auto=aslongas(artifact[manacost=16]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=16])]))
auto=aslongas(artifact[manacost=17]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=17])]))
auto=aslongas(artifact[manacost=18]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=18])]))
auto=aslongas(artifact[manacost=19]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost=19])]))
auto=aslongas(artifact[manacost>=20]|myBattlefield) lord(artifact|mybattlefield) transforms((,newability[protection from(*[manacost>=20])]))
text=Artifacts you control have protection from each converted mana cost among artifacts you control. -- Partner (You can have two commanders if both have partner.)
mana={3}{W}
type=Legendary Creature
subtype=Human Artificer
power=3
toughness=4
[/card]
About "Blinding beam entwine doesn't work":

Code: Select all

[card]
name=Blinding Beam
other={3}{W} name(Entwine)
auto=ifnot paid(alternative) then choice name(Tap 2 creatures) name(Tap 2 creatures) target(<2>creature|battlefield) tap(noevent)
auto=ifnot paid(alternative) then choice name(Opponent creatures don't untap) name(Opponent creatures don't untap) all(creature|opponentbattlefield) frozen
auto=ifnot paid(alternative) then choice name(Your creatures don't untap) name(Your creatures don't untap) all(creature|myBattlefield) frozen
auto=if paid(alternative) then name(Tap 2 creatures) name(Tap 2 creatures) target(<2>creature|battlefield) tap(noevent)
auto=if paid(alternative) then name(Creatures don't untap) name(Creatures don't untap) transforms((,newability[choice name(Opponent creatures does not untap) name(Opponent creatures don't untap) all(creature|opponentbattlefield) frozen],newability[choice name(Your creatures don't untap) all(creature|myBattlefield) frozen])) ueot
text=Choose one - Tap two target creatures. - Creatures don't untap during target player's next untap step -- Entwine 1 (Choose both if you pay the entwine cost.)
mana={2}{W}
type=Instant
[/card]
About "Toils of night and day can't do both options":

Code: Select all

[card]
name=Toils of Night and Day
target=*|battlefield
auto=choice name(Don't tap or untap anything) donothing
auto=choice name(Tap permanent) tap
auto=choice name(Untap permanent) untap
auto=all(this|mystack) transforms((,newability[choice name(Don't target another permanent) donothing],newability[choice name(Tap another permanent) target(other *|battlefield) tap(noevent)],newability[choice name(Untap another permanent) untap target(other *|battlefield)])) oneshot
text=You may tap or untap target permanent, then you may tap or untap another target permanent.
mana={2}{U}
type=Instant
subtype=Arcane
[/card]
About "Rain of Thorns, Rise to Glory (Choice both options cards seem buggy, crush contraband works)":

Code: Select all

[card]
name=Rain of Thorns
restriction=type(*[artifact;land]|battlefield)~morethan~0
auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) destroy target(artifact|battlefield)
auto=if type(land|battlefield)~morethan~0 then choice name(Destroy land) name(Destroy land) destroy target(land|battlefield)
auto=if type(artifact|battlefield)~morethan~0 then if type(land|battlefield)~morethan~0 then choice name(Choose both) name(Choose both) name(Choose both) destroy target(artifact|battlefield) and!( name(Destroy land) destroy target(land|battlefield) )!
text=Choose one or both -- Destroy target artifact. -- Destroy target land.
mana={4}{G}{G}
type=Sorcery
[/card]
[card]
name=Rise to Glory
restriction=type(*[creature;aura]|mygraveyard)~morethan~0
auto=if type(creature|mygraveyard)~morethan~0 then choice name(Return creature) name(Return creature) moveTo(myBattlefield) target(creature|myGraveyard)
auto=if type(enchantment[aura]|mygraveyard)~morethan~0 then choice name(Return aura) name(Return aura) moveTo(myBattlefield) target(enchantment[aura]|myGraveyard)
auto=if type(creature|mygraveyard)~morethan~0 then if type(enchantment[aura]|mygraveyard)~morethan~0 then choice name(Choose both) name(Choose both) name(Choose both) target(creature|myGraveyard) moveTo(myBattlefield) and!( name(Return aura) moveTo(myBattlefield) target(enchantment[aura]|myGraveyard) )!
text=Choose one or both -- Return target creature card from your graveyard to the battlefield. -- Return target Aura card from your graveyard to the battlefield.
mana={3}{W}{B}
type=Sorcery
[/card]
[card]
name=Crush Contraband
restriction=type(*[artifact;enchantment]|battlefield)~morethan~0
auto=if type(artifact|battlefield)~morethan~0 then choice name(Exile artifact) name(Exile artifact) moveto(exile) target(artifact|battlefield)
auto=if type(enchantment|battlefield)~morethan~0 then choice name(Exile enchantment) name(Exile enchantment) moveto(exile) target(enchantment|battlefield)
auto=if type(artifact|battlefield)~morethan~0 then if type(enchantment|battlefield)~morethan~0 then choice name(Choose both) name(Choose both) name(Choose both) target(artifact|battlefield) moveto(exile) and!( name(Exile enchantment) moveto(exile) target(enchantment|battlefield) )!
text=Choose one or both -- Exile target artifact. -- Exile target enchantment.
mana={3}{W}
type=Instant
[/card]
About "Boompile does nothing":

Code: Select all

[card]
name=Boompile
auto={T}:name(Choose head) if compare(genrand2)~equalto~1 then all(*[-land]|battlefield) destroy
auto={T}:name(Choose tail) if compare(genrand2)~equalto~0 then all(*[-land]|battlefield) destroy
text={T}: Flip a coin. If you win the flip, destroy all nonland permanents.
mana={4}
type=Artifact
[/card]
About "Blizzard Strix doesn't blink another permanent":

Code: Select all

[card]
name=Blizzard Strix
abilities=flash,flying
auto=if type(*[snow]|mybattlefield)~morethan~1 then name(Exile a permanent) name(Exile a permanent) target(other *|battlefield) (blink)ueot
text=Flash -- Flying -- When Blizzard Strix enters the battlefield, if you control another snow permanent, exile target permanent other than Blizzard Strix. Return that card to the battlefield under its owner's control at the beginning of the next end step.
mana={4}{U}
type=Snow Creature
subtype=Bird
power=3
toughness=2
[/card]
About "Fiend Artisan sacrifices itself":

Code: Select all

[card]
name=Fiend Artisan
auto=foreach(creature|myGraveyard) 1/1
auto={X}{BG}{T}{S(other creature|myBattlefield)}:name(Search creature) transforms((,newability[name(Search creature) target(creature[manacost<=X]|mylibrary) moveto(myBattlefield) and!( shuffle )!])) oneshot assorcery
text=Fiend Artisan gets +1/+1 for each creature card in your graveyard. -- {X}{BG}, {T}, Sacrifice another creature: Search your library for a creature card with converted mana cost X or less, put it onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery.
mana={BG}{BG}
type=Creature
subtype=Nightmare
power=1
toughness=1
[/card]
About "escape to the wilds and similar cards that let you play until end of your NEXT turn" i will update the code in order to add a new option "uent" for transforms keyword and i will rewrite the cards as follow:

Code: Select all

[card]
name=Escape to the Wilds
auto=all(*[zpos<=5]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto=maxPlay(land)+1
text=Exile the top five cards of your library. You may play cards exiled this way until the end of your next turn. -- You may play an additional land this turn.
mana={3}{R}{G}
type=Sorcery
[/card]
[card]
name=Commune with Lava
auto=all(*[zpos<=castx]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
text=Exile the top X cards of your library. Until the end of your next turn, you may play those cards.
mana={X}{R}{R}
type=Instant
[/card]
[card]
name=Teferi, Timeless Voyager
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Draw a card) draw:1 controller
auto={C(0/0,-3,Loyalty)}:name(-3: Put a creature on top) moveTo(ownerLibrary) target(creature)
auto={C(0/0,-8,Loyalty)}:name(-8: Opponent creatures phase out) emblem transforms((,newability[all(creature|opponentbattlefield) phaseout],newability[@each upkeep:all(creature|opponentbattlefield) phaseout])) uent
text=+1: Draw a card. -- −3: Put target creature on top of its owner's library. -- −8: Each creature target opponent controls phases out. Until the end of your next turn, they can't phase in. (Treat them and anything attached to them as though they don't exist.)
mana={4}{U}{U}
type=Legendary Planeswalker
subtype=Teferi
[/card]
[card]
name=Treasure Nabber
auto=@tappedformana(artifact|opponentBattlefield) restriction{myturnonly}:name(Gain control) all(trigger[to]) name(Gain control) moveTo(myBattlefield) and!( transforms((,newability[phaseaction[my next endofturn once sourceinplay] moveto(ownerBattlefield)])) forever )!
auto=@tappedformana(artifact|opponentBattlefield) restriction{opponentturnonly}:name(Gain control) all(trigger[to]) name(Gain control) moveTo(myBattlefield) and!( transforms((,newability[phaseaction[my endofturn once sourceinplay] moveto(ownerBattlefield)])) forever )!
text=Whenever an opponent taps an artifact for mana, gain control of that artifact until the end of your next turn.
mana={2}{R}
type=Creature
subtype=Goblin Rogue
power=3
toughness=2
[/card]
[card]
name=You Find Some Prisoners
aicode=activate target(*[zpos<=3]|opponentlibrary) moveto(myexile) and!( transforms((,newability[all(*[zpos<=3]|opponentlibrary) moveto(ownerexile)],newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then moveto(ownerexile)])) forever )!
auto=if type(artifact|battlefield)~morethan~0 then choice name(Destroy artifact) name(Destroy artifact) target(artifact) destroy
auto=choice name(Exile top 3 cards) reveal:3 revealzone(opponentlibrary) optionone name(Choose one card) target(*|reveal) moveto(myexile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then moveto(ownerexile)])) forever )! optiononeend optiontwo name(Exile cards) all(*|reveal) moveto(ownerexile) optiontwoend revealend
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) anytypeofmana])) uent
text=Choose one -- Break Their Chains - Destroy target artifact. -- Interrogate Them - Exile the top three cards of target opponent's library. Choose one of them. Until the end of your next turn, you may play that card, and you may spend mana as through it were mana of any color to cast it.
mana={1}{R}
type=Instant
[/card]
[card]
name=Tectonic Giant
aicode=activate target(*[zpos<=2]|mylibrary) moveto(myexile) and!( transforms((,newability[all(*[zpos<=2]|mylibrary) moveto(ownerexile)],newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=@targeted(this) from(*|opponentcastingzone):name(Choose one) ability$!name(Choose one) choice name(Damage opponent) damage:3 opponent _ choice name(Exile 2 cards) all(mysource) counter(0/0.1.ExileEffect) !$ controller
auto=@combat(attacking) source(this):name(Choose one) ability$!name(Choose one) choice name(Damage opponent) damage:3 opponent _ choice name(Exile 2 cards) all(mysource) counter(0/0.1.ExileEffect) !$ controller
auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) reveal:2 optionone name(Choose one card) target(*|reveal) moveto(myexile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )! optiononeend optiontwo name(Exile cards) all(*|reveal) moveto(ownerexile) optiontwoend revealend
auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto=@counteradded(0/0.1.ExileEffect) from(this):name(Exile top 2 cards) removeallcounters(0/0.1.ExileEffect)
text=Whenever Tectonic Giant attacks or becomes the target of a spell an opponent controls, Choose one -- Tectonic Giant deals 3 damage to each opponent. -- Exile the top two cards of your library. Choose one of them. Until the end of your next turn, you may play that card.
mana={2}{R}{R}
type=Creature
subtype=Elemental Giant
power=3
toughness=4
[/card]
[card]
name=Single Combat
auto=emblem transforms((,newability[maxCast(planeswalker)0 controller],newability[maxCast(creature)0 controller],newability[maxCast(planeswalker)0 opponent],newability[maxCast(creature)0 opponent])) uent
auto=ability$!name(Sacrifice creatures) name(Sacrifice creatures) notatarget(<type:*[creature;planeswalker]:mybattlefieldminus1minusend>*[creature;planeswalker]|mybattlefield) sacrifice !$ controller
auto=ability$!name(Sacrifice creatures) name(Sacrifice creatures) notatarget(<type:*[creature;planeswalker]:mybattlefieldminus1minusend>*[creature;planeswalker]|mybattlefield) sacrifice !$ opponent
text=Each player chooses a creature or planeswalker they control, then sacrifices the rest. Players can't cast creature or planeswalker spells until the end of your next turn.
mana={3}{W}{W}
type=Sorcery
[/card]
[card]
name=Showdown of the Skalds
auto=counter(0/0,1,Lore)
auto=@each my firstmain:counter(0/0,1,Lore)
auto=name(Exile top 4 cards) all(*[zpos<=4]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.2.Lore}=) emblem transforms((,newability[@movedTo(*|mystack):name(Put 1/1 counter) counter(1/1) target(creature|mybattlefield)])) ueot
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) emblem transforms((,newability[@movedTo(*|mystack):name(Put 1/1 counter) counter(1/1) target(creature|mybattlefield)])) ueot
auto=@counteradded(0/0,1,Lore) from(this):this(counter{0/0.3.Lore}) sacrifice(this)
text=(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.) -- I - Exile the top four cards of your library. Until the end of your next turn, you may play those cards. -- II, III - Whenever you cast a spell this turn, put a +1/+1 counter on target creature you control.
mana={2}{R}{W}
type=Enchantment
subtype=Saga
[/card]
[card]
name=Rooting Moloch
abilities=cycling
auto=name(Exile card with cycling) target(*[cycling]|myGraveyard) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
autohand=__CYCLING__({2})
text=When Rooting Moloch enters the battlefield, exile target card with a cycling ability from your graveyard. Until the end of your next turn, you may play that card. -- Cycling {2} ({2}, Discard this card: Draw a card.)
mana={4}{R}
type=Creature
subtype=Lizard
power=4
toughness=4
[/card]
[card]
name=Reckless Impulse
auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
text=Exile the top two cards of your library. Until the end of your next turn, you may play those cards.
mana={1}{R}
type=Sorcery
[/card]
[card]
name=Prosper, Tome-Bound
abilities=deathtouch
auto=@each my end:name(Exile top card) all(*[zpos<=1]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=@each my end:emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto=@movedto(*|mystack,mybattlefield) from(myexile):name(Create treasure) token(Treasure Sur)
text=Deathtouch -- Mystic Arcanum - At the beginning of your end step, exile the top card of your library. Until the end of your next turn, you may play that card. -- Pact Boon - Whenever you play a card from exile, create a Treasure token.
mana={2}{B}{R}
type=Legendary Creature
subtype=Tiefling Warlock
power=1
toughness=4
[/card]
[card]
name=Light Up the Stage
auto=name(Exile top 2 cards) all(*[zpos<=2]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
text=Spectacle {R} (You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn.) -- Exile the top two cards of your library. Until the end of your next turn, you may play those cards.
other={R} name(Spectacle)
otherrestriction=compare(oplifelost)~morethan~0
mana={2}{R}
type=Sorcery
[/card]
[card]
name=Ignite the Future
flashback={7}{R}
auto=name(Exile top 3 cards) all(*[zpos<=3]|mylibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!
auto=ifnot gravecast then emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto=if gravecast then emblem transforms((,newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) zerocast])) uent
text=Exile the top three cards of your library. Until the end of your next turn, you may play those cards. If this spell was cast from a graveyard, you may play cards this way without paying their mana costs. -- Flashback {7}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.)
mana={3}{R}
type=Sorcery
[/card]
[card]
name=Hurl Through heck
restriction=type(creature|battlefield)~morethan~0
auto=if compare(controllerturn)~morethan~0 then name(Exile creature) name(Exile creature) target(creature|battlefield) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[my endofturn next once checkex] moveTo(ownerexile)])) forever )!
auto=if compare(controllerturn)~equalto~0 then name(Exile creature) name(Exile creature) target(creature|battlefield) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[my endofturn once checkex] moveTo(ownerexile)])) forever )!
text=Exile target creature. Until the end of your next turn, you may cast that card and you may spend mana as though it were mana of any color to cast that spell.
mana={2}{B}{R}
type=Instant
[/card]
[card]
name=Breya's Apprentice
auto=token(Thopter,Artifact Creature Thopter,1/1,flying)
auto={T}{S(artifact|myBattlefield)}:name(Exile top card) emblem transforms((,newability[all(*[zpos=1]|myLibrary) moveto(exile) and!( transforms((,newability[counter(0/0.1.PlayExile)],newability[@each opponent beginofturn restriction{compare(hascntplayexile)~morethan~0}:if cantargetcard(*[-canplayfromexile]|*) then removeallcounters(0/0.1.PlayExile)])) forever )!],newability[lord(*[counter{0/0.1.PlayExile}]|myexile) canplayfromexile])) uent
auto={T}{S(artifact|myBattlefield)}:name(Creature gets 2/0) target(creature) 2/0 ueot
text=When Breya's Apprentice enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. -- {T}, Sacrifice an artifact: Choose one -- Exile the top card of your library. Until the end of your next turn, you may play that card. -- Target creature gets +2/+0 until end of turn.
mana={2}{R}
type=Artifact Creature
subtype=Human Artificer
power=2
toughness=3
[/card]
About "Kunoros, Hound of Athreos doesn't allow anyone to cast spells form hand maxCast(*|graveyard) doesn't seem to be supported", the best i can do is this at the moment:

Code: Select all

[card]
name=Kunoros, Hound of Athreos
abilities=vigilance,menace,lifelink
auto=@movedto(creature|battlefield) from(graveyard):name(Creatures can't enter from graveyard) all(trigger[to]) name(Creatures can't enter from graveyard) moveto(ownergraveyard)
auto=@movedto(*|stack) from(graveyard):name(Spells can't be casted from graveyard) all(trigger[to]) name(Spells can't be casted from graveyard) spellmover(graveyard)
auto=lord(*[-land]|graveyard) changecost(colorless:+999) forcedalive
auto=lord(*[-land]|graveyard) -canPlayFromGraveyard
text=Vigilance, menace, lifelink -- Creature cards in graveyards can't enter the battlefield. -- Players can't cast spells from graveyards.
mana={1}{W}{B}
type=Legendary Creature
subtype=Dog
power=3
toughness=3
[/card]
About "Lurrus of the Dream-Den doesn't really has the correct effect" the best i can do at the moment is this:

Code: Select all

[card]
name=Lurrus of the Dream-Den
abilities=lifelink
auto={0}:name(Choose a permanent in graveyard) target(*[-instant;-sorcery]|mygraveyard) transforms((,newability[canplayfromgraveyard])) ueot limit:1
text=Companion - Each permanent card in your starting deck has converted mana cost 2 or less. (If this card is your chosen companion, you may cast it once from outside the game.) -- Lifelink -- During each of your turns, you may cast one permanent spell with converted mana cost 2 or less from your graveyard.
mana={1}{WB}{WB}
type=Legendary Creature
subtype=Cat Nightmare
power=3
toughness=2
[/card]
About "If Warlock Class is at level 2, the level 2 triggers again when I level up Ranger Class or when I play another Ranger Class" there were some error on triggers in 3 Classes:

Code: Select all

[card]
name=Warlock Class
auto=counter(0/0,1,Level)
aicode=activate transforms((,newability[target(*[zpos<=3]|mylibrary) moveto(myhand) and!( all(*[zpos<=3]|mylibrary) moveTo(mygraveyard) )!])) oneshot
auto=@each my endofturn restriction{morbid}:name(Opponent looses life) life:-1 opponent
auto=this(variable{hascntlevel}=1) {1}{B}:name(Level 2) counter(0/0,1,Level) asSorcery
auto=@counteradded(0/0.1.Level) from(this) restriction{compare(hascntlevel)~equalto~2}:name(Look top 3) reveal:3 optionone name(Get a Card) target(*|reveal) moveto(myhand) optiononeend optiontwo name(put in grave) all(*|reveal) moveto(mygraveyard) optiontwoend revealend
auto=this(variable{hascntlevel}=2) {6}{B}:name(Level 3) counter(0/0,1,Level) asSorcery
auto=@each my endofturn restriction{compare(hascntlevel)~morethan~2}:name(Opponent looses life) damage:oplifelost opponent
text=(Gain the next level as a sorcery to add its ability.) -- At the beginning of your end step, if a creature died this turn, each opponent loses 1 life. -- {1}{B}: Level 2 -- When this Class becomes level 2, look at the top three cards of your library. Put one of them into your hand and the rest into your graveyard. -- {6}{B}: Level 3 -- At the beginning of your end step, each opponent loses life equal to the life they lost this turn. (Damage causes loss of life.)
mana={B}
type=Enchantment
subtype=Class
[/card]
[card]
name=Druid Class
auto=counter(0/0,1,Level)
auto=_LANDFALL_life:1 controller
auto=this(variable{hascntlevel}=1) {2}{G}:name(Level 2) counter(0/0,1,Level) asSorcery
auto=this(variable{hascntlevel}>=2) maxPlay(land)+1
auto=this(variable{hascntlevel}=2) {4}{G}:name(Level 3) counter(0/0,1,Level) asSorcery
auto=@counteradded(0/0.1.Level) from(this) restriction{compare(hascntlevel)~equalto~3}:name(Land become creature) target(land|mybattlefield) transforms((Creature,newability[haste],newability[type:land:myBattlefield/type:land:myBattlefield cdaactive])) forever 
text=(Gain the next level as a sorcery to add its ability.) -- Whenever a land enters the battlefield under your control, you gain 1 life. -- {2}{G}: Level 2 -- You may play an additional land on each of your turns. -- {4}{G}: Level 3 -- When this Class becomes level 3, target land you control becomes a creature with haste and "This creature's power and toughness are each equal to the number of lands you control." it's still a land.
mana={1}{G}
type=Enchantment
subtype=Class
[/card]
[card]
name=Monk Class
auto=counter(0/0,1,Level)
auto=if thisturn(*|mystack)~equalto~1 then counter(0/0,1,MonkEffect)
auto=@movedto(*|mystack):counter(0/0,1,MonkEffect)
auto=this(variable{hascntmonkeffect}=1) lord(*|mycastingzone) altercost(colorless, -1)
auto=@each endofturn restriction{compare(hascntmonkeffect)~morethan~0}:removeallcounters(0/0,1,MonkEffect)
auto=this(variable{hascntlevel}=1) {W}{U}:name(Level 2) counter(0/0,1,Level) asSorcery
auto=@counteradded(0/0.1.Level) from(this) restriction{compare(hascntlevel)~equalto~2}:may name(Return non-land permanent) target(*[-land]|battlefield) moveto(ownerhand)
auto=this(variable{hascntlevel}=2) {1}{W}{U}:name(Level 3) counter(0/0,1,Level) asSorcery
auto=@each my upkeep restriction{compare(hascntlevel)~morethan~2}:name(Exile top card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[@movedto(*|mystack):canplayfromexile ueot])) forever )!
text=(Gain the next level as a sorcery to add its ability.) -- The second spell you cast each turn costs {1} less to cast. -- {W}{U}: Level 2 -- When this Class becomes level 2, return up to one target nonland permanent to its owner's hand. -- {1}{W}{U}: Level 3 -- At the beginning of your upkeep, exile the top card of your library. For as long as it remains exiled, it has "You may cast this card from exile as long as you've cast another spell this turn."
mana={W}{U}
type=Enchantment
subtype=Class
[/card]
About "Docent of Perfection not changing image to the flip side":

Code: Select all

[card]
name=Docent of Perfection
abilities=flying
backside=Final Iteration
restriction=compare(isflipped)~equalto~0
anyzone={0}:doubleside(backside)
auto=@movedto(*[instant;sorcery]|mystack):name(Create wizard) token(Wizard,Creature Human Wizard,1/1,blue)
auto=aslongas(wizard|myBattlefield) flip(backside) while >2
text=Flying -- Whenever you cast an instant or sorcery spell, put a 1/1 blue Human Wizard creature token onto the battlefield. Then if you control three or more Wizards, transform Docent of Perfection.
mana={3}{U}{U}
type=Creature
subtype=Insect Horror
power=5
toughness=4
[/card]
[card]
name=Final Iteration
abilities=flying
backside=Docent of Perfection
auto=@movedto(*[instant;sorcery]|mystack):name(Create wizard) token(Wizard,Creature Human Wizard,1/1,blue)
auto=lord(wizard|mybattlefield) 2/1
auto=lord(wizard|mybattlefield) flying
text=Flying -- Wizards you control get +2/+1 and have flying. -- Whenever you cast an instant or sorcery spell, put a 1/1 blue Human Wizard creature token onto the battlefield.
type=Creature
subtype=Eldrazi Insect
power=6
toughness=5
[/card]
About "Wandering Fumarole dies if you try to swap its pow / tou": i have to update the engine to improve the swap keyword.

About "Farideh's Fireball and Contact Other Plane (both non permanents) didn't shown the roll a dice message, also the message on other roll a dice is way too fast", i'm sorry but at the moment i can't change the behavior, in any case the cards are working, just a render problem, not a big issue.

About "Hammer of Nazahn didn't got equipped when I played a new equipment":

Code: Select all

[card]
name=Hammer of Nazahn
auto={4}:equip
auto=teach(creature) indestructible
auto=teach(creature) 2/0
auto=may name(Attach to creature) rehook target(creature|myBattlefield)
auto=@movedto(equipment|mybattlefield):name(Attach to creature) all(trigger[to]) name(Attach to creature) transforms((,newability[ifnot cantargetcard(*[attached]|*) then may name(Attach to creature) name(Attach to creature) rehook target(creature|myBattlefield)])) oneshot
text=Whenever Hammer of Nazahn or another Equipment enters the battlefield under your control, you may attach that Equipment to target creature you control. -- Equipped creature gets +2/+0 and has indestructible. -- Equip {4}
mana={4}
type=Legendary Artifact
subtype=Equipment
[/card]
About "Diabolic Servitude leaves play and the creature it revived remains on the field" the best i can do is this:

Code: Select all

[card]
name=Diabolic Servitude
auto={B}{B}{L:2}{S(swamp|mybattlefield)}:name(Return creature) target(creature|mygraveyard) moveTo(myBattlefield) and!( counter(0/0.1.DiabolicReturned) )!
auto=@movedto(creature[counter{0/0.1.DiabolicReturned}]|graveyard) from(mybattlefield):name(Exile returned creature) all(trigger[to]) name(Exile returned creature) transforms(,newability[moveto(exile)])) oneshot
auto=@movedto(creature[counter{0/0.1.DiabolicReturned}]|graveyard) from(mybattlefield):name(Return to hand) all(this) name(Return to hand) moveto(ownerhand)
auto=@movedto(this|nonbattlezone) from(battlefield):name(Exile returned creatures) all(creature[counter{0/0.1.DiabolicReturned}]|myBattlefield) moveto(exile)
text={B}{B}, Pay 2 life, Sacrifice a Swamp: Return target creature card from your graveyard to the battlefield. -- When the creature put onto the battlefield with Diabolic Servitude dies, exile it and return Diabolic Servitude to its owner's hand. -- When Diabolic Servitude leaves the battlefield, exile the creature put onto the battlefield with Diabolic Servitude.
mana={3}{B}
type=Enchantment
[/card]
About "Stir the Sands makes two tokens when cycled":

Code: Select all

[card]
name=Stir the Sands
abilities=cycling
auto=token(Zombie,creature Zombie,2/2,black)*3
autohand=__CYCLING__({3}{B}) && token(Zombie,creature Zombie,2/2,black)
text=Create three 2/2 black Zombie creature tokens. -- Cycling {3}{B} ({3}{B}, Discard this card: Draw a card.) -- When you cycle Stir the Sands, create a 2/2 black Zombie creature token.
mana={4}{B}{B}
type=Sorcery
[/card]
About "Marauding Raptor any creature triggers its effect", best i can do is this:

Code: Select all

[card]
name=Marauding Raptor
auto=lord(creature|mycastingzone) altercost(colorless, -1)
auto=@movedto(other creature|myBattlefield):name(Deals 2 damage) all(trigger[to]) damage:2
auto=@damaged(other creature[dinosaur]|myBattlefield) from(this):name(Gets 2/0) 2/0 ueot
text=Creature spells you cast cost {1} less to cast. -- Whenever another creature enters the battlefield under your control, Marauding Raptor deals 2 damage to it. If a Dinosaur is dealt damage this way, Marauding Raptor gets +2/+0 until end of turn.
mana={1}{R}
type=Creature
subtype=Dinosaur
power=2
toughness=3
[/card]
About "Ring of Immortals can counter spell casted on opponent's permanents", there is no way to limit the fizzle ability at the moment.

About "Gaea's Blessing doesn't have a correct effect, it can even shuffle itself":

Code: Select all

[card]
name=Gaea's Blessing
auto=choice name(Target yourself) target(<upto:3>other *|mygraveyard) moveto(mylibrary) and!( shuffle )!
auto=choice name(Target opponent) ability$!name(Shuffle 3 cards) name(Shuffle 3 cards) target(<upto:3>*|mygraveyard) moveto(mylibrary) and!( shuffle )! !$ opponent
auto=draw:1 controller
autograveyard=@movedTo(this|mygraveyard) from(mylibrary):moveto(mylibrary) and!(shuffle)! all(*|mygraveyard)
text=Target player shuffles up to three target cards from his or her graveyard into his or her library. -- Draw a card. -- When Gaea's Blessing is put into your graveyard from your library, shuffle your graveyard into your library.
mana={1}{G}
type=Sorcery
[/card]
About "Silent Arbiter works for the player but not for the AI" the best i can do is this:

Code: Select all

[card]
name=Silent Arbiter
auto=aslongas(creature[attacking]|battlefield) lord(creature[-attacking]|battlefield) cantattack
auto=aslongas(creature[attacking]|battlefield) lord(creature[-attacking]|battlefield) cantpwattack
auto=aslongas(creature[blocking]|battlefield) lord(creature[-blocking]|battlefield) cantblock
auto=@each my attackers restriction{compare(ishuman)~equalto~0}:name(Only a creature can attack) target(creature|mybattlefield) name(Only a creature can attack) transforms((,newability[all(other creature|mybattlefield) transforms((,newability[cantattack],newability[cantpwattack])) ueot])) oneshot
auto=@each my blockers restriction{compare(ishuman)~equalto~1}:name(Only a creature can block) ability$!name(Only a creature can block) name(Only a creature can block) target(creature|mybattlefield) transforms((,newability[all(other creature|mybattlefield) transforms((,newability[cantblock])) ueot])) oneshot!$ opponent
auto=@each opponent attackers restriction{compare(ishuman)~equalto~1}:name(Only a creature can attack) ability$!name(Only a creature can attack) name(Only a creature can attack) target(creature|mybattlefield) transforms((,newability[all(other creature|mybattlefield) transforms((,newability[cantattack],newability[cantpwattack])) ueot])) oneshot!$ opponent
auto=@each opponent blockers restriction{compare(ishuman)~equalto~0}:name(Only a creature can block) target(creature|mybattlefield) name(Only a creature can block) transforms((,newability[all(other creature|mybattlefield) transforms((,newability[cantblock])) ueot])) oneshot
text=No more than one creature can attack each combat. -- No more than one creature can block each combat.
mana={4}
type=Artifact Creature
subtype=Construct
power=1
toughness=5
[/card]
About "Ral, Izzet Viceroy -3":

Code: Select all

[card]
name=Ral, Izzet Viceroy
auto=counter(0/0,4,loyalty)
aicode=activate transforms((,newability[choice all(*[zpos=2]|mylibrary) moveto(myhand) and!(deplete:1)!],newability[choice all(*[zpos=1]|mylibrary) moveto(myhand) and!(deplete:1)!])) ueot
auto={C(0/0,1,Loyalty)}:name(+1: Look the top two, put one in hand other graveyard) name(look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend
auto={C(0/0,-3,Loyalty)}:name(-3: Deals damage for each instant and sorcery) target(creature) damage:type:*[instant;sorcery]:myexilepluspginstantsorceryplusend
auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever cast spell, deals 4 damage, draw two cards") emblem transforms((,newability[@movedTo(*[instant;sorcery]|myStack):draw:2 controller && damage:4 target(player,creature,planeswalker)])) forever dontremove
text=+1: Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. -- −3: Ral, Izzet Viceroy deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard. -- −8: You get an emblem with “Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards.”
mana={3}{U}{R}
type=Legendary Planeswalker
subtype=Ral
[/card]
About "Sage-Eye Avengers return ability seems to choose the lowest power among creature":

Code: Select all

[card]
name=Sage-Eye Avengers
abilities=prowess
auto=@movedTo(*[-creature]|mystack):name(Gets 1/1) 1/1 ueot
auto=_ATTACKING_may name(Return creature) transforms((,newability[name(Choose creature) target(creature[power<=pminus1minusend]|battlefield) moveTo(ownerhand)])) oneshot
text=Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.) -- Whenever Sage-Eye Avengers attacks, you may return target creature to its owner's hand if its power is less than Sage-Eye Avengers's power.
mana={4}{U}{U}
type=Creature
subtype=Djinn Monk
power=4
toughness=5
[/card]
About "Muldrotha, does not have a correct effect":

Code: Select all

[card]
name=Muldrotha, the Gravetide
auto=this(variable{controllerturn}>0) {0}:name(May play a land from graveyard) name(May play a land from graveyard) target(land|myGraveyard) canplayfromgraveyard ueot limit:1
auto=this(variable{controllerturn}>0) {0}:name(May cast a creature from graveyard) name(May cast a creature from graveyard) target(creature|myGraveyard) canplayfromgraveyard ueot limit:1
auto=this(variable{controllerturn}>0) {0}:name(May cast a planeswalker from graveyard) name(May cast a planeswalker from graveyard) target(planeswalker|myGraveyard) canplayfromgraveyard ueot limit:1
auto=this(variable{controllerturn}>0) {0}:name(May cast an enchantment from graveyard) name(May cast an enchantment from graveyard) target(enchantment|myGraveyard) canplayfromgraveyard ueot limit:1
auto=this(variable{controllerturn}>0) {0}:name(May cast an artifact from graveyard) name(May cast an artifact from graveyard) target(artifact|myGraveyard) canplayfromgraveyard ueot limit:1
text=During each of your turns, you may play a land and cast a permanent spell of each permanent type from your graveyard. (If a card has multiple permanent types, choose one as you play it.)
mana={3}{B}{G}{U}
type=Legendary Creature
subtype=Elemental Avatar
power=6
toughness=6
[/card]
About "Dwindle must destroy the creature after it blocks":

Code: Select all

[card]
name=Dwindle
target=creature
auto=teach(creature) -6/-0
auto=teach(creature) transforms((,newability[@combat(blocking) source(this):phaseaction[combatends once sourceinplay] destroy]))
text=Enchant creature -- Enchanted creature gets -6/-0. -- When enchanted creature blocks, destroy it. (The attacking creature remains blocked.)
mana={2}{U}
type=Enchantment
subtype=Aura
[/card]
About "Burning Sun's Avatar, permanent cards with two different types of targets (player and creature) are buggy":

Code: Select all

[card]
name=Burning Sun's Avatar
auto=choice name(Damage opponent) damage:3 opponent
auto=if type(planeswalker|battlefield)~morethan~0 then choice name(Damage planeswalker) name(Damage planeswalker) damage:3 target(planeswalker|battlefield)
auto=ability$!may name(Damage creature) name(Damage creature) damage:3 target(creature|battlefield)!$ controller
text=When Burning Sun's Avatar enters the battlefield, it deals 3 damage to target opponent or planeswalker and 3 damage to up to one target creature.
mana={3}{R}{R}{R}
type=Creature
subtype=Dinosaur Avatar
power=6
toughness=6
[/card]
About "hostage taker can't cast card", the best i can do is this:

Code: Select all

[card]
name=Hostage Taker
auto=if type(*[creature;artifact]|opponentbattlefield)~morethan~0 then choice name(Exile opponent creature or artifact) name(Exile opponent creature or artifact) target(*[creature;artifact]|opponentbattlefield) imprint
auto=if type(*[creature;artifact]|opponentbattlefield)~morethan~0 then name(Exile your creature or artifact) name(Exile your creature or artifact) target(other *[creature;artifact]|battlefield) imprint and!( transforms((,newability[canplayfromexile],newability[anytypeofmana])) forever )!
auto=this(variable{hasevict}>0) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled card) target(*[evictname]|exile) moveTo(ownerBattlefield)]))
auto=this(variable{hasevict}>0) {0}:name(Cast opponent exiled card) name(Cast opponent exiled card) target(*[evictname]|opponentexile) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[anytypeofmana],newability[counter(0/0.1.HostageExiled)])) ueot )!
auto=@counteradded(0/0.1.HostageExiled) from(creature|myexile):name(Effect ends) transforms((,newability[@movedto(this|nonbattlezone) from(battlefield):name(Put back exiled card) target(*[counter{0/0.1.HostageExiled}]|myexile) moveTo(ownerBattlefield)])) ueot
auto=@each endofturn:if type(*[counter{0/0.1.HostageExiled}]|myexile)~morethan~0 then name(Return card to owner exile) name(Return card to owner exile) target(*[counter{0/0.1.HostageExiled}]|myexile) imprint
text=When Hostage Taker enters the battlefield, exile another target creature or artifact until Hostage Taker leaves the battlefield. You may cast that card for as long as it remains exiled, and you may spend mana as though it were mana of any type to cast that spell.
mana={2}{U}{B}
type=Creature
subtype=Human Pirate
power=2
toughness=3
[/card]
About "dream eater doesn't return a card to hand":

Code: Select all

[card]
name=Dream Eater
abilities=flash,flying
aicode=activate transforms((,newability[surveil],newability[may name(Return non-land permanent) target(*[-land]|opponentBattlefield) moveTo(ownerhand)],newability[all(*[zpos<=psurveiloffsetplus4plusend]|mylibrary) transforms((,newability[if compare(genrand2)~equalto~1 then moveto(mygraveyard)])) oneshot])) oneshot
auto=name(Surveil 4) reveal:psurveiloffsetplus4plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus4plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus4plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed all(this) transforms((,newability[may name(Return non-land permanent) target(*[-land]|opponentBattlefield) moveTo(ownerhand)],newability[surveil])) oneshot afterrevealedend revealend
text=Flash -- Flying -- When Dream Eater enters the battlefield, surveil 4. When you do, you may return target nonland permanent an opponent controls to its owner's hand. (To surveil 4, look at the top four cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.)
mana={4}{U}{U}
type=Creature
subtype=Nightmare Sphinx
power=4
toughness=3
[/card]
About "Windreaver; try to swap p/t, then pump toughness, Windreaver gets more attack instead", the behaviour is correct according to the official MTG rule:

Code: Select all

Effects that switch a creature’s power and toughness apply after all other effects, regardless of when those effects began to apply. For instance, if you target a 1/2 creature then give it +2/+0 later in the turn, it’s a 2/3 creature, not a 4/1 creature.
About "sundering titan does nothing":

Code: Select all

[card]
name=Sundering Titan
auto=ability$!name(Destroy a plains) name(Destroy a plains) target(plains|battlefield) destroy!$ controller
auto=ability$!name(Destroy an island) name(Destroy an island) target(island|battlefield) destroy!$ controller
auto=ability$!name(Destroy a mountain) name(Destroy a mountain) target(mountain|battlefield) destroy!$ controller
auto=ability$!name(Destroy a forest) name(Destroy a forest) target(forest|battlefield) destroy!$ controller
auto=ability$!name(Destroy a swamp) name(Destroy a swamp) target(swamp|battlefield) destroy!$ controller
auto=@movedto(this|nonbattlezone) from(battlefield):ability$!name(Destroy a plains) name(Destroy a plains) target(plains|battlefield) destroy!$ controller
auto=@movedto(this|nonbattlezone) from(battlefield):ability$!name(Destroy an island) name(Destroy an island) target(island|battlefield) destroy!$ controller
auto=@movedto(this|nonbattlezone) from(battlefield):ability$!name(Destroy a mountain) name(Destroy a mountain) target(mountain|battlefield) destroy!$ controller
auto=@movedto(this|nonbattlezone) from(battlefield):ability$!name(Destroy a forest) name(Destroy a forest) target(forest|battlefield) destroy!$ controller
auto=@movedto(this|nonbattlezone) from(battlefield):ability$!name(Destroy a swamp) name(Destroy a swamp) target(swamp|battlefield) destroy!$ controller
text=When Sundering Titan enters the battlefield or leaves the battlefield, choose a land of each basic land type, then destroy those lands.
mana={8}
type=Artifact Creature
subtype=Golem
power=7
toughness=10
[/card]
About "ray of command, creature gets tapped at end of opponent turn":

Code: Select all

[card]
name=Ray of Command
target=creature|opponentBattlefield
auto=moveto(mybattlefield) and!( transforms((,newability[phaseactionmulti[endofturn once sourceinplay] moveTo(previousbattlefield) && tap],newability[untap],newability[haste])) ueot )!
text=Untap target creature an opponent controls and gain control of it until end of turn. That creature gains haste until end of turn. When you lose control of the creature, tap it.
mana={3}{U}
type=Instant
[/card]
About "Chandra, Torch of Defiance, you still have to pay the cost of the card you cast from her first ability also her emblem doesn't work (it used to work)", this is the best i can do:

Code: Select all

[card]
name=Chandra, Torch of Defiance
auto=counter(0/0,4,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Exile Top Card) all(*[zpos=1|mylibrary) moveto(myexile) and!( transforms((,newability[choice name(Deals 2 damage) name(Deals 2 damage) damage:2 opponent],newability[if cantargetcard(*[-land]|*) then choice name(Cast card from exile) name(Cast card from exile) counter(0/0.1.ChandraEffect) notrg])) ueot )!
auto=lord(*[counter{0/0.1.ChandraEffect}]|myexile) canplayfromexile
auto=@each endofturn:if type(*[counter{0/0.1.ChandraEffect}]|myexile)~morethan~0 then name(Effect ends) name(Effect ends) all(*[counter{0/0.1.ChandraEffect}]|myexile) removeallcounters(0/0.1.ChandraEffect)
auto=@each endofturn:if type(*[counter{0/0.1.ChandraEffect}]|myexile)~morethan~0 then name(Deals 2 damage) name(Deals 2 damage) damage:2 opponent
auto={C(0/0,1,Loyalty)}:name(+1: Add two red mana) add{R}{R}
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 4 damage to target creature) damage:4 target(creature)
auto={C(0/0,-7,Loyalty)}:name(-7: Emblem: Deals 5 damage when casting a spell) emblem transforms((,newability[@movedTo(*|mystack):damage:5 target(player^creature^planeswalker)])) forever dontremove
text=+1: Exile the top card of your library. You may cast that card. If you don't, Chandra, Torch of Defiance deals 2 damage to each opponent. -- +1: Add {R}{R} to your mana pool. -- -3: Chandra, Torch of Defiance deals 4 damage to target creature. -- -7: You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to any target."
mana={2}{R}{R}
type=Legendary Planeswalker
subtype=Chandra
[/card]
About "nightmare's thirst not working":

Code: Select all

[card]
name=Nightmare's Thirst
auto=target(creature|battlefield) -lifegain/-lifegain ueot
auto=life:1 controller
text=You gain 1 life. Target creature gets -X/-X until end of turn, where X is the amount of life you gained this turn.
mana={B}
type=Instant
[/card]
About "Siona, Captain of the Pyleas bottom should be at random":

Code: Select all

[card]
name=Siona, Captain of the Pyleas
abilities=hiddenface
aicode=activate transforms((,newability[if type(aura[zpos<=7]|myLibrary)~morethan~0 then target(aura[zpos<=7]|myLibrary) moveTo(myHand) and!( all(other *[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! )! else all(*[zpos<=7]|mylibrary) moveto(myreveal) and!( bottomoflibrary )! ])) oneshot
auto=name(Look at the top seven cards) reveal:7 optionone name(Choose an aura) target(aura|reveal) moveto(myhand) optiononeend optiontwo name(Put on bottom) target(*|reveal) bottomoflibrary and!( all(*|reveal) bottomoflibrary )! optiontwoend revealend
auto=@targeted(creature|myBattlefield) from(aura|myzones):name(Create soldier) token(Soldier,Creature Human Soldier,1/1,white)
text=When Siona, Captain of the Pyleas enters the battlefield, look at the top seven cards of your library. You may reveal an Aura card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. -- Whenever an Aura you control becomes attached to a creature you control, create a 1/1 white Human Soldier creature token.
mana={1}{G}{W}
type=Legendary Creature
subtype=Human Soldier
power=2
toughness=2
[/card]
About "Varragoth, Bloodsky Sire search ability isn't working":

Code: Select all

[card]
name=Varragoth, Bloodsky Sire
abilities=boast,deathtouch
auto={1}{B} restriction{didattack,compare(hascntbstreduce)~equalto~0}:doboast && target(player) ability$!name(Search a card) name(Search a card) target(*|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! !$ targetedPlayer limit:hasabilitytwoboastplus1plusend
auto={B} restriction{didattack,compare(hascntbstreduce)~morethan~0}:doboast && target(player) ability$!name(Search a card) name(Search a card) target(*|mylibrary) moveto(myreveal) and!( moveto(mylibrary) )! !$ targetedPlayer limit:hasabilitytwoboastplus1plusend
text=Deathtouch -- Boast-{1}{B}: Target player searches their library for a card, then shuffles their library and puts that card on top of it. (Activate this ability only if this creature attacked this turn and only once each turn.)
mana={2}{B}
type=Legendary Creature
subtype=Demon Rogue
power=2
toughness=3
[/card]
I will continue to update a new post later, see you.

P.S.
Can you avoid to commit on master till i will complete those resolutions? I would like to avoid merges if it's possible, thanks.
User avatar
ph34rbot
Posts: 280
Joined: Thu Jan 07, 2010 6:33 am

Re: Bug reports 0.23.1

Post by ph34rbot »

Sure, I will avoid commits, thanks.

Also I agree with the modifications of the numbers since it has already a lot of work but in the future maybe we can wait until the set has official gathered ID to add it to wagic?

Good luck and great work.
Locked