Updated changelog with last 3 years of modifications (issue #1067 by @remigiusz-suwalski), added tokens in ELD set, improved Android downloader for ELD set, fixed primitives with "asflash" ability, improved all cards with adventure: now they become instants or sorceries in stack to activate the correct trigger (e.g. with Magecraft combos), added "nomovetrigger" ability for all the "fake" cards (e.g. cards which are simple abilities) in order to don't trigger any event on their cast since they are not real cards.
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Beanstalk Giant's power and toughness are each equal to the number of lands you control. // Search your library for a basic land card, put it onto the battlefield, then shuffle your library. (Then exile this card. You may cast the creature later from exile.)
text=Beanstalk Giant's power and toughness are each equal to the number of lands you control. // Search your library for a basic land card, put it onto the battlefield, then shuffle your library. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Bonecrusher Giant becomes the target of a spell, Bonecrusher Giant deals 2 damage to that spell's controller. // Damage can't be prevented this turn. Stomp deals 2 damage to any target.
text=Whenever Bonecrusher Giant becomes the target of a spell, Bonecrusher Giant deals 2 damage to that spell's controller. // Damage can't be prevented this turn. Stomp deals 2 damage to any target.
@@ -7614,10 +7614,10 @@ toughness=3
[/card]
[/card]
[card]
[card]
name=Brazen Borrower // Petty Theft
name=Brazen Borrower // Petty Theft
abilities=flash,flying,cloud,adventure
abilities=flying,cloud,flash,adventure,asflash
other={1}{U} name(Adventure)
other={1}{U} name(Adventure)
autostack=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|opponentbattlefield) moveTo(ownerHand)
auto=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|opponentbattlefield) moveTo(ownerHand)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Flash -- Flying -- Brazen Borrower can block only creatures with flying. // Return target nonland permanent an opponent controls to its owner's hand.
text=Flash -- Flying -- Brazen Borrower can block only creatures with flying. // Return target nonland permanent an opponent controls to its owner's hand.
mana={1}{U}{U}
mana={1}{U}{U}
type=Creature
type=Creature
@@ -9779,8 +9779,8 @@ toughness=1
name=Champions of Archery // Join the Group
name=Champions of Archery // Join the Group
abilities=reach,adventure
abilities=reach,adventure
other={2}{R} name(Adventure)
other={2}{R} name(Adventure)
autostack=if paid(alternative) then name(Move to Command Zone) name(Move to Command Zone) target(creature[legendary]|myHand) moveTo(mycommandzone) and!( transforms((,newability[iscommander])) forever )!
auto=if paid(alternative) then name(Move to Command Zone) name(Move to Command Zone) target(creature[legendary]|myHand) moveTo(mycommandzone) and!( transforms((,newability[iscommander])) forever )!
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Reach -- Commanders you control get +X/+0, where X is the number of Commanders you control. // You may put a legendary creature card from your hand into the command zone. It’s also your commander.
text=Reach -- Commanders you control get +X/+0, where X is the number of Commanders you control. // You may put a legendary creature card from your hand into the command zone. It’s also your commander.
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=0]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:0 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:10!$ controller])) ueot
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=0]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:0 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:0 && all(dinosaur[power=0;fresh]|mybattlefield) damage:10!$ controller])) ueot
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=1]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:1 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:10!$ controller])) ueot
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=1]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:1 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:1 && all(dinosaur[power=1;fresh]|mybattlefield) damage:10!$ controller])) ueot
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=2]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:2 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:10!$ controller])) ueot
auto=_DIES_emblem transforms((,newability[@movedto(dinosaur[power=2]|mybattlefield):ability$!name(Choose one) choice name(Don't fight) donothing _ choice name(Fights with another creature with power 0) target(creature[power=0]) damage:2 _ choice name(Fights with another creature with power 1) target(creature[power=1]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:1 _ choice name(Fights with another creature with power 2) target(creature[power=2]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:2 _ choice name(Fights with another creature with power 3) target(creature[power=3]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:3 _ choice name(Fights with another creature with power 4) target(creature[power=4]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:4 _ choice name(Fights with another creature with power 5) target(creature[power=5]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:5 _ choice name(Fights with another creature with power 6) target(creature[power=6]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:6 _ choice name(Fights with another creature with power 7) target(creature[power=7]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:7 _ choice name(Fights with another creature with power 8) target(creature[power=8]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:8 _ choice name(Fights with another creature with power 9) target(creature[power=9]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:9 _ choice name(Fights with another creature with power 10 or more) target(creature[power>=10]) damage:2 && all(dinosaur[power=2;fresh]|mybattlefield) damage:10!$ controller])) ueot
@@ -11447,8 +11447,8 @@ type=Sorcery
name=Collectigull // Only the Best
name=Collectigull // Only the Best
abilities=flying,adventure
abilities=flying,adventure
other={1}{W} name(Adventure)
other={1}{W} name(Adventure)
autostack=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|myGraveyard) moveTo(ownerHand)
auto=if paid(alternative) then name(Return to hand) name(Return to hand) target(*[-land]|myGraveyard) moveTo(ownerHand)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=protection from(*)
auto=protection from(*)
auto=_ATTACKING_draw:1 controller
auto=_ATTACKING_draw:1 controller
text=Flying, protection from common -- Whenever Collectigull attacks, reveal the top card of your library. If it’s a Booster Fun card, you may put it into your hand. // Return target Booster Fun card from your graveyard to your hand.
text=Flying, protection from common -- Whenever Collectigull attacks, reveal the top card of your library. If it’s a Booster Fun card, you may put it into your hand. // Return target Booster Fun card from your graveyard to your hand.
@@ -13503,8 +13503,8 @@ subtype=Aura
name=Curious Pair // Treats to Share
name=Curious Pair // Treats to Share
abilities=adventure
abilities=adventure
other={G} name(Adventure)
other={G} name(Adventure)
autostack=if paid(alternative) then name(Create Food) name(Create Food) token(Food)
auto=if paid(alternative) then name(Create Food) name(Create Food) token(Food)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Create a Food token. (Then exile this card. You may cast the creature later from exile. A Food token is an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")
text=Create a Food token. (Then exile this card. You may cast the creature later from exile. A Food token is an artifact with "{2}, {T}, Sacrifice this artifact: You gain 3 life.")
mana={1}{G}
mana={1}{G}
type=Creature
type=Creature
@@ -14125,7 +14125,7 @@ toughness=2
[/card]
[/card]
[card]
[card]
name=Davriel Conditions
name=Davriel Conditions
abilities=doublefacedeath
abilities=doublefacedeath,nomovetrigger
auto=choice name(You lose six life) life:-6 controller
auto=choice name(You lose six life) life:-6 controller
auto=if type(*|myhand)~equalto~0 then choice name(Exile two cards from your hand) name(Exile two cards from your hand) draw:2 opponent
auto=if type(*|myhand)~equalto~0 then choice name(Exile two cards from your hand) name(Exile two cards from your hand) draw:2 opponent
auto=if type(*|myhand)~equalto~1 then choice name(Exile two cards from your hand) name(Exile two cards from your hand) target(*|myHand) moveto(exile) and!( transforms((,newability[draw:2 opponent])) oneshot )!
auto=if type(*|myhand)~equalto~1 then choice name(Exile two cards from your hand) name(Exile two cards from your hand) target(*|myHand) moveto(exile) and!( transforms((,newability[draw:2 opponent])) oneshot )!
@@ -14140,7 +14140,7 @@ type=Sorcery
[/card]
[/card]
[card]
[card]
name=Davriel Offers
name=Davriel Offers
abilities=doublefacedeath
abilities=doublefacedeath,nomovetrigger
auto=choice name(Draw three cards) draw:3 controller
auto=choice name(Draw three cards) draw:3 controller
auto=choice name(Conjure a Manor Guardian) conjure cards(Manor Guardian) zone(myhand)
auto=choice name(Conjure a Manor Guardian) conjure cards(Manor Guardian) zone(myhand)
auto=choice name(Return two creatures) moverandom(creature) from(mygraveyard) to(myhand) and!( counter(1/1.1.PerpetualPT) )!
auto=choice name(Return two creatures) moverandom(creature) from(mygraveyard) to(myhand) and!( counter(1/1.1.PerpetualPT) )!
@@ -18268,7 +18268,7 @@ toughness=4
[/card]
[/card]
[card]
[card]
name=Edgewall Innkeeper
name=Edgewall Innkeeper
auto=@movedTo(creature[adventure]|myStack):all(trigger[to]) transforms((,newability[ifnot paid(alternative) then draw:1 controller])) oneshot
auto=@movedTo(creature[adventure]|myStack):name(Draw a card) draw:1 controller
text=Whenever you cast a creature spell that has an Adventure, draw a card. (It doesn't need to have gone on the adventure first.)
text=Whenever you cast a creature spell that has an Adventure, draw a card. (It doesn't need to have gone on the adventure first.)
mana={G}
mana={G}
type=Creature
type=Creature
@@ -18875,8 +18875,8 @@ toughness=1
name=Embereth Shieldbreaker // Battle Display
name=Embereth Shieldbreaker // Battle Display
abilities=adventure
abilities=adventure
other={R} name(Adventure)
other={R} name(Adventure)
autostack=if paid(alternative) then name(Destroy artifact) name(Destroy artifact) target(artifact|battlefield) destroy
auto=if paid(alternative) then name(Destroy artifact) name(Destroy artifact) target(artifact|battlefield) destroy
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Destroy target artifact. (Then exile this card. You may cast the creature later from exile.)
text=Destroy target artifact. (Then exile this card. You may cast the creature later from exile.)
text={T}: Add {C}. -- {1}, {T}, Sacrifice Emergence Zone: You may cast spells this turn as though they had flash.
text={T}: Add {C}. -- {1}, {T}, Sacrifice Emergence Zone: You may cast spells this turn as though they had flash.
type=Land
type=Land
[/card]
[/card]
@@ -20689,8 +20689,8 @@ type=Enchantment
name=Fae of Wishes // Granted
name=Fae of Wishes // Granted
abilities=flying,adventure
abilities=flying,adventure
other={3}{U} name(Adventure)
other={3}{U} name(Adventure)
autostack=if paid(alternative) then name(Pick non-creature from sideboard) name(Pick non-creature from sideboard) target(*[-creature]|mysideboard) moveTo(myhand)
auto=if paid(alternative) then name(Pick non-creature from sideboard) name(Pick non-creature from sideboard) target(*[-creature]|mysideboard) moveTo(myhand)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto={1}{U}{D(*|myhand)}{D(*|myhand)}:name(Return to hand) moveTo(ownerhand)
auto={1}{U}{D(*|myhand)}{D(*|myhand)}:name(Return to hand) moveTo(ownerhand)
text=Flying -- {1}{U}, Discard two cards: Return Fae of Wishes to its owner's hand. // You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
text=Flying -- {1}{U}, Discard two cards: Return Fae of Wishes to its owner's hand. // You may choose a noncreature card you own from outside the game, reveal it, and put it into your hand.
mana={1}{U}
mana={1}{U}
@@ -20748,8 +20748,8 @@ toughness=4
name=Faerie Guidemother // Gift of the Fae
name=Faerie Guidemother // Gift of the Fae
abilities=flying,adventure
abilities=flying,adventure
other={1}{W} name(Adventure)
other={1}{W} name(Adventure)
autostack=if paid(alternative) then name(Creature gets 2/1 and flying) name(Creature gets 2/1 and flying) target(creature) transforms((,newability[flying],newability[2/1])) ueot
auto=if paid(alternative) then name(Creature gets 2/1 and flying) name(Creature gets 2/1 and flying) target(creature) transforms((,newability[flying],newability[2/1])) ueot
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Flying // Target creature gets +2/+1 and gains flying until end of turn. (Then exile this card. You may cast the creature later from exile.)
text=Flying // Target creature gets +2/+1 and gains flying until end of turn. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Flaxen Intruder deals combat damage to a player, you may sacrifice it. When you do, destroy target artifact or enchantment. // Create three 2/2 green Bear creature tokens. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Flaxen Intruder deals combat damage to a player, you may sacrifice it. When you do, destroy target artifact or enchantment. // Create three 2/2 green Bear creature tokens. (Then exile this card. You may cast the creature later from exile.)
mana={G}
mana={G}
@@ -23260,11 +23260,11 @@ toughness=2
[/card]
[/card]
[card]
[card]
name=Foulmire Knight // Profane Insight
name=Foulmire Knight // Profane Insight
abilities=deathtouch,flash,adventure
abilities=deathtouch,adventure,asflash
restriction=can play creature
restriction=can play creature
other={2}{B} name(Adventure)
other={2}{B} name(Adventure)
autostack=if paid(alternative) then name(Draw 1 and opponent looses 1 life) name(Draw 1 and opponent looses 1 life) draw:1 controller && life:-1 controller
auto=if paid(alternative) then name(Draw 1 and opponent looses 1 life) name(Draw 1 and opponent looses 1 life) draw:1 controller && life:-1 controller
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Deathtouch // You draw a card and you lose 1 life. (Then exile this card. You may cast the creature later from exile.)
text=Deathtouch // You draw a card and you lose 1 life. (Then exile this card. You may cast the creature later from exile.)
text=Whenever you cast a creature spell that has an Adventure, Garenbrig Squire gets +1/+1 until end of turn. (It doesn't need to have gone on the adventure first.)
text=Whenever you cast a creature spell that has an Adventure, Garenbrig Squire gets +1/+1 until end of turn. (It doesn't need to have gone on the adventure first.)
mana={1}{G}
mana={1}{G}
type=Creature
type=Creature
@@ -24826,11 +24826,11 @@ toughness=1
[/card]
[/card]
[card]
[card]
name=Giant Killer // Chop Down
name=Giant Killer // Chop Down
abilities=flash,adventure
abilities=adventure,asflash
restriction=can play creature
restriction=can play creature
other={2}{W} name(Adventure)
other={2}{W} name(Adventure)
autostack=if paid(alternative) then name(Destroy creature) name(Destroy creature) target(creature[power>=4]|battlefield) destroy
auto=if paid(alternative) then name(Destroy creature) name(Destroy creature) target(creature[power>=4]|battlefield) destroy
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto={1}{W}{T}:target(creature) tap(noevent)
auto={1}{W}{T}:target(creature) tap(noevent)
text={1}{W}, {T}: Tap target creature. // Destroy target creature with power 4 or greater. (Then exile this card. You may cast the creature later from exile.)
text={1}{W}, {T}: Tap target creature. // Destroy target creature with power 4 or greater. (Then exile this card. You may cast the creature later from exile.)
mana={W}
mana={W}
@@ -30593,11 +30593,11 @@ type=Sorcery
[/card]
[/card]
[card]
[card]
name=Hypnotic Sprite // Mesmeric Glare
name=Hypnotic Sprite // Mesmeric Glare
abilities=flying,flash,adventure
abilities=flying,adventure,asflash
restriction=can play creature
restriction=can play creature
other={2}{U} name(Adventure)
other={2}{U} name(Adventure)
autostack=if paid(alternative) then name(Counter spell) name(Counter spell) target(*[manacost<=3]|stack) fizzle
auto=if paid(alternative) then name(Counter spell) name(Counter spell) target(*[manacost<=3]|stack) fizzle
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Flying // Counter target spell with converted mana cost 3 or less. (Then exile this card. You may cast the creature later from exile.)
text=Flying // Counter target spell with converted mana cost 3 or less. (Then exile this card. You may cast the creature later from exile.)
text=Flash -- You may cast Secret Lair spells as though they had flash. -- Secret Lair spells you cast cost {1} less to cast.
text=Flash -- You may cast Secret Lair spells as though they had flash. -- Secret Lair spells you cast cost {1} less to cast.
mana={1}{U}
mana={1}{U}
@@ -37492,8 +37492,8 @@ type=Instant
name=Lonesome Unicorn // Rider in Need
name=Lonesome Unicorn // Rider in Need
abilities=vigilance,adventure
abilities=vigilance,adventure
other={2}{W} name(Adventure)
other={2}{W} name(Adventure)
autostack=if paid(alternative) then name(Create knight) name(Create knight) token(Knight,creature Knight,2/2,white,vigilance)
auto=if paid(alternative) then name(Create knight) name(Create knight) token(Knight,creature Knight,2/2,white,vigilance)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Vigilance // Create a 2/2 white Knight creature token with vigilance. (Then exile this card. You may cast the creature later from exile.)
text=Vigilance // Create a 2/2 white Knight creature token with vigilance. (Then exile this card. You may cast the creature later from exile.)
mana={4}{W}
mana={4}{W}
type=Creature
type=Creature
@@ -37810,8 +37810,8 @@ type=Land
name=Lovestruck Beast // Heart's Desire
name=Lovestruck Beast // Heart's Desire
abilities=adventure
abilities=adventure
other={G} name(Adventure)
other={G} name(Adventure)
autostack=if paid(alternative) then name(Create human) name(Create human) token(Human,Creature Human,1/1,white)
auto=if paid(alternative) then name(Create human) name(Create human) token(Human,Creature Human,1/1,white)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=@each my combatbegins:if type(creature[power=1]|mybattlefield)~lessthan~1 then cantattack ueot
auto=@each my combatbegins:if type(creature[power=1]|mybattlefield)~lessthan~1 then cantattack ueot
auto=@each my combatbegins:if type(creature[toughness=1]|mybattlefield)~lessthan~1 then cantattack ueot
auto=@each my combatbegins:if type(creature[toughness=1]|mybattlefield)~lessthan~1 then cantattack ueot
text=Lovestruck Beast can't attack unless you control a 1/1 creature. // Create a 1/1 white Human creature token. (Then exile this card. You may cast the creature later from exile.)
text=Lovestruck Beast can't attack unless you control a 1/1 creature. // Create a 1/1 white Human creature token. (Then exile this card. You may cast the creature later from exile.)
@@ -39663,12 +39663,12 @@ toughness=4
[/card]
[/card]
[card]
[card]
name=Merchant of the Vale // Haggle
name=Merchant of the Vale // Haggle
abilities=flash,adventure
abilities=adventure,asflash
restriction=can play creature
restriction=can play creature
other={R} name(Adventure)
other={R} name(Adventure)
autostack=if paid(alternative) then may name(Discard and draw) reject notatarget(*|myhand) and!( draw:1 controller )
auto=if paid(alternative) then may name(Discard and draw) reject notatarget(*|myhand) and!( draw:1 controller )
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto={2}{R}{D(*|myhand)}:draw:1
auto={2}{R}{D(*|myhand)}:name(Draw a card) draw:1
text={2}{R}, Discard a card: Draw a card. // You may discard a card. If you do, draw a card. (Then exile this card. You may cast the creature later from exile.)
text={2}{R}, Discard a card: Draw a card. // You may discard a card. If you do, draw a card. (Then exile this card. You may cast the creature later from exile.)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Target player puts the top four cards of their library into their graveyard. (Then exile this card. You may cast the creature later from exile.)
text=Target player puts the top four cards of their library into their graveyard. (Then exile this card. You may cast the creature later from exile.)
mana={U}
mana={U}
type=Creature
type=Creature
@@ -41278,12 +41278,12 @@ type=Enchantment
[/card]
[/card]
[card]
[card]
name=Murderous Rider // Swift End
name=Murderous Rider // Swift End
abilities=flash,lifelink,adventure
abilities=lifelink,adventure,asflash
restriction=can play creature
restriction=can play creature
other={1}{B}{B} name(Adventure)
other={1}{B}{B} name(Adventure)
autostack=if paid(alternative) then name(Destroy creature or planeswalker) name(Destroy creature or planeswalker) target(creature,planeswalker) destroy
auto=if paid(alternative) then name(Destroy creature or planeswalker) name(Destroy creature or planeswalker) target(creature,planeswalker) destroy
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=_DIES_name(Put on the bottom of library) all(trigger[to]) bottomoflibrary
auto=_DIES_name(Put on the bottom of library) all(trigger[to]) bottomoflibrary
text=Lifelink -- When Murderous Rider dies, put it on the bottom of its owner's library. // Destroy target creature or planeswalker. You lose 2 life. (Then exile this card. You may cast the creature later from exile.)
text=Lifelink -- When Murderous Rider dies, put it on the bottom of its owner's library. // Destroy target creature or planeswalker. You lose 2 life. (Then exile this card. You may cast the creature later from exile.)
text=Flying -- Each creature you control that has an Adventure enters the battlefield with an additional +1/+1 counter on it. (It doesn't need to have gone on the adventure first.)
text=Flying -- Each creature you control that has an Adventure enters the battlefield with an additional +1/+1 counter on it. (It doesn't need to have gone on the adventure first.)
mana={2}{W}
mana={2}{W}
type=Creature
type=Creature
@@ -44448,8 +44448,8 @@ type=Instant
name=Order of Midnight // Alter Fate
name=Order of Midnight // Alter Fate
abilities=flying,cantblock,adventure
abilities=flying,cantblock,adventure
other={1}{B} name(Adventure)
other={1}{B} name(Adventure)
autostack=if paid(alternative) then name(Return creature from graveyard) name(Return creature from graveyard) target(creature|mygraveyard) moveto(myhand)
auto=if paid(alternative) then name(Return creature from graveyard) name(Return creature from graveyard) target(creature|mygraveyard) moveto(myhand)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Flying -- Order of Midnight can't block. // Return target creature card from your graveyard to your hand. (Then exile this card. You may cast the creature later from exile.)
text=Flying -- Order of Midnight can't block. // Return target creature card from your graveyard to your hand. (Then exile this card. You may cast the creature later from exile.)
mana={1}{B}
mana={1}{B}
type=Creature
type=Creature
@@ -48273,8 +48273,8 @@ toughness=3
name=Queen of Ice // Rage of Winter
name=Queen of Ice // Rage of Winter
abilities=adventure
abilities=adventure
other={1}{U} name(Adventure)
other={1}{U} name(Adventure)
autostack=if paid(alternative) then name(Freeze creature) name(Freeze creature) target(creature|battlefield) freeze
auto=if paid(alternative) then name(Freeze creature) name(Freeze creature) target(creature|battlefield) freeze
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Whenever Queen of Ice deals combat damage to a creature, tap that creature. It doesn't untap during its controller's next untap step. // Tap target creature. It doesn't untap during its controller's next untap step. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Queen of Ice deals combat damage to a creature, tap that creature. It doesn't untap during its controller's next untap step. // Tap target creature. It doesn't untap during its controller's next untap step. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Reaper of Night attacks, if defending player has two or fewer cards in hand, it gains flying until end of turn. // Target opponent discards two cards. (Then exile this card. You may cast the creature later from exile.)
text=Whenever Reaper of Night attacks, if defending player has two or fewer cards in hand, it gains flying until end of turn. // Target opponent discards two cards. (Then exile this card. You may cast the creature later from exile.)
mana={5}{B}{B}
mana={5}{B}{B}
@@ -51041,11 +51041,11 @@ subtype=Forest Island
[/card]
[/card]
[card]
[card]
name=Rimrock Knight // Boulder Rush
name=Rimrock Knight // Boulder Rush
abilities=cantblock,flash,adventure
abilities=cantblock,adventure,asflash
restriction=can play creature
restriction=can play creature
other={R} name(Adventure)
other={R} name(Adventure)
autostack=if paid(alternative) then name(Creature gets 2/0) target(creature|battlefield) 2/0 ueot
auto=if paid(alternative) then name(Creature gets 2/0) target(creature|battlefield) 2/0 ueot
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Rimrock Knight can't block. // Target creature gets +2/+0 until end of turn. (Then exile this card. You may cast the creature later from exile.)
text=Rimrock Knight can't block. // Target creature gets +2/+0 until end of turn. (Then exile this card. You may cast the creature later from exile.)
text=You may cast Aura cards with enchant creature as though they had flash.
text=You may cast Aura cards with enchant creature as though they had flash.
mana={2}{U}
mana={2}{U}
type=Creature
type=Creature
@@ -51934,8 +51934,8 @@ toughness=4
name=Rosethorn Acolyte // Seasonal Ritual
name=Rosethorn Acolyte // Seasonal Ritual
abilities=adventure
abilities=adventure
other={G} name(Adventure)
other={G} name(Adventure)
autostack=if paid(alternative) then name(Add 1 mana of any color) name(Add 1 mana of any color) transforms((,newability[activatechooseacolor add{chosencolor} activatechooseend])) forever
auto=if paid(alternative) then name(Add 1 mana of any color) name(Add 1 mana of any color) transforms((,newability[activatechooseacolor add{chosencolor} activatechooseend])) forever
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto={T}:add{U}
auto={T}:add{U}
auto={T}:add{B}
auto={T}:add{B}
auto={T}:add{R}
auto={T}:add{R}
@@ -55772,11 +55772,11 @@ toughness=3
[/card]
[/card]
[card]
[card]
name=Shepherd of the Flock // Usher to Safety
name=Shepherd of the Flock // Usher to Safety
abilities=flash,adventure
abilities=adventure,asflash
restriction=can play creature
restriction=can play creature
other={W} name(Adventure)
other={W} name(Adventure)
autostack=if paid(alternative) then name(Return permanent to hand) name(Return permanent to hand) target(*|myBattlefield) moveTo(ownerhand)
auto=if paid(alternative) then name(Return permanent to hand) name(Return permanent to hand) target(*|myBattlefield) moveTo(ownerhand)
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Return target permanent you control to its owner's hand. (Then exile this card. You may cast the creature later from exile.)
text=Return target permanent you control to its owner's hand. (Then exile this card. You may cast the creature later from exile.)
mana={1}{W}
mana={1}{W}
type=Creature
type=Creature
@@ -56671,11 +56671,11 @@ type=Sorcery
[/card]
[/card]
[card]
[card]
name=Silverflame Squire // On Alert
name=Silverflame Squire // On Alert
abilities=flash,adventure
abilities=adventure,asflash
restriction=can play creature
restriction=can play creature
other={2}{W} name(Adventure)
other={2}{W} name(Adventure)
autostack=if paid(alternative) then name(Creature gets 2/2 and untap) name(Creature gets 2/2 and untap) target(creature|battlefield) transforms((,newability[2/2],newability[untap])) ueot
auto=if paid(alternative) then name(Creature gets 2/2 and untap) name(Creature gets 2/2 and untap) target(creature|battlefield) transforms((,newability[2/2],newability[untap])) ueot
autostack=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
auto=if paid(alternative) then transforms((,newability[moveto(exile) and!( transforms((,newability[canplayfromexile])) forever )!])) forever
text=Target creature gets +2/+2 until end of turn. Untap it. (Then exile this card. You may cast the creature later from exile.)
text=Target creature gets +2/+2 until end of turn. Untap it. (Then exile this card. You may cast the creature later from exile.)
mana={1}{W}
mana={1}{W}
type=Creature
type=Creature
@@ -58014,9 +58014,9 @@ type=Sorcery
name=Smitten Swordmaster // Curry Favor
name=Smitten Swordmaster // Curry Favor
abilities=lifelink,adventure
abilities=lifelink,adventure
other={B} name(Adventure)
other={B} name(Adventure)
autostack=if paid(alternative) then name(You gain life) name(You gain life) life:type:knight:mybattlefield controller
auto=if paid(alternative) then name(You gain life) name(You gain life) life:type:knight:mybattlefield controller
text=Whenever you cast a creature spell that has an Adventure, put a +1/+1 counter on Wandermare. (It doesn't need to have gone on the adventure first.)
text=Whenever you cast a creature spell that has an Adventure, put a +1/+1 counter on Wandermare. (It doesn't need to have gone on the adventure first.)
text=If Leyline of Anticipation is in your opening hand, you may begin the game with it on the battlefield. -- You may cast nonland cards as though they had flash. (You may cast them any time you could cast an instant.)
text=If Leyline of Anticipation is in your opening hand, you may begin the game with it on the battlefield. -- You may cast nonland cards as though they had flash. (You may cast them any time you could cast an instant.)
text=You may cast Aura and Equipment spells as though they had flash. -- Whenever an Equipment enters the battlefield under your control, you may attach it to target creature you control.
text=You may cast Aura and Equipment spells as though they had flash. -- Whenever an Equipment enters the battlefield under your control, you may attach it to target creature you control.
text=Each opponent can cast spells only any time they could cast a sorcery. -- +1: Until your next turn, you may cast sorcery spells as though they had flash. -- -3: Return up to one target artifact, creature, or enchantment to its owner's hand. Draw a card.
text=Each opponent can cast spells only any time they could cast a sorcery. -- +1: Until your next turn, you may cast sorcery spells as though they had flash. -- -3: Return up to one target artifact, creature, or enchantment to its owner's hand. Draw a card.
mana={1}{W}{U}
mana={1}{W}{U}
@@ -2844,7 +2844,7 @@ type=Legendary Planeswalker
[card]
[card]
name=Tibalt, Cosmic Impostor
name=Tibalt, Cosmic Impostor
auto=counter(0/0,5,Loyalty)
auto=counter(0/0,5,Loyalty)
auto=token(Tibalt Emblem,Emblem,0/0,shroud,indestructible,notrigger) and!( transforms((,newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) anytypeofmana],newability[{0}:name(Cast from opponent exile) target(*[counter{0/0.1.TibaltExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TibaltExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.TibaltExiled)])) ueot )!])) forever )!
auto=token(Tibalt Emblem,Emblem,0/0,shroud,indestructible,notrigger,nomovetrigger) and!( transforms((,newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) canplayfromexile],newability[lord(*[counter{0/0.1.TibaltExiled}]|myexile) anytypeofmana],newability[{0}:name(Cast from opponent exile) target(*[counter{0/0.1.TibaltExiled}]|opponentexile) moveto(myexile) and!( transforms((,newability[counter(0/0.1.TibaltExiled)],newability[canplayfromexile],newability[anytypeofmana],newability[phaseaction[endofturn once checkex] moveTo(ownerexile)],newability[phaseaction[untap once checkex] counter(0/0.1.TibaltExiled)])) ueot )!])) forever )!
auto={C(0/0,2,Loyalty)}:name(+2: Exile the top card) all(*[zpos=1]|library) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )!
auto={C(0/0,2,Loyalty)}:name(+2: Exile the top card) all(*[zpos=1]|library) moveto(ownerexile) and!( counter(0/0,1,TibaltExiled) )!
auto={C(0/0,-2,Loyalty)}:name(-2: Reveal three and may cast it) reveal:3 optionone name(Get a card) target(<1>creature|reveal) moveTo(exile) and!( transforms((,canplayfromexile)) forever )! optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend
auto={C(0/0,-2,Loyalty)}:name(-2: Reveal three and may cast it) reveal:3 optionone name(Get a card) target(<1>creature|reveal) moveTo(exile) and!( transforms((,canplayfromexile)) forever )! optiononeend optiontwo name(put on bottom) target(<3>*|reveal) bottomoflibrary optiontwoend revealend
text=You may cast creature spells as though they had flash. -- +1: Until your next turn, up to one target creature gains vigilance and reach. -- -2: Look at the top three cards of your library. Exile one face down and put the rest on the bottom of your library in any order. For as long as it remains exiled, you may look at that card and you may cast it if it's a creature card.
text=You may cast creature spells as though they had flash. -- +1: Until your next turn, up to one target creature gains vigilance and reach. -- -2: Look at the top three cards of your library. Exile one face down and put the rest on the bottom of your library in any order. For as long as it remains exiled, you may look at that card and you may cast it if it's a creature card.
p->game->exile->hasType("instant")||p->game->exile->hasAbility(Constants::FLASH)||p->game->commandzone->hasAbility(Constants::FLASH))//Now AI will not search just for instant cards.
p->game->commandzone->hasAbility(Constants::FLASH)||p->game->commandzone->hasAbility(Constants::ASFLASH))//Now AI will not search just for instant cards.
{
{
#ifndef AI_CHANGE_TESTING
#ifndef AI_CHANGE_TESTING
findingCard=true;
findingCard=true;
@@ -3604,22 +3606,22 @@ int AIPlayerBaka::computeActions()
nextCardToPlay=FindCardToPlay(icurrentMana,"");//Now AI will not search just for instant cards.
nextCardToPlay=FindCardToPlay(icurrentMana,"");//Now AI will not search just for instant cards.
"doublefacedeath",//It goes to temp zone after death (e.g. Double face card)
"doublefacedeath",//It goes to temp zone after death (e.g. Double face card)
"gaineddoublefacedeath",//It goes to temp after death (use just to give add ability to instants and sorceries which originally have not, e.g. with transforms keyword)
"gaineddoublefacedeath",//It goes to temp after death (use just to give add ability to instants and sorceries which originally have not, e.g. with transforms keyword)
if(!copy->has(Constants::NOMOVETRIGGER)){//no trigger when playing these cards (e.g. fake ability cards such as Davriel Conditions, Davriel Offers, Annihilation Rooms)
WEvent*e=NEWWEventZoneChange(copy,from,to);
g->receiveEvent(e);
}
// Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones)
// Erasing counters from copy after the event has been triggered (no counter can survive to a zone changing except the perpetual ones)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.