Added/fixed primitives, added new keywords "fourtimes", "fivetimes", "thirdpaid", fixed Tavis-CI build.

This commit is contained in:
Vittorio Alfieri
2021-04-21 18:27:33 +02:00
parent abe8b580c8
commit 68a64238cb
3 changed files with 490 additions and 25 deletions

View File

@@ -12,7 +12,8 @@ before_install:
# Only building on Mac when not handling pull request
# - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
# export BUILD_MAC=YES;
# - sudo apt-get update -qq
# fi
- sudo apt-get update -qq
# Building for PSP here
- if [ "$BUILD_PSP" == "YES" ]; then
export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk" &&
@@ -22,8 +23,8 @@ before_install:
fi
# Building for Qt here
- if [ "$BUILD_Qt" == "YES" ]; then
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu xenial universe" &&
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu xenial main" &&
sudo apt-get -qq update &&
sudo apt-get -qq install qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev libqt5opengl5 libqt5opengl5-dev pulseaudio libpulse-dev &&
export QMAKE="qmake -qt=qt5";
@@ -51,7 +52,6 @@ install:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64;
export PATH=$JAVA_HOME/bin:$PATH;
fi
- sudo pip install --upgrade pip
- sudo pip install setuptools-rust
- sudo pip install pyOpenSSL

View File

@@ -157,6 +157,25 @@ power=3
toughness=3
[/card]
[card]
name=Accomplished Alchemist
auto={T}:name(Add one white) add{W}
auto={T}:name(Add one black) add{B}
auto={T}:name(Add one blue) add{U}
auto={T}:name(Add one green) add{G}
auto={T}:name(Add one red) add{R}
auto={T}:name(Add X white) thisforeach(variable{lifegain}>0) add{W}
auto={T}:name(Add X black) thisforeach(variable{lifegain}>0) add{B}
auto={T}:name(Add X blue) thisforeach(variable{lifegain}>0) add{U}
auto={T}:name(Add X green) thisforeach(variable{lifegain}>0) add{G}
auto={T}:name(Add X red) thisforeach(variable{lifegain}>0) add{R}
text={T}: Add one mana of any color. -- {T}: Add X mana of any one color, where X is the amount of life you gained this turn.
mana={3}{G}
type=Creature
subtype=Elf Druid
power=2
toughness=5
[/card]
[card]
name=Accursed Horde
auto={1}{B}:target(creature[zombie;attacking]) indestructible
text={1}{B}: Target attacking Zombie gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it. If its toughness is 0 or less, it's still put into its owner's graveyard.)
@@ -602,6 +621,14 @@ text=As Agadeem, the Undercrypt enters the battlefield, you may pay 3 life. If y
type=Land
[/card]
[card]
name=Ageless Guardian
mana={1}{W}
type=Creature
subtype=Spirit Soldier
power=1
toughness=4
[/card]
[card]
name=Agent of Treachery
auto=moveTo(myBattlefield) target(*|opponentBattlefield)
auto=@each my endofturn:ability$!name(Choose one) choice name(You control 3 or more permanents you don't own) draw:3 controller _ choice name(You don't control 3 or more permanents you don't own) donothing!$ controller
@@ -4263,6 +4290,17 @@ power=3
toughness=4
[/card]
[card]
name=Bayou Groff
other={4}{G} name(Pay 3)
restriction=type(creature|mybattlefield)~morethan~0
text=As an additional cost to cast this spell, sacrifice a creature or pay 3 .
mana={1}{G}{S(creature|mybattlefield)}
type=Creature
subtype=Plant Dog
power=5
toughness=4
[/card]
[card]
name=Bazaar Trademage
abilities=flying
auto=draw:2 && transforms((,newability[target(<3>*|myhand) reject])) forever
@@ -4284,6 +4322,14 @@ mana={1}{U}{R}
type=Sorcery
[/card]
[card]
name=Beaming Defiance
target=creature|mybattlefield
auto=transforms((,newability[2/2],newability[opponentshroud])) ueot
text=Target creature you control gets +2/+2 and gains hexproof until end of turn. (It can't be the target of spells or abilities your opponents control.)
mana={1}{W}
type=Instant
[/card]
[card]
name=Beamsplitter Mage
auto=@targeted(this) from(*[instant;sorcery]|mycastingzone):all(trigger[from]) castcard(copied noevent)
text=Whenever you cast an instant or sorcery spell that targets only Beamsplitter Mage, if you control one or more other creatures that spell could target, choose one of those creatures. Copy that spell. The copy targets the chosen creature.
@@ -4735,6 +4781,14 @@ power=1
toughness=2
[/card]
[card]
name=Big Play
target=creature
auto=transforms((,newability[2/2],newability[reach],newability[counter(1/1)])) ueot
text=Target creature gets +2/+2 and gains reach until end of turn. Put a +1/+1 counter on it.
mana={1}{G}
type=Instant
[/card]
[card]
name=Bind the Monster
target=creature
auto=tap(noevent)
@@ -5393,6 +5447,16 @@ power=3
toughness=2
[/card]
[card]
name=Blood Age General
auto={T}:all(spirit[attacking]|battlefield) transforms((,newability[1/0])) ueot
text={T}: Attacking Spirits get +1/+0 until end of turn.
mana={1}{R}
type=Creature
subtype=Spirit Warrior
power=2
toughness=2
[/card]
[card]
name=Blood Aspirant
auto=@sacrificed(*|mybattlefield):counter(1/1,1) all(this)
auto={1}{R}{S(creature,enchantment|myBattlefield}:damage:1 && cantblock target(creature) oneshot ueot
@@ -9443,6 +9507,16 @@ power=2
toughness=2
[/card]
[card]
name=Clever Lumimancer
auto=@movedto(*[instant;sorcery]|mystack):2/2 ueot
text=Magecraft — Whenever you cast or copy an instant or sorcery spell, Clever Lumimancer gets +2/+2 until end of turn.
mana={W}
type=Creature
subtype=Human Wizard
power=0
toughness=1
[/card]
[card]
name=Cliffhaven Kitesail
auto=rehook target(creature|myBattlefield)
auto=teach(creature) flying
@@ -9902,6 +9976,17 @@ power=4
toughness=1
[/card]
[card]
name=Combat Professor
abilities=flying
auto=@each my combatbegins:name(Creature gets 1/0 and vigilance) target(creature|mybattlefield) transforms((,newability[1/0],newability[vigilance])) ueot
text=Flying -- At the beginning of combat on your turn, target creature you control gets +1/+0 and gains vigilance until end of turn.
mana={3}{W}
type=Creature
subtype=Bird Cleric
power=2
toughness=3
[/card]
[card]
name=Combine Guildmage
auto={1}{G}{T}:name(1/1 counters) emblem transforms((,newability[@movedto(creature|myBattlefield):all(trigger[to]) counter(1/1)])) ueot
auto={1}{U}{T}{C(1/1,-1),*|mybattlefield}:name(move a 1/1 counter) counter(1/1) target(creature)
@@ -10808,11 +10893,17 @@ mana={4}{B}
type=Sorcery
[/card]
[card]
name=Crackle with Power
auto=target(<thirdpaid>player,creature,planeswalker) damage:fivetimesthirdpaid
text=Crackle with Power deals five times X damage to each of up to X targets.
mana={X}{X}{X}{R}{R}
type=Sorcery
[/card]
[card]
name=Crackling Drake
abilities=flying
auto=draw:1
anyzone=pginstantsorcery/4 cdaactive
#anyzone=peinstantsorcery/4 cdaactive
anyzone=type:*[instant;sorcery]:mygraveyardplustype:*[instant;sorcery]:myexileplusend/4 cdaactive
text=Flying -- Crackling Drake's power is equal to the total number of instant and sorcery cards you own in exile and in your graveyard. -- When Crackling Drake enters the battlefield, draw a card.
mana={U}{U}{R}{R}
type=Creature
@@ -11673,6 +11764,17 @@ power=3
toughness=2
[/card]
[card]
name=Daemogoth Woe-Eater
auto=@each my upkeep:ability$!name(Sacrifice a creature) name(Sacrifice a creature) target(creature|mybattlefield) sacrifice!$ controller
auto=@sacrificed(this):life:2 controller && draw:1 controller && ability$!name(Discard a card) name(Discard a card) notatarget(*|myhand) reject!$ opponent
text=At the beginning of your upkeep, sacrifice a creature. -- When you sacrifice Daemogoth Woe-Eater, each opponent discards a card, you draw a card, and you gain 2 life.
mana={1}{B}{BG}{G}
type=Creature
subtype=Demon
power=7
toughness=6
[/card]
[card]
name=Dagger Caster
auto=damage:1 opponent
auto=damage:1 all(creature|opponentBattlefield)
@@ -12249,6 +12351,14 @@ mana={B}
type=Sorcery
[/card]
[card]
name=Deadly Brew
auto=ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) target(*[creature;planeswalker]|mybattlefield) transforms((,newability[sacrifice],newability[may name(Return permanent) target(other *[-instant;-sorcery]|mygraveyard) moveto(myhand)])) oneshot!$ controller
auto=ability$!name(Sacrifice creature or planeswalker) name(Sacrifice creature or planeswalker) target(*[creature;planeswalker]|mybattlefield) transforms((,newability[sacrifice],newability[may name(Return permanent) target(other *[-instant;-sorcery]|mygraveyard) moveto(myhand)])) oneshot!$ opponent
text=Each player sacrifices a creature or planeswalker. If you sacrificed a permanent this way, you may return another permanent card from your graveyard to your hand.
mana={B}{G}
type=Sorcery
[/card]
[card]
name=Deadly Rollick
target=creature
auto=moveTo(exile)
@@ -12560,6 +12670,14 @@ mana={R}
type=Sorcery
[/card]
[card]
name=Defend the Campus
auto=choice name(Creatures get 1/1) all(creature|mybattlefield) transforms((,newability[1/1])) ueot
auto=if type(creature[power>=4]|battlefield)~morethan~0 then choice name(Destroy creature) name(Destroy creature) target(creature[power>=4]|battlefield) destroy
text=Choose one — -- • Creatures you control get +1/+1 until end of turn. -- • Destroy target creature with power 4 or greater.
mana={3}{W}
type=Instant
[/card]
[card]
name=Defense Grid
auto=restriction{during my turn}: lord(*|nonbattlezone) altercost(colorless,+3) opponent
auto=restriction{during opponent turn}: lord(*|nonbattlezone) altercost(colorless,+3) controller
@@ -15189,6 +15307,17 @@ mana={W}{W}{B}{B}{B}{G}{G}
type=Sorcery
[/card]
[card]
name=Efreet Flamepainter
abilities=double strike
auto=@combatdamaged(player) from(this):may name(Cast instant or sorcery) target(*[instant;sorcery]|myhand) transforms((,newability[gainedexiledeath],newability[activate castcard(normal)])) oneshot
text=Double strike -- Whenever Efreet Flamepainter deals combat damage to a player, you may cast target instant or sorcery card from your graveyard without paying its mana cost. If that spell would be put into your graveyard, exile it instead.
mana={3}{R}
type=Creature
subtype=Efreet Shaman
power=1
toughness=4
[/card]
[card]
name=Egon, God of Death
abilities=deathtouch
other={B} name(Throne of Death)
@@ -16214,6 +16343,15 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Enthusiastic Study
target=creature
auto=transforms((,newability[3/1],newability[trample])) ueot
auto=name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[choice name(Don't learn) donothing])) oneshot
text=Target creature gets +3/+1 and gains trample until end of turn. -- Learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.)
mana={2}{R}
type=Instant
[/card]
[card]
name=Entourage of Trest
auto=becomesmonarch controller
text=When Entourage of Trest enters the battlefield, you become the monarch. -- Entourage of Trest can block an additional creature each combat as long as you're the monarch.
@@ -16265,6 +16403,15 @@ mana={X}{X}{B}{B}{B}
type=Sorcery
[/card]
[card]
name=Environmental Sciences
auto=life:2 controller
auto=name(Search land) target(land[basic]|mylibrary) moveto(myhand) and!( shuffle )!
text=Search your library for a basic land card, reveal it, put it into your hand, then shuffle. You gain 2 life.
mana={2}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Eon Frolicker
abilities=flying
auto=if casted(this) then turns:+1 opponent && protection from(*) uynt && all(planeswalker|myBattlefield) protection from(*) uynt
@@ -16940,6 +17087,15 @@ text={T}: Add one mana of any color that a land an opponent controls could produ
type=Land
[/card]
[card]
name=Expanded Anatomy
target=creature
auto=transforms((,newability[vigilance],newability[counter(1/1.2)])) ueot
text=Put two +1/+1 counters on target creature. It gains vigilance until end of turn.
mana={3}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Expansion // Explosion
other={X}{U}{U}{R}{R} name(Explosion)
auto=if paid(alternative) then choice name(Damage any target and you draw) damage:X target(player,creature,planeswalker) && draw:X controller
@@ -17038,6 +17194,16 @@ mana={5}{R}
type=Sorcery
[/card]
[card]
name=Explosive Welcome
target=player,creature,planeswalker
auto=damage:5
auto=target(player,creature,planeswalker) damage:3
auto=add{R}{R}{R}
text=Explosive Welcome deals 5 damage to any target and 3 damage to any other target. Add {R}{R}{R}.
mana={7}{R}
type=Instant
[/card]
[card]
name=Expose to Daylight
target=artifact,enchantment
auto=destroy
@@ -17141,6 +17307,17 @@ mana={2}{U}
type=Enchantment
[/card]
[card]
name=Eyetwitch
abilities=flying
auto=@movedto(this|graveyard) from(mybattlefield):name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[choice name(Don't learn) donothing])) oneshot
text=Flying -- When Eyetwitch dies, learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.)
mana={B}
type=Creature
subtype=Eye Bat
power=1
toughness=1
[/card]
[card]
name=Ezuri's Predation
auto=foreach(creature|opponentBattlefield) token(Beast,Creature Beast,4/4,green) and!( transforms((,newability[moveTo(this|myBattlefield) damage:dynamicability<!powerstrike!> target(other creature|opponentBattlefield])) forever )! controller
text=For each creature your opponents control, create a 4/4 green Beast creature token. Each of those Beasts fights a different one of those creatures.
@@ -18006,6 +18183,16 @@ power=1
toughness=1
[/card]
[card]
name=Fervent Mastery
other={2}{R}{R} name(Cast for 1 less)
aicode=activate transforms((,newability[target(<3>*|mylibrary) moveto(myhand) and!( discard:1 controller )!])) oneshot
auto=name(Search up to 3 cards) reveal:plibrarycount optionone name(Choose up to 3 cards) target(<upto:3>*|reveal) moveto(myhand) optiononeend optiontwo name(Put back) all(*|reveal) moveto(ownerlibrary) and!( shuffle )! optiontwoend afterrevealed thisforeach(variable{3}) discard:1 controller afterrevealedend revealend
auto=if paid(alternative) then ability$!name(Discard and draw) name(Discard and draw) target(<anyamount>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot!$ opponent
text=You may pay {2}{R}{R} rather than pay this spell's mana cost. -- If the {2}{R}{R} cost was paid, an opponent discards any number of cards, then draws that many cards. -- Search your library for up to three cards, put them into your hand, shuffle, then discard three cards at random.
mana={3}{R}{R}
type=Sorcery
[/card]
[card]
name=Fervent Paincaster
auto={T}:damage:1 target(player)
auto=@exerted(this):damage:1 target(creature)
@@ -18828,10 +19015,10 @@ toughness=2
[card]
name=Flame Spill
target=creature
auto=this(toughness=1) damage:1 && damage:3 targetController
auto=this(toughness=2) damage:2 && damage:2 targetController
auto=this(toughness=3) damage:3 && damage:1 targetController
auto=this(toughness>=4) damage:4
auto=transforms((,newability[this(toughness=1) damage:1 && damage:3 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness=2) damage:2 && damage:2 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness=3) damage:3 && damage:1 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness>=4) damage:4])) oneshot
text=Flame Spill deals 4 damage to target creature. Excess damage is dealt to that creature's controller instead.
mana={2}{R}
type=Instant
@@ -19867,6 +20054,16 @@ mana={2}{G}
type=Instant
[/card]
[card]
name=Fuming Effigy
auto=@movedto(*|mybattlefield,mystack,myhand,mylibrary,mysideboard,myexile,mycommandzone) from(mygraveyard):name(Deals 1 damage) damage:1 opponent
text=Whenever one or more cards leave your graveyard, Fuming Effigy deals 1 damage to each opponent.
mana={3}{R}
type=Creature
subtype=Spirit
power=4
toughness=3
[/card]
[card]
name=Funeral Longboat
abilities=vigilance
auto={crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}
@@ -23624,6 +23821,17 @@ power=2
toughness=3
[/card]
[card]
name=Hall Monitor
abilities=haste
auto={1}{R}{T}:name(Creature can't block) target(creature) transforms((,newability[cantblock])) ueot
text=Haste -- {1}{R}, {T}: Target creature can't block this turn.
mana={R}
type=Creature
subtype=Lizard Shaman
power=1
toughness=1
[/card]
[card]
name=Hall of Heliod's Generosity
auto={T}:add{C}
auto={1}{W}{T}:moveTo(mylibrary) target(enchantment|mygraveyard)
@@ -24361,6 +24569,15 @@ mana={2}{R}
type=Enchantment
[/card]
[card]
name=Heated Debate
abilities=nofizzle
target=creature,planeswalker
auto=damage:4
text=This spell can't be countered. (This includes by the ward ability.) -- Heated Debate deals 4 damage to target creature or planeswalker.
mana={2}{R}
type=Instant
[/card]
[card]
name=Heaven // Earth
auto=damage:X all(creature[flying])
autograveyard={X}{R}{R}{E}:damage:X all(creature[-flying]) asSorcery
@@ -25620,9 +25837,7 @@ type=Sorcery
[card]
name=Hunt for Specimens
auto=token(Pest,Creature Pest,1/1,green,blue) and!( transforms((,newability[@movedto(this|mygraveyard) from(battlefield):life:1 controller])) forever )!
auto=if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)
auto=if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!
auto=choice name(Don't learn) donothing
auto=name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[choice name(Don't learn) donothing])) oneshot
text=Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." -- Learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.)
mana={1}{B}
type=Sorcery
@@ -25981,6 +26196,15 @@ power=4
toughness=3
[/card]
[card]
name=Igneous Inspiration
target=player,creature,planeswalker
auto=damage:3
auto=name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[choice name(Don't learn) donothing])) oneshot
text=Igneous Inspiration deals 3 damage to any target. -- Learn. (You may reveal a Lesson card you own from outside the game and put it into your hand, or discard a card to draw a card.)
mana={2}{R}
type=Sorcery
[/card]
[card]
name=Ignite Disorder
auto=thisforeach(variable{3}) ability$!name(Deal 1 damage) name(Deal 1 damage) target(creature[white;blue]) damage:1!$ controller
text=Ignite Disorder deals 3 damage divided as you choose among one, two, or three target white and/or blue creatures.
@@ -26050,6 +26274,30 @@ mana={X}{R}
type=Sorcery
[/card]
[card]
name=Illuminate History
auto=if type(*|mygraveyard)~morethan~5 then choice name(Discard 0 cards) name(Discard 0 cards) token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|mygraveyard)~lessthan~6 then choice name(Discard 0 cards) name(Discard 0 cards) donothing
auto=if type(*|myhand)~morethan~0 then if type(*|mygraveyard)~morethan~4 then choice name(Discard 1 card) name(Discard 1 card) name(Discard 1 card) target(*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~0 then if type(*|mygraveyard)~lessthan~5 then choice name(Discard 1 card) name(Discard 1 card) name(Discard 1 card) target(*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot
auto=if type(*|myhand)~morethan~1 then if type(*|mygraveyard)~morethan~3 then choice name(Discard 2 cards) name(Discard 2 cards) name(Discard 2 cards) target(<2>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~1 then if type(*|mygraveyard)~lessthan~4 then choice name(Discard 2 cards) name(Discard 2 cards) name(Discard 2 cards) target(<2>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot
auto=if type(*|myhand)~morethan~2 then if type(*|mygraveyard)~morethan~2 then choice name(Discard 3 cards) name(Discard 3 cards) name(Discard 3 cards) target(<3>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~2 then if type(*|mygraveyard)~lessthan~3 then choice name(Discard 3 cards) name(Discard 3 cards) name(Discard 3 cards) target(<3>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot
auto=if type(*|myhand)~morethan~3 then if type(*|mygraveyard)~morethan~1 then choice name(Discard 4 cards) name(Discard 4 cards) name(Discard 4 cards) target(<4>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~3 then if type(*|mygraveyard)~lessthan~2 then choice name(Discard 4 cards) name(Discard 4 cards) name(Discard 4 cards) target(<4>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot
auto=if type(*|myhand)~morethan~4 then if type(*|mygraveyard)~morethan~0 then choice name(Discard 5 cards) name(Discard 5 cards) name(Discard 5 cards) target(<5>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~4 then if type(*|mygraveyard)~lessthan~1 then choice name(Discard 5 cards) name(Discard 5 cards) name(Discard 5 cards) target(<5>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot
auto=if type(*|myhand)~morethan~5 then choice name(Discard 6 cards) name(Discard 6 cards) target(<6>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~6 then choice name(Discard 7 cards) name(Discard 7 cards) target(<7>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~7 then choice name(Discard 8 cards) name(Discard 8 cards) target(<8>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~8 then choice name(Discard 9 cards) name(Discard 9 cards) target(<9>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
auto=if type(*|myhand)~morethan~9 then choice name(Discard 10 cards) name(Discard 10 cards) target(<10>*|myhand) transforms((,newability[reject],newability[draw:1])) oneshot && token(Spirit^Creature Spirit^3/2^red^white)
text=Discard any number of cards, then draw that many cards. Then if there are seven or more cards in your graveyard, create a 3/2 red and white Spirit creature token.
mana={2}{R}{R}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Illuminated Folio
auto=this(variable{type:*[blue]:myhand}>1) {1}{T}:draw:1 controller
auto=this(variable{type:*[red]:myhand}>1) {1}{T}:draw:1 controller
@@ -26120,6 +26368,16 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Illustrious Historian
autograveyard={5}{E}:token(Spirit,Creature Spirit,3/2,red,white) and!( tap(noevent) )!
text={5}, Exile Illustrious Historian from your graveyard: Create a tapped 3/2 red and white Spirit creature token.
mana={1}{R}
type=Creature
subtype=Human Shaman
power=2
toughness=1
[/card]
[card]
name=Ilysian Caryatid
auto={T} restriction{type(creature[power>=4]|myhand)~morethan~0}:add{G}{G}
auto={T} restriction{type(creature[power>=4]|myhand)~morethan~0}:add{W}{W}
@@ -27330,6 +27588,24 @@ mana={3}{G}
type=Enchantment
[/card]
[card]
name=Introduction to Annihilation
target=*[-land]|battlefield
auto=moveto(exile) and!( transforms((,newability[draw:1 controller])) oneshot )!
text=Exile target nonland permanent. Its controller draws a card.
mana={5}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Introduction to Prophecy
aicode=activate transforms((,newability[draw:1 controller])) oneshot
auto=scry:2 scrycore delayed draw:1 controller scrycoreend scryend
text=Scry 2, then draw a card.
mana={3}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Intrusive Packbeast
abilities=vigilance
auto=tap <upto:2>target(creature|opponentBattlefield)
@@ -31971,6 +32247,48 @@ power=2
toughness=2
[/card]
[card]
name=Lorehold Apprentice
auto=@movedto(*[instant;sorcery]|mystack):all(spirit|mybattlefield) transforms((,newability[{T}:name(Damage opponent) damage:1 opponent])) ueot
text=Magecraft — Whenever you cast or copy an instant or sorcery spell, until end of turn, Spirit creatures you control gain " {T}: This creature deals 1 damage to each opponent."
mana={R}{W}
type=Creature
subtype=Human Cleric
power=2
toughness=2
[/card]
[card]
name=Lorehold Command
auto=choice name(Create Spirit and give 1/0 to creatures) token(Spirit,Creature Spirit,3/2,white,red) && all(creature|mybattlefield) transforms((,newability[1/0],newability[haste],newability[indestructible])) ueot
auto=choice name(Create Spirit and deal 3 damage) token(Spirit,Creature Spirit,3/2,white,red) && target(player,creature,planeswalker) damage:3 && ability$!name(Target player gains 3 life) name(Target player gains 3 life) life:3 target(player)!$ controller
auto=choice name(Create Spirit and sacrifice permanent) token(Spirit,Creature Spirit,3/2,white,red) && ability$!name(Sacrifice a permanent) name(Sacrifice a permanent) target(*|mybattlefield) sacrifice and!( draw:2 controller )! !$ controller
auto=choice name(Give 1/0 to creatures and deal 3 damage) all(creature|mybattlefield) transforms((,newability[1/0],newability[haste],newability[indestructible])) ueot && target(player,creature,planeswalker) damage:3 && ability$!name(Target player gains 3 life) name(Target player gains 3 life) life:3 target(player)!$ controller
auto=choice name(Give 1/0 to creatures and sacrifice permanent) all(creature|mybattlefield) transforms((,newability[1/0],newability[haste],newability[indestructible])) ueot && ability$!name(Sacrifice a permanent) name(Sacrifice a permanent) target(*|mybattlefield) sacrifice and!( draw:2 controller )! !$ controller
auto=choice name(Deal 3 damage and sacrifice permanent) target(player,creature,planeswalker) damage:3 && ability$!name(Target player gains 3 life) name(Target player gains 3 life) life:3 target(player)!$ controller && ability$!name(Sacrifice a permanent) name(Sacrifice a permanent) name(Sacrifice a permanent) target(*|mybattlefield) transforms((,newability[sacrifice],newability[draw:2 controller])) oneshot !$ controller
text=Choose two — -- • Create a 3/2 red and white Spirit creature token. -- • Creatures you control get +1/+0 and gain indestructible and haste until end of turn. -- • Lorehold Command deals 3 damage to any target. Target player gains 3 life. -- • Sacrifice a permanent, then draw two cards.
mana={3}{R}{W}
type=Instant
[/card]
[card]
name=Lorehold Excavation
auto=@each my end restriction{type(land[zpos=1]|mylibrary)~morethan~0}:deplete:1 controller && life:1 controller
auto=@each my end restriction{type(land[zpos=1]|mylibrary)~equalto~0}:deplete:1 controller && damage:1 opponent
auto={5}{E(creature|mygraveyard)}:token(Spirit,Creature Spirit,3/2,red,white) and!( tap(noevent) )!
text=At the beginning of your end step, mill a card. If a land card was milled this way, you gain 1 life. Otherwise, Lorehold Excavation deals 1 damage to each opponent. (To mill a card, put the top card of your library into your graveyard.) -- {5}, Exile a creature card from your graveyard: Create a tapped 3/2 red and white Spirit creature token.
mana={R}{W}
type=Enchantment
[/card]
[card]
name=Lorehold Pledgemage
abilities=first strike
auto=@movedto(*[instant;sorcery]|mystack):1/0 ueot
text=First strike -- Magecraft — Whenever you cast or copy an instant or sorcery spell, Lorehold Pledgemage gets +1/+0 until end of turn.
mana={1}{RW}{RW}
type=Creature
subtype=Kor Shaman
power=2
toughness=2
[/card]
[card]
name=Losheel, Clockwork Scholar
auto=preventAllCombatDamage to(artifact[attacking]|myBattlefield)
auto=@movedto(artifact[creature]|myBattlefield) restriction{type(artifact[fresh;creature]|mybattlefield)~equalto~1}:draw:1 controller
@@ -32623,6 +32941,14 @@ power=*
toughness=*
[/card]
[card]
name=Make Your Mark
target=creature
auto=transforms((,newability[1/0],newability[@movedto(this|graveyard) from(mybattlefield):name(Create spirit) token(Spirit^Creature Spirit^3/2^red^white)])) ueot
text=Target creature gets +1/+0 until end of turn. When that creature dies this turn, create a 3/2 red and white Spirit creature token.
mana={RW}
type=Instant
[/card]
[card]
name=Makeshift Battalion
auto=@combat(attacking) source(this) restriction{type(other creature[attacking]|myBattlefield)~morethan~1}:counter(1/1)
text=Whenever Makeshift Battalion and at least two other creatures attack, put a +1/+1 counter on Makeshift Battalion.
@@ -32864,6 +33190,16 @@ power=2
toughness=2
[/card]
[card]
name=Manifestation Sage
auto=token(Fractal,Creature Fractal,0/0,green,blue) and!( counter(1/1.phandcount) )!
text=When Manifestation Sage enters the battlefield, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of cards in your hand.
mana={GU}{GU}{GU}{GU}
type=Creature
subtype=Human Wizard
power=2
toughness=2
[/card]
[card]
name=Manifold Key
auto={1}{T}:untap target(other artifact)
auto={3}{T}:unblockable target(creature) ueot
@@ -33222,6 +33558,27 @@ power=1
toughness=1
[/card]
[card]
name=Mascot Exhibition
auto=token(Inkling,Creature Inkling,2/1,white,black,flying)
auto=token(Spirit,Creature Spirit,3/2,red,white)
auto=token(Elemental,Creature Elemental,4/4,blue,red)
text=Create a 2/1 white and black Inkling creature token with flying, a 3/2 red and white Spirit creature token, and a 4/4 blue and red Elemental creature token.
mana={7}
type=Sorcery
subtype=Lesson
[/card]
[card]
name=Mascot Interception
other={R} name(Target token creature)
otherrestriction=type(creature[token]|battlefield)~morethan~0
restriction=type(creature[-token]|battlefield)~morethan~0
auto=if paid(alternative) then name(Gain control of creature) name(Gain control of creature) target(creature[token]|battlefield) moveto(mybattlefield) and!( transforms((,newability[untap],newability[2/0],newability[haste],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)])) ueot )!
auto=ifnot paid(alternative) then name(Gain control of creature) name(Gain control of creature) target(creature[-token]|battlefield) moveto(mybattlefield) and!( transforms((,newability[untap],newability[2/0],newability[haste],newability[phaseaction[endofturn sourceinplay] moveTo(ownerbattlefield)])) ueot )!
text=This spell costs {3} less to cast if it targets a creature token. -- Gain control of target creature until end of turn. Untap that creature. It gets +2/+0 and gains haste until end of turn.
mana={3}{R}
type=Sorcery
[/card]
[card]
name=Mask Est
abilities=totemarmor
target=*
@@ -34489,6 +34846,16 @@ power=6
toughness=6
[/card]
[card]
name=Moldering Karok
abilities=trample,lifelink
text=Trample, lifelink
mana={2}{B}{G}
type=Creature
subtype=Zombie Crocodile
power=3
toughness=3
[/card]
[card]
name=Moldervine Reclamation
auto=@movedTo(creature|mygraveyard) from(battlefield):life:1 && draw:1
text=Whenever a creature you control dies, you gain 1 life and draw a card.
@@ -34699,6 +35066,17 @@ text=Morphic Pool enters the battlefield tapped unless you have two or more oppo
type=Land
[/card]
[card]
name=Mortality Spear
target=*[-land]|battlefield
other={B}{G} name(Life gained)
otherrestriction=compare(lifegain)~morethan~0
restriction=compare(lifegain)~equalto~0
auto=destroy
text=This spell costs {2} less to cast if you gained life this turn. -- Destroy target nonland permanent.
mana={2}{B}{G}
type=Instant
[/card]
[card]
name=Moss Viper
abilities=deathtouch
text=Deathtouch
@@ -39254,6 +39632,18 @@ mana={1}{G}
type=Instant
[/card]
[card]
name=Pigment Storm
target=creature
auto=transforms((,newability[this(toughness=1) damage:1 && damage:4 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness=2) damage:2 && damage:3 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness=3) damage:3 && damage:2 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness=4) damage:4 && damage:1 targetController])) oneshot
auto=transforms((,newability[auto=this(toughness>=5) damage:5])) oneshot
text=Pigment Storm deals 5 damage to target creature. Excess damage is dealt to that creature's controller instead.
mana={3}{R}{R}
type=Sorcery
[/card]
[card]
name=Pilfering Hawk
abilities=flying
auto={i}{T}:draw:1 && transforms((,newability[target(*|myhand) reject])) forever
@@ -39293,6 +39683,17 @@ text={T}: Add one mana of any color to your mana pool. Spend this mana only to c
type=Land
[/card]
[card]
name=Pillardrop Warden
abilities=reach
auto={2}{T}{S}:name(Return instant or sorcery) target(*[instant;sorcery]|mygraveyard) moveto(myhand) asSorcery
text=Reach -- {2}, {T}, Sacrifice Pillardrop Warden: Return target instant or sorcery card from your graveyard to your hand. Activate only as a sorcery.
mana={3}{R}
type=Creature
subtype=Spirit Dwarf
power=1
toughness=5
[/card]
[card]
name=Pillarverge Pathway
auto={T}:add{W}
text={T}: Add {W}.
@@ -52472,6 +52873,15 @@ mana={1}{B}
type=Instant
[/card]
[card]
name=Sudden Breakthrough
target=creature
auto=transforms((,newability[2/0],newability[first strike])) ueot
auto=token(Treasure Sur)
text=Target creature gets +2/+0 and gains first strike until end of turn. -- Create a Treasure token. (It's an artifact with " {T}, Sacrifice this artifact: Add one mana of any color.")
mana={1}{R}
type=Instant
[/card]
[card]
name=Sudden Demise
auto=chooseacolor damage:X all (creature[chosencolor]|battlefield) chooseend
text=Choose a color. Sudden Demise deals X damage to each creature of the chosen color.
@@ -56128,17 +56538,6 @@ power=3
toughness=3
[/card]
[card]
name=Tome Raider
abilities=flying
auto=draw:1
text=Flying -- When Tome Raider enters the battlefield, draw a card.
mana={2}{U}
type=Creature
subtype=Faerie
power=1
toughness=1
[/card]
[card]
name=Tome of Legends
auto=counter(0/0,1,Page) all(this)
auto=@movedto(*[iscommander]|myBattlefield):conunter(0/0,1,Page) all(this)
@@ -56161,6 +56560,28 @@ mana={5}
type=Artifact
[/card]
[card]
name=Tome Raider
abilities=flying
auto=draw:1
text=Flying -- When Tome Raider enters the battlefield, draw a card.
mana={2}{U}
type=Creature
subtype=Faerie
power=1
toughness=1
[/card]
[card]
name=Tome Shredder
abilities=haste
auto={T}{E(*[instant;sorcery]|mygraveyard)}:counter(1/1)
text=Haste -- {T}, Exile an instant or sorcery card from your graveyard: Put a +1/+1 counter on Tome Shredder.
mana={2}{R}
type=Creature
subtype=Wolf
power=2
toughness=2
[/card]
[card]
name=Tomebound Lich
abilities=deathtouch,lifelink
auto=draw:1 && transforms((,newability[target(*|myhand) reject]))
@@ -57321,6 +57742,16 @@ mana={3}
type=Artifact
[/card]
[card]
name=Twinscroll Shaman
abilities=double strike
text=Double strike
mana={2}{R}
type=Creature
subtype=Dwarf Shaman
power=1
toughness=2
[/card]
[card]
name=Twisted Reflection
other={B} name(Entwine)
auto=if paid(alternative) then target(creature) -6/0 ueot && target(creature) swap ueot
@@ -60142,6 +60573,18 @@ mana={4}{W}
type=Sorcery
[/card]
[card]
name=Wandering Archaic
auto=@movedto(*[instant;sorcery]|opponentstack):all(trigger[to]) transforms((,newability[[pay[[{2}]] name(pay 2 mana) donothing?counter(0/0.1.WanderingEffect)])) oneshot
auto=@counteradded(0/0,1,WanderingEffect) from(instant|opponentstack):may name(Copy spell) all(instant[counter{0/0.1.WanderingEffect}]|opponentstack) activate castcard(copied)
auto=@counteradded(0/0,1,WanderingEffect) from(sorcery|opponentstack):may name(Copy spell) all(sorcery[counter{0/0.1.WanderingEffect}]|opponentstack) activate castcard(copied)
text=Whenever an opponent casts an instant or sorcery spell, they may pay {2}. If they don't, you may copy that spell. You may choose new targets for the copy.
mana={5}
type=Creature
subtype=Avatar
power=4
toughness=4
[/card]
[card]
name=Wandering Eye
abilities=flying
auto={0}:Reveal:type:*:opponenthand revealzone(opponenthand) revealtype(*|opponenthand) optionone target(*|reveal) moveto(opponenthand) optiononeend optiontwo name(Put Back) target(*|reveal) transforms((,newability[all(*|reveal) moveto(ownerhand)])) ueot optiontwoend revealend

View File

@@ -29,6 +29,8 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
bool thirddown = false;
bool twice = false;
bool thrice = false;
bool fourtimes = false;
bool fivetimes = false;
bool other = false;//othertype:[subtype]
if (!target) target = card;
@@ -91,7 +93,18 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
size_t tXXX = s.find("thrice");
s.erase(tXXX,tXXX + 6);
}
if(s.find("fourtimes") != string::npos)
{
fourtimes = true;
size_t tXXX = s.find("fourtimes");
s.erase(tXXX,tXXX + 9);
}
if(s.find("fivetimes") != string::npos)
{
fivetimes = true;
size_t tXXX = s.find("fivetimes");
s.erase(tXXX,tXXX + 9);
}
if(s.find("othertype") != string::npos)
{
other = true;
@@ -179,6 +192,11 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
intValue = computeX(spell, card) / 2;
if(intValue < 0) intValue = 0;
}
else if (s == "xxx" || s == "XXX" || s == "thirdpaid")
{
intValue = computeX(spell, card) / 3;
if(intValue < 0) intValue = 0;
}
else if (s == "castx" || s == "Iroas")//calculate castx - devotion to red white
{
intValue = (s == "castx")?card->castX:countDevotionTo(card, card->controller()->inPlay(), Constants::MTG_COLOR_RED, Constants::MTG_COLOR_WHITE);
@@ -1079,6 +1097,10 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
intValue = intValue * 2;
if (thrice)
intValue = intValue * 3;
if (fourtimes)
intValue = intValue * 4;
if (fivetimes)
intValue = intValue * 5;
if (intValue < 0)
{
//we remove "-" at the start and are parsing for real values.