Zethfox found out that a single sacrifice cost as an addition to a normal manacost can be added to the manacost-line of a card!
Here is a code example from the famous card Natural Order (VIS):
[card]
name=Natural Order
auto=moveTo(myBattlefield) target(creature[green]|myLibrary)
text=As an additional cost to cast Natural Order, sacrifice a green creature. -- Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.
mana={2}{G}{G}{s;notatarget(creature[green]|mybattlefield)}
type=Sorcery
[/card]
I tested this excessively and I have to say: This kind of code leads to absolute 100%ers.
- Added 2 tests for this to save it from being broken by future code changes.
- Removed the land cycle from Visions (Coral Atoll, everglades, etc.).
Card list -> first comment.
2) Fixed issue422.
3) Optimized 3 cards:
Covetous Dragon
Emperor Crocodile
Tethered Griffin
All additions and changes don't cause test suite to crash.
Will also add some tests in the next few days.
Example code:
[card]
name=Dregscape Zombie
autograveyard={B}:moveto(exile) && token(17483511) asSorcery
text=Unearth {B} ({B}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
mana={1}{B}
type=Creature
subtype=Zombie
power=2
toughness=1
[/card]
[card]
name=Dregscape Zombie Unearthed
type=Creature
subtype=Zombie
abilities=haste
auto=@next end:moveTo(exile)
power=2
toughness=1
mana={1}{B}
[/card]
Added a test script for this card as an example for cards with Unearth.
Card list -> First comment
More cards with Unearth will follow tomorrow.
--> http://wololo.net/forum/viewtopic.php?f=21&t=1430
!!!!Many thanks to Kaioshin!!!!
One example card code:
[card]
name=Arc Lightning
target=creature,player
auto=damage:1
auto=damage:1 target(creature,player)
auto=token(-1111112)
text=Arc Lightning deals 3 damage divided as you choose among one, two, or three target creatures and/or players.
mana={2}{R}
type=Sorcery
[/card]
[card]
name=Arc Lightning's 3rd Damage
auto=counter(0/0,1,Arc Lightning)
auto=@damaged(creature,player):thisforeach(counter{0/0.1.Arc Lightning}>0) damage:1 target(creature,player) && counter(0/0,-1,Arc Lightning) && counter(0/0,1,Bury)
auto=thisforeach(counter{0/0.1.Bury}>0) bury
type=Nothing
id=-1111112
[/card]
This new introduced use for fullcoded tokens seems more borderline than it in fact is:
- The tokens cannot be targeted or destroyed except for their own sac-effect.
- They don't cause any effects on the board to trigger.
- The interactions with their "mothercard" cannot be interrupted.
- They are invisible (this is true for most of the cards), because they exist as short as a permanent can exist, vanishing immediately after entering the board.
I couldn't believe it when I saw this way of coding the first time, but it just works wonderfully! Very few people will recognize any difference between this and the usually coded cards.
THIS ADDITION DOES NOT CAUSE TEST SUITE TO CRASH!! ;)
Card List -> First Comment
Fixed issue398.
Removed Silent Arbiter: This card does not work. Opponent can always attack or block with more then one creature although Silent Arbiter is on the battlefield. Closing issue400.
Optimized all cards with Graft.
Removed Merrow Reejerey: Permanents with two or more "may"-lines never worked because all these lines will always trigger, so you could use them all. Closing issue362.
This card cannot work for now: The engine always tries to let the "+1/+1 counter"-effect trigger first, so it tries to give a creature in a graveyard a +1/+1 counter, and this is not possible in wagic for the moment.
Closing issue306.
(winGame keyword).
Added 2 interesting draw spells (they work 100% as they should!)
Added 6 other yet undiscovered, but perfectly working cards.
Card list -> First post
- Several creatures with upkeep costs.
- Almost all creatures with Echo.
- Force of Nature and Lord o f the Pit are softcoded now.
Card list -> First comment
Fixed issue389.
Activated abilities with {X}-costs that have a target don't work yet.
Card list -> First comment
Fixed issue386. It was just a little typo in Nekrataals autoline.
Most of the cards are based on the last adds by salmelo, while some few cards could have been added for half a year or more.
2 weeks of intensive testing are over, and I think all cards will do what they should but if you still find something discussable after testing them by yourself, plz post it here!
Card list -> First post.
Salmelo:"Here is another patch, this time adding counters to target specifications, so now you should be able to target things with counters on them as well as use counters for criterion for Lord, aslongas, foreach, etc.
I had to muddle the syntax a little bit though, so heres an example, taken from gwafa hazid, whom I added to the primitives to test with.
lord(creature[counter{0/0.1.Bribe}]|opponentbattlefield) cantattack
obviously the part we are worried about is the counter part, note that those are curly braces { } and periods . instead of parentheses ( ) and commas , this is so that it does not conflict with how targets are normally parsed, which it did before I changed those. Counters still work the same way everywhere else though, you only need to use { } and periods in target code.
Also, you can use counter{any} to specify that it should look for things with any kind of counter on them, not just specific ones, this is used by Kulrath Knight, for example.
I also consolidated most of the code used to parse counter specifications, as it seemed unnecessary duplicating it three times.
Anyway, aside from this major addition, I also added Gwafa Hazid, Profiteer; and Kulrath Knight to the primitives, as well as a test file for each to make sure it worked.
Hopefully y'all will find this patch useful.
Oh, and I should point out that it only works with one Counter in the target specification, i imagine if you put two in the same one then it would either overwrite the first with the second or merge them into some sort of hybrid counter monstrosity, either way, I wouldn't suggest it. "
Cards with vanishing are also codable now. Have a look at the comments for explanation.
daily_build.
"@movedTo" in combination with "autograveyard" WORKS!" Thanks to Abrasax!
Fixed 18 cards, 1 of them is Rancor. Now works 100%, so issue311 is fixed.
You find a list of all added and fixed cards in the first comment.
- Added remove/add counters as a cost, patch by Salmelo, thanks man!. See primitives/mtg.txt -> Thallid to see how it works
- added test for i286 by salmelo
- added basic display for counters (this needs improvement) by salmelo
Note: I replaced paragraphs (which Wagic can't display at the moment) with the sequence " -- ". If that's not desired, they can be easily replaced, but I think they improve readability. Previously, paragraphs where transcribed into slightly larger spaces, and I found that slightly confusing when reading the texts in-game.
Note: I checked all changes manually, so in the cases where the value *has* to be different for the card to work (e.g.Covetous Dragon), I left the values as they were. In these cases I added a comment to the card code which notes why the values need to be different, so that no one else breaks the card by "correcting" them.
Note 2: You may have noticed that I used a fixed sequence of lines for all cards. That was a byproduct of the file unification process, but I think it's also rather useful. Above the "text=" line are the lines that we need to code (abilities=, target=, auto= etc.). Below the "text=" line are the fixed values (mana=, type=, power= etc.) which we only need to touch if either the card gets errata'd, or we need to do some tricky coding (e.g. Covetous Dragon). So, in other words, everything below the "text=" line should be okay now in both files, and doesn't need to be checked when implementing or debugging a card.
- matched card names of flip cards and split cards in _cards.dat and mtg:todo.dat
- removed the now superfluous todo.dat files, the file mtg_todo.dat replaces these.