Merge pull request #656 from kevlahnota/master
Manacost Changes, Anyzone for CDA, PayZero Cost
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||||
[card]
|
[card]
|
||||||
name=Aeon Chronicler
|
name=Aeon Chronicler
|
||||||
auto=phandcount/phandcount cdaactive
|
anyzone=phandcount/phandcount cdaactive
|
||||||
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:draw:1
|
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:draw:1
|
||||||
suspend(0)={X}{3}{U}
|
suspend(0)={X}{3}{U}
|
||||||
text=Aeon Chronicler's power and toughness are each equal to the number of cards in your hand. -- Suspend X - {X}{3}{U}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{3}{U} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Aeon Chronicler while it's exiled, draw a card.
|
text=Aeon Chronicler's power and toughness are each equal to the number of cards in your hand. -- Suspend X - {X}{3}{U}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{3}{U} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Aeon Chronicler while it's exiled, draw a card.
|
||||||
@@ -878,7 +878,7 @@ type=Instant
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Adamaro, First to Desire
|
name=Adamaro, First to Desire
|
||||||
auto=type:*:opponenthand/type:*:opponenthand cdaactive
|
anyzone=type:*:opponenthand/type:*:opponenthand cdaactive
|
||||||
text=Adamaro, First to Desire's power and toughness are each equal to the number of cards in the hand of the opponent with the most cards in hand.
|
text=Adamaro, First to Desire's power and toughness are each equal to the number of cards in the hand of the opponent with the most cards in hand.
|
||||||
mana={1}{R}{R}
|
mana={1}{R}{R}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -1493,7 +1493,7 @@ subtype=Ajani
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Avatar Token
|
name=Avatar Token
|
||||||
auto=lifetotal/lifetotal cdaactive
|
anyzone=lifetotal/lifetotal cdaactive
|
||||||
type=Creature
|
type=Creature
|
||||||
subtype=Avatar
|
subtype=Avatar
|
||||||
power=*
|
power=*
|
||||||
@@ -2351,7 +2351,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Altar Golem
|
name=Altar Golem
|
||||||
abilities=trample,doesnotuntap
|
abilities=trample,doesnotuntap
|
||||||
auto=type:creature:battlefield/type:creature:battlefield cdaactive
|
anyzone=type:creature:battlefield/type:creature:battlefield cdaactive
|
||||||
auto={T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}:untap
|
auto={T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}{T(creature|myBattlefield)}:untap
|
||||||
text=Trample -- Altar Golem's power and toughness are each equal to the number of creatures on the battlefield. -- Altar Golem doesn't untap during your untap step. -- Tap five untapped creatures you control: Untap Altar Golem.
|
text=Trample -- Altar Golem's power and toughness are each equal to the number of creatures on the battlefield. -- Altar Golem doesn't untap during your untap step. -- Tap five untapped creatures you control: Untap Altar Golem.
|
||||||
mana={7}
|
mana={7}
|
||||||
@@ -2937,7 +2937,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Ancient Ooze
|
name=Ancient Ooze
|
||||||
auto=pancientooze/pancientooze cdaactive
|
anyzone=pancientooze/pancientooze cdaactive
|
||||||
text=Ancient Ooze's power and toughness are each equal to the total converted mana cost of other creatures you control.
|
text=Ancient Ooze's power and toughness are each equal to the total converted mana cost of other creatures you control.
|
||||||
mana={5}{G}{G}
|
mana={5}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -8068,7 +8068,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Battle Squadron
|
name=Battle Squadron
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:creature:myBattlefield/type:creature:myBattlefield cdaactive
|
anyzone=type:creature:myBattlefield/type:creature:myBattlefield cdaactive
|
||||||
text=Flying -- Battle Squadron's power and toughness are each equal to the number of creatures you control.
|
text=Flying -- Battle Squadron's power and toughness are each equal to the number of creatures you control.
|
||||||
mana={3}{R}{R}
|
mana={3}{R}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -8381,7 +8381,7 @@ type=Enchantment
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Beast of Burden
|
name=Beast of Burden
|
||||||
auto=type:creature:Battlefield/type:creature:Battlefield cdaactive
|
anyzone=type:creature:Battlefield/type:creature:Battlefield cdaactive
|
||||||
text=Beast of Burden's power and toughness are each equal to the number of creatures on the battlefield.
|
text=Beast of Burden's power and toughness are each equal to the number of creatures on the battlefield.
|
||||||
mana={6}
|
mana={6}
|
||||||
type=Artifact Creature
|
type=Artifact Creature
|
||||||
@@ -8671,7 +8671,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Benalish Commander
|
name=Benalish Commander
|
||||||
auto=type:soldier:mybattlefield/type:soldier:mybattlefield cdaactive
|
anyzone=type:soldier:mybattlefield/type:soldier:mybattlefield cdaactive
|
||||||
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:token(Soldier,Creature Soldier,1/1,white)
|
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:token(Soldier,Creature Soldier,1/1,white)
|
||||||
suspend(0)={X}{W}{W}
|
suspend(0)={X}{W}{W}
|
||||||
text=Benalish Commander's power and toughness are each equal to the number of Soldiers you control. -- Suspend X - {X}{W}{W}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{W}{W} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Benalish Commander while it's exiled, put a 1/1 white Soldier creature token onto the battlefield.
|
text=Benalish Commander's power and toughness are each equal to the number of Soldiers you control. -- Suspend X - {X}{W}{W}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{W}{W} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Benalish Commander while it's exiled, put a 1/1 white Soldier creature token onto the battlefield.
|
||||||
@@ -11580,7 +11580,8 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Boneyard Wurm
|
name=Boneyard Wurm
|
||||||
auto=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
||||||
text=Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.
|
text=Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.
|
||||||
mana={1}{G}
|
mana={1}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -12926,7 +12927,7 @@ toughness=4
|
|||||||
[card]
|
[card]
|
||||||
name=Broodstar
|
name=Broodstar
|
||||||
abilities=affinityartifacts,flying
|
abilities=affinityartifacts,flying
|
||||||
auto=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
anyzone=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
||||||
text=Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.) -- Flying -- Broodstar's power and toughness are each equal to the number of artifacts you control.
|
text=Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.) -- Flying -- Broodstar's power and toughness are each equal to the number of artifacts you control.
|
||||||
mana={8}{U}{U}
|
mana={8}{U}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -14097,8 +14098,9 @@ type=Sorcery
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Cantivore
|
name=Cantivore
|
||||||
|
alias=001100
|
||||||
abilities=vigilance
|
abilities=vigilance
|
||||||
auto=type:enchantment:graveyard/type:enchantment:graveyard cdaactive
|
anyzone=type:enchantment:graveyard/type:enchantment:graveyard cdaactive
|
||||||
text=Vigilance -- Cantivore's power and toughness are each equal to the number of enchantment cards in all graveyards.
|
text=Vigilance -- Cantivore's power and toughness are each equal to the number of enchantment cards in all graveyards.
|
||||||
mana={1}{W}{W}
|
mana={1}{W}{W}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -18065,8 +18067,9 @@ type=Instant
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Cognivore
|
name=Cognivore
|
||||||
|
alias=001100
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:instant:graveyard/type:instant:graveyard cdaactive
|
anyzone=type:instant:graveyard/type:instant:graveyard cdaactive
|
||||||
text=Flying -- Cognivore's power and toughness are each equal to the number of instant cards in all graveyards.
|
text=Flying -- Cognivore's power and toughness are each equal to the number of instant cards in all graveyards.
|
||||||
mana={6}{U}{U}
|
mana={6}{U}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -18086,7 +18089,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Coiling Woodworm
|
name=Coiling Woodworm
|
||||||
auto=type:forest:battlefield/1 cdaactive
|
anyzone=type:forest:battlefield/1 cdaactive
|
||||||
text=Coiling Woodworm's power is equal to the number of Forests on the battlefield.
|
text=Coiling Woodworm's power is equal to the number of Forests on the battlefield.
|
||||||
mana={2}{G}
|
mana={2}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -20220,7 +20223,7 @@ toughness=4
|
|||||||
[card]
|
[card]
|
||||||
name=Crowd of Cinders
|
name=Crowd of Cinders
|
||||||
abilities=fear
|
abilities=fear
|
||||||
auto=type:*[black]:myBattlefield/type:*[black]:myBattlefield cdaactive
|
anyzone=type:*[black]:myBattlefield/type:*[black]:myBattlefield cdaactive
|
||||||
text=Fear (This creature can't be blocked except by artifact creatures and/or black creatures.) -- Crowd of Cinders's power and toughness are each equal to the number of black permanents you control.
|
text=Fear (This creature can't be blocked except by artifact creatures and/or black creatures.) -- Crowd of Cinders's power and toughness are each equal to the number of black permanents you control.
|
||||||
mana={3}{B}
|
mana={3}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -20455,7 +20458,7 @@ type=Enchantment
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Crusader of Odric
|
name=Crusader of Odric
|
||||||
auto=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
anyzone=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
||||||
text=Crusader of Odric's power and toughness are each equal to the number of creatures you control.
|
text=Crusader of Odric's power and toughness are each equal to the number of creatures you control.
|
||||||
mana={2}{W}
|
mana={2}{W}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -21338,7 +21341,7 @@ subtype=Aura
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Dakkon Blackblade
|
name=Dakkon Blackblade
|
||||||
auto=type:land:myBattlefield/type:land:myBattlefield cdaactive
|
anyzone=type:land:myBattlefield/type:land:myBattlefield cdaactive
|
||||||
text=Dakkon Blackblade's power and toughness are each equal to the number of lands you control.
|
text=Dakkon Blackblade's power and toughness are each equal to the number of lands you control.
|
||||||
mana={2}{W}{U}{U}{B}
|
mana={2}{W}{U}{U}{B}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -21401,7 +21404,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Dakmor Sorceress
|
name=Dakmor Sorceress
|
||||||
auto=type:swamp:myBattlefield/4 cdaactive
|
anyzone=type:swamp:myBattlefield/4 cdaactive
|
||||||
text=Dakmor Sorceress's power is equal to the number of Swamps you control.
|
text=Dakmor Sorceress's power is equal to the number of Swamps you control.
|
||||||
mana={5}{B}
|
mana={5}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -21917,7 +21920,7 @@ type=Artifact
|
|||||||
[card]
|
[card]
|
||||||
name=Darksteel Juggernaut
|
name=Darksteel Juggernaut
|
||||||
abilities=mustattack,indestructible
|
abilities=mustattack,indestructible
|
||||||
auto=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
anyzone=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
||||||
text=Darksteel Juggernaut's power and toughness are equal to the number of artifacts you control. -- Darksteel Juggernaut is indestructible and attacks each turn if able.
|
text=Darksteel Juggernaut's power and toughness are equal to the number of artifacts you control. -- Darksteel Juggernaut is indestructible and attacks each turn if able.
|
||||||
mana={5}
|
mana={5}
|
||||||
type=Artifact Creature
|
type=Artifact Creature
|
||||||
@@ -22113,7 +22116,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Dauntless Dourbark
|
name=Dauntless Dourbark
|
||||||
auto=pdauntless/pdauntless cdaactive
|
anyzone=pdauntless/pdauntless cdaactive
|
||||||
auto=aslongas(other treefolk|myBattlefield) trample
|
auto=aslongas(other treefolk|myBattlefield) trample
|
||||||
text=Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control. -- Dauntless Dourbark has trample as long as you control another Treefolk.
|
text=Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control. -- Dauntless Dourbark has trample as long as you control another Treefolk.
|
||||||
mana={3}{G}
|
mana={3}{G}
|
||||||
@@ -22257,7 +22260,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Dauthi Warlord
|
name=Dauthi Warlord
|
||||||
abilities=shadow
|
abilities=shadow
|
||||||
auto=type:creature[shadow]:battlefield/1 cdaactive
|
anyzone=type:creature[shadow]:battlefield/1 cdaactive
|
||||||
text=Shadow (This creature can block or be blocked by only creatures with shadow.) -- Dauthi Warlord's power is equal to the number of creatures with shadow on the battlefield.
|
text=Shadow (This creature can block or be blocked by only creatures with shadow.) -- Dauthi Warlord's power is equal to the number of creatures with shadow on the battlefield.
|
||||||
mana={1}{B}
|
mana={1}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -24371,7 +24374,8 @@ text=Destroy target artifact with converted mana cost X. It can't be regenerated
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Detritivore
|
name=Detritivore
|
||||||
auto=type:land[-basic]:opponentgraveyard/type:land[-basic]:opponentgraveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:land[-basic]:opponentgraveyard/type:land[-basic]:opponentgraveyard cdaactive
|
||||||
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:destroy target(land[-basic])
|
autoexile=@counterremoved(0/0,1,Time) from(sourcecard) suspended:destroy target(land[-basic])
|
||||||
suspend(0)={X}{3}{R}
|
suspend(0)={X}{3}{R}
|
||||||
text=Detritivore's power and toughness are each equal to the number of nonbasic land cards in your opponents' graveyards. -- Suspend X - {X}{3}{R}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{3}{R} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Detritivore while it's exiled, destroy target nonbasic land.
|
text=Detritivore's power and toughness are each equal to the number of nonbasic land cards in your opponents' graveyards. -- Suspend X - {X}{3}{R}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{3}{R} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Detritivore while it's exiled, destroy target nonbasic land.
|
||||||
@@ -25844,7 +25848,7 @@ type=Artifact
|
|||||||
[card]
|
[card]
|
||||||
name=Doubtless One
|
name=Doubtless One
|
||||||
auto=spiritlink
|
auto=spiritlink
|
||||||
auto=type:cleric:battlefield/type:cleric:battlefield cdaactive
|
anyzone=type:cleric:battlefield/type:cleric:battlefield cdaactive
|
||||||
text=Doubtless One's power and toughness are each equal to the number of Clerics on the battlefield. -- Whenever Doubtless One deals damage, you gain that much life.
|
text=Doubtless One's power and toughness are each equal to the number of Clerics on the battlefield. -- Whenever Doubtless One deals damage, you gain that much life.
|
||||||
mana={3}{W}
|
mana={3}{W}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -26976,7 +26980,7 @@ toughness=5
|
|||||||
[card]
|
[card]
|
||||||
name=Drift of the Dead
|
name=Drift of the Dead
|
||||||
abilities=defender
|
abilities=defender
|
||||||
auto=type:land[snow]:myBattlefield/type:land[snow]:myBattlefield cdaactive
|
anyzone=type:land[snow]:myBattlefield/type:land[snow]:myBattlefield cdaactive
|
||||||
text=Defender (This creature can't attack.) -- Drift of the Dead's power and toughness are each equal to the number of snow lands you control.
|
text=Defender (This creature can't attack.) -- Drift of the Dead's power and toughness are each equal to the number of snow lands you control.
|
||||||
mana={3}{B}
|
mana={3}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -27335,7 +27339,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Drove of Elves
|
name=Drove of Elves
|
||||||
abilities=opponentshroud
|
abilities=opponentshroud
|
||||||
auto=type:*[green]:myBattlefield/type:*[green]:myBattlefield cdaactive
|
anyzone=type:*[green]:myBattlefield/type:*[green]:myBattlefield cdaactive
|
||||||
text=Drove of Elves's power and toughness are each equal to the number of green permanents you control. -- Drove of Elves can't be the target of spells or abilities your opponents control.
|
text=Drove of Elves's power and toughness are each equal to the number of green permanents you control. -- Drove of Elves can't be the target of spells or abilities your opponents control.
|
||||||
mana={3}{G}
|
mana={3}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -27686,7 +27690,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Dungrove Elder
|
name=Dungrove Elder
|
||||||
abilities=opponentshroud
|
abilities=opponentshroud
|
||||||
auto=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
anyzone=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
||||||
text=Hexproof (This creature can't be the target of spells or abilities your opponents control.) -- Dungrove Elder's power and toughness are each equal to the number of Forests you control.
|
text=Hexproof (This creature can't be the target of spells or abilities your opponents control.) -- Dungrove Elder's power and toughness are each equal to the number of Forests you control.
|
||||||
mana={2}{G}
|
mana={2}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -29051,7 +29055,7 @@ type=Sorcery
|
|||||||
name=Elephant T1
|
name=Elephant T1
|
||||||
type=Creature
|
type=Creature
|
||||||
subtype=Elephant
|
subtype=Elephant
|
||||||
auto=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
||||||
text=This creature's power and toughness are each equal to the number of creature cards in its controller's graveyard.
|
text=This creature's power and toughness are each equal to the number of creature cards in its controller's graveyard.
|
||||||
power=*
|
power=*
|
||||||
toughness=*
|
toughness=*
|
||||||
@@ -30620,7 +30624,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Entropic Specter
|
name=Entropic Specter
|
||||||
auto=type:*:opponenthand/type:*:opponenthand cdaactive
|
anyzone=type:*:opponenthand/type:*:opponenthand cdaactive
|
||||||
auto=@damageof(player) from(this):ability$!name(discard) target(*|myhand) reject!$ controller
|
auto=@damageof(player) from(this):ability$!name(discard) target(*|myhand) reject!$ controller
|
||||||
auto=@damagefoeof(player) from(this):ability$!name(discard) target(*|myhand) reject!$ opponent
|
auto=@damagefoeof(player) from(this):ability$!name(discard) target(*|myhand) reject!$ opponent
|
||||||
text=Flying -- As Entropic Specter enters the battlefield, choose an opponent. -- Entropic Specter's power and toughness are each equal to the number of cards in the chosen player's hand. -- Whenever Entropic Specter deals damage to a player, that player discards a card.
|
text=Flying -- As Entropic Specter enters the battlefield, choose an opponent. -- Entropic Specter's power and toughness are each equal to the number of cards in the chosen player's hand. -- Whenever Entropic Specter deals damage to a player, that player discards a card.
|
||||||
@@ -32256,7 +32260,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Faerie Swarm
|
name=Faerie Swarm
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:*[blue]:myBattlefield/type:*[blue]:myBattlefield cdaactive
|
anyzone=type:*[blue]:myBattlefield/type:*[blue]:myBattlefield cdaactive
|
||||||
text=Flying -- Faerie Swarm's power and toughness are each equal to the number of blue permanents you control.
|
text=Flying -- Faerie Swarm's power and toughness are each equal to the number of blue permanents you control.
|
||||||
mana={3}{U}
|
mana={3}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -37804,7 +37808,7 @@ type=Instant
|
|||||||
name=Geist-Honored Monk
|
name=Geist-Honored Monk
|
||||||
abilities=vigilance
|
abilities=vigilance
|
||||||
auto=token(Spirit,Creature Spirit,1/1,white,flying)*2
|
auto=token(Spirit,Creature Spirit,1/1,white,flying)*2
|
||||||
auto=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
anyzone=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
||||||
text=Vigilance -- Geist-Honored Monk's power and toughness are each equal to the number of creatures you control. -- When Geist-Honored Monk enters the battlefield, put two 1/1 white Spirit creature tokens with flying onto the battlefield.
|
text=Vigilance -- Geist-Honored Monk's power and toughness are each equal to the number of creatures you control. -- When Geist-Honored Monk enters the battlefield, put two 1/1 white Spirit creature tokens with flying onto the battlefield.
|
||||||
mana={3}{W}{W}
|
mana={3}{W}{W}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -41603,7 +41607,7 @@ toughness=3
|
|||||||
[card]
|
[card]
|
||||||
name=Gravecrawler
|
name=Gravecrawler
|
||||||
abilities=cantblock
|
abilities=cantblock
|
||||||
autograveyard=aslongas(zombie|myBattlefield) transforms((,newability[CanPlayFromGraveyard]))
|
autograveyard=aslongas(zombie|myBattlefield) CanPlayFromGraveyard
|
||||||
text=Gravecrawler can't block. -- You may cast Gravecrawler from your graveyard as long as you control a Zombie.
|
text=Gravecrawler can't block. -- You may cast Gravecrawler from your graveyard as long as you control a Zombie.
|
||||||
mana={B}
|
mana={B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -44933,7 +44937,7 @@ subtype=Arcane
|
|||||||
[card]
|
[card]
|
||||||
name=Heedless One
|
name=Heedless One
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:elf:battlefield/type:elf:battlefield cdaactive
|
anyzone=type:elf:battlefield/type:elf:battlefield cdaactive
|
||||||
text=Trample -- Heedless One's power and toughness are each equal to the number of Elves on the battlefield.
|
text=Trample -- Heedless One's power and toughness are each equal to the number of Elves on the battlefield.
|
||||||
mana={3}{G}
|
mana={3}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -50066,7 +50070,7 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Jagged-Scar Archers
|
name=Jagged-Scar Archers
|
||||||
auto=type:elf:myBattlefield/type:elf:myBattlefield cdaactive
|
anyzone=type:elf:myBattlefield/type:elf:myBattlefield cdaactive
|
||||||
auto={T}:target(creature[flying]) dynamicability<!powerstrike!>
|
auto={T}:target(creature[flying]) dynamicability<!powerstrike!>
|
||||||
text=Jagged-Scar Archers's power and toughness are each equal to the number of Elves you control. -- {T}: Jagged-Scar Archers deals damage equal to its power to target creature with flying.
|
text=Jagged-Scar Archers's power and toughness are each equal to the number of Elves you control. -- {T}: Jagged-Scar Archers deals damage equal to its power to target creature with flying.
|
||||||
mana={1}{G}{G}
|
mana={1}{G}{G}
|
||||||
@@ -51346,7 +51350,7 @@ abilities=defender
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Kagemaro, First to Suffer
|
name=Kagemaro, First to Suffer
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto={B}{S}:-type:*:myhand/-type:*:myhand all(creature)
|
auto={B}{S}:-type:*:myhand/-type:*:myhand all(creature)
|
||||||
text=Kagemaro, First to Suffer's power and toughness are each equal to the number of cards in your hand. -- {B}, Sacrifice Kagemaro: All creatures get -X/-X until end of turn, where X is the number of cards in your hand.
|
text=Kagemaro, First to Suffer's power and toughness are each equal to the number of cards in your hand. -- {B}, Sacrifice Kagemaro: All creatures get -X/-X until end of turn, where X is the number of cards in your hand.
|
||||||
mana={3}{B}{B}
|
mana={3}{B}{B}
|
||||||
@@ -51417,7 +51421,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Kalonian Twingrove
|
name=Kalonian Twingrove
|
||||||
auto=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
anyzone=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
||||||
auto=token(-383290)
|
auto=token(-383290)
|
||||||
text=Kalonian Twingrove's power and toughness are each equal to the number of Forests you control. -- When Kalonian Twingrove enters the battlefield, put a green Treefolk Warrior creature token onto the battlefield with "this creature's power and toughness are each equal to the number of forests you control."
|
text=Kalonian Twingrove's power and toughness are each equal to the number of Forests you control. -- When Kalonian Twingrove enters the battlefield, put a green Treefolk Warrior creature token onto the battlefield with "this creature's power and toughness are each equal to the number of forests you control."
|
||||||
mana={5}{G}
|
mana={5}{G}
|
||||||
@@ -51428,7 +51432,7 @@ toughness=*
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Treefolk Warrior
|
name=Treefolk Warrior
|
||||||
auto=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
anyzone=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
||||||
text=This creature's power and toughness are each equal to the number of forests you control.
|
text=This creature's power and toughness are each equal to the number of forests you control.
|
||||||
color=green
|
color=green
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -52469,7 +52473,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Keldon Warlord
|
name=Keldon Warlord
|
||||||
auto=type:creature[-wall]:myBattlefield/type:creature[-wall]:myBattlefield cdaactive
|
anyzone=type:creature[-wall]:myBattlefield/type:creature[-wall]:myBattlefield cdaactive
|
||||||
text=Keldon Warlord's power and toughness are each equal to the number of non-Wall creatures you control.
|
text=Keldon Warlord's power and toughness are each equal to the number of non-Wall creatures you control.
|
||||||
mana={2}{R}{R}
|
mana={2}{R}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -53129,7 +53133,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Kithkin Rabble
|
name=Kithkin Rabble
|
||||||
abilities=vigilance
|
abilities=vigilance
|
||||||
auto=type:*[white]:myBattlefield/type:*[white]:myBattlefield cdaactive
|
anyzone=type:*[white]:myBattlefield/type:*[white]:myBattlefield cdaactive
|
||||||
text=Vigilance -- Kithkin Rabble's power and toughness are each equal to the number of white permanents you control.
|
text=Vigilance -- Kithkin Rabble's power and toughness are each equal to the number of white permanents you control.
|
||||||
mana={3}{W}
|
mana={3}{W}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -53253,7 +53257,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Kiyomaro, First to Stand
|
name=Kiyomaro, First to Stand
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto=aslongas(*|myhand) vigilance >3
|
auto=aslongas(*|myhand) vigilance >3
|
||||||
auto=@damaged(creature,player) from(this) restriction{type(*|myhand)~morethan~6}:if type(*|myhand)~morethan~6 then life:7 controller
|
auto=@damaged(creature,player) from(this) restriction{type(*|myhand)~morethan~6}:if type(*|myhand)~morethan~6 then life:7 controller
|
||||||
text=Kiyomaro, First to Stand's power and toughness are each equal to the number of cards in your hand. -- As long as you have four or more cards in hand, Kiyomaro has vigilance. -- Whenever Kiyomaro deals damage, if you have seven or more cards in hand, you gain 7 life.
|
text=Kiyomaro, First to Stand's power and toughness are each equal to the number of cards in your hand. -- As long as you have four or more cards in hand, Kiyomaro has vigilance. -- Whenever Kiyomaro deals damage, if you have seven or more cards in hand, you gain 7 life.
|
||||||
@@ -53756,7 +53760,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Kolaghan Forerunners
|
name=Kolaghan Forerunners
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:creature:mybattlefield/3 cdaactive
|
anyzone=type:creature:mybattlefield/3 cdaactive
|
||||||
other={R}{2} name(Dash)
|
other={R}{2} name(Dash)
|
||||||
auto=if paid(alternative) then transforms((,newability[haste],newability[phaseaction[endofturn sourceinplay] moveto(ownerhand) all(this)])) forever
|
auto=if paid(alternative) then transforms((,newability[haste],newability[phaseaction[endofturn sourceinplay] moveto(ownerhand) all(this)])) forever
|
||||||
text=Trample -- Kolaghan Forerunners's power is equal to the number of creatures you control. -- Dash {2}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)
|
text=Trample -- Kolaghan Forerunners's power is equal to the number of creatures you control. -- Dash {2}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)
|
||||||
@@ -53990,7 +53994,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Korlash Heir to Blackblade
|
name=Korlash Heir to Blackblade
|
||||||
auto={discard(korlash heir to blackblade|myhand)}:moveto(mybattlefield) and!(tap)! target(<upto:2>swamp|mylibrary)
|
auto={discard(korlash heir to blackblade|myhand)}:moveto(mybattlefield) and!(tap)! target(<upto:2>swamp|mylibrary)
|
||||||
auto=type:swamp:mybattlefield/type:swamp:mybattlefield cdaactive
|
anyzone=type:swamp:mybattlefield/type:swamp:mybattlefield cdaactive
|
||||||
auto={1}{B}:regenerate
|
auto={1}{B}:regenerate
|
||||||
text=Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control. -- {1}{B}: Regenerate Korlash. -- Grandeur - Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.
|
text=Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control. -- {1}{B}: Regenerate Korlash. -- Grandeur - Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.
|
||||||
mana={2}{B}{B}
|
mana={2}{B}{B}
|
||||||
@@ -54444,7 +54448,7 @@ subtype=Aura
|
|||||||
[card]
|
[card]
|
||||||
name=Krovikan Mist
|
name=Krovikan Mist
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:illusion:battlefield/type:illusion:battlefield cdaactive
|
anyzone=type:illusion:battlefield/type:illusion:battlefield cdaactive
|
||||||
text=Flying -- Krovikan Mist's power and toughness are each equal to the number of Illusions on the battlefield.
|
text=Flying -- Krovikan Mist's power and toughness are each equal to the number of Illusions on the battlefield.
|
||||||
mana={1}{U}
|
mana={1}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -56072,7 +56076,8 @@ toughness=5
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Lhurgoyf
|
name=Lhurgoyf
|
||||||
auto=type:creature:graveyard/plusonetype:creature:graveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:creature:graveyard/plusonetype:creature:graveyard cdaactive
|
||||||
text=Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1.
|
text=Lhurgoyf's power is equal to the number of creature cards in all graveyards and its toughness is equal to that number plus 1.
|
||||||
mana={2}{G}{G}
|
mana={2}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -57452,7 +57457,8 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Lord of Extinction
|
name=Lord of Extinction
|
||||||
auto=type:*:graveyard/type:*:graveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:*:graveyard/type:*:graveyard cdaactive
|
||||||
text=Lord of Extinction's power and toughness are each equal to the number of cards in all graveyards.
|
text=Lord of Extinction's power and toughness are each equal to the number of cards in all graveyards.
|
||||||
mana={3}{B}{G}
|
mana={3}{B}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -58816,8 +58822,9 @@ toughness=6
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Magnivore
|
name=Magnivore
|
||||||
|
alias=001100
|
||||||
abilities=haste
|
abilities=haste
|
||||||
auto=type:sorcery:graveyard/type:sorcery:graveyard cdaactive
|
anyzone=type:sorcery:graveyard/type:sorcery:graveyard cdaactive
|
||||||
text=Haste (This creature can attack the turn it comes under your control.) -- Magnivore's power and toughness are each equal to the number of sorcery cards in all graveyards.
|
text=Haste (This creature can attack the turn it comes under your control.) -- Magnivore's power and toughness are each equal to the number of sorcery cards in all graveyards.
|
||||||
mana={2}{R}{R}
|
mana={2}{R}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -59639,7 +59646,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Maraxus of Keld
|
name=Maraxus of Keld
|
||||||
auto=type:*[-tapped&-enchantment;-tapped&-planeswalker]/type:*[-tapped&-enchantment;-tapped&-planeswalker] cdaactive
|
anyzone=type:*[-tapped&-enchantment;-tapped&-planeswalker]/type:*[-tapped&-enchantment;-tapped&-planeswalker] cdaactive
|
||||||
text=Maraxus of Keld's power and toughness are each equal to the number of untapped artifacts, creatures, and lands you control.
|
text=Maraxus of Keld's power and toughness are each equal to the number of untapped artifacts, creatures, and lands you control.
|
||||||
mana={4}{R}{R}
|
mana={4}{R}{R}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -60025,7 +60032,7 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Maro
|
name=Maro
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
text=Maro's power and toughness are each equal to the number of cards in your hand.
|
text=Maro's power and toughness are each equal to the number of cards in your hand.
|
||||||
mana={2}{G}{G}
|
mana={2}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -60558,7 +60565,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Master of Etherium
|
name=Master of Etherium
|
||||||
auto=lord(other creature[artifact]|mybattlefield) 1/1
|
auto=lord(other creature[artifact]|mybattlefield) 1/1
|
||||||
auto=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
anyzone=type:artifact:mybattlefield/type:artifact:mybattlefield cdaactive
|
||||||
text=Master of Etherium's power and toughness are each equal to the number of artifacts you control. -- Other artifact creatures you control get +1/+1.
|
text=Master of Etherium's power and toughness are each equal to the number of artifacts you control. -- Other artifact creatures you control get +1/+1.
|
||||||
mana={2}{U}
|
mana={2}{U}
|
||||||
type=Artifact Creature
|
type=Artifact Creature
|
||||||
@@ -60663,7 +60670,7 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Masumaro, First to Live
|
name=Masumaro, First to Live
|
||||||
auto=twicetype:*:myhand/twicetype:*:myhand cdaactive
|
anyzone=twicetype:*:myhand/twicetype:*:myhand cdaactive
|
||||||
text=Masumaro, First to Live's power and toughness are each equal to twice the number of cards in your hand.
|
text=Masumaro, First to Live's power and toughness are each equal to twice the number of cards in your hand.
|
||||||
mana={3}{G}{G}{G}
|
mana={3}{G}{G}{G}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -60673,7 +60680,7 @@ toughness=*
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Matca Rioters
|
name=Matca Rioters
|
||||||
auto=pbasiclandtypes/pbasiclandtypes cdaactive
|
anyzone=pbasiclandtypes/pbasiclandtypes cdaactive
|
||||||
text=Domain - Matca Rioters's power and toughness are each equal to the number of basic land types among lands you control.
|
text=Domain - Matca Rioters's power and toughness are each equal to the number of basic land types among lands you control.
|
||||||
mana={2}{G}
|
mana={2}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -63699,7 +63706,7 @@ toughness=8
|
|||||||
[card]
|
[card]
|
||||||
name=Molimo, Maro-Sorcerer
|
name=Molimo, Maro-Sorcerer
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:land:myBattlefield/type:land:myBattlefield cdaactive
|
anyzone=type:land:myBattlefield/type:land:myBattlefield cdaactive
|
||||||
text=Trample (If this creature would deal enough damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player or planeswalker.) -- Molimo, Maro-Sorcerer's power and toughness are each equal to the number of lands you control.
|
text=Trample (If this creature would deal enough damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player or planeswalker.) -- Molimo, Maro-Sorcerer's power and toughness are each equal to the number of lands you control.
|
||||||
mana={4}{G}{G}{G}
|
mana={4}{G}{G}{G}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -64584,8 +64591,9 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Mortivore
|
name=Mortivore
|
||||||
|
alias=001100
|
||||||
auto={B}:regenerate
|
auto={B}:regenerate
|
||||||
auto=type:creature:graveyard/type:creature:graveyard cdaactive
|
anyzone=type:creature:graveyard/type:creature:graveyard cdaactive
|
||||||
text=Mortivore's power and toughness are each equal to the number of creature cards in all graveyards. -- {B}: Regenerate Mortivore. (The next time this creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)
|
text=Mortivore's power and toughness are each equal to the number of creature cards in all graveyards. -- {B}: Regenerate Mortivore. (The next time this creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)
|
||||||
mana={2}{B}{B}
|
mana={2}{B}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -64980,7 +64988,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Multani, Maro-Sorcerer
|
name=Multani, Maro-Sorcerer
|
||||||
abilities=shroud
|
abilities=shroud
|
||||||
auto=type:*:hand/type:*:hand cdaactive
|
anyzone=type:*:hand/type:*:hand cdaactive
|
||||||
text=Shroud (This permanent can't be the target of spells or abilities.) -- Multani's power and toughness are each equal to the total number of cards in all players' hands.
|
text=Shroud (This permanent can't be the target of spells or abilities.) -- Multani's power and toughness are each equal to the total number of cards in all players' hands.
|
||||||
mana={4}{G}{G}
|
mana={4}{G}{G}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -65793,7 +65801,7 @@ subtype=Shapeshifter
|
|||||||
name=Nameless One
|
name=Nameless One
|
||||||
facedown={3}
|
facedown={3}
|
||||||
autofacedown={2}{U}:morph
|
autofacedown={2}{U}:morph
|
||||||
auto=type:wizard:battlefield/type:wizard:battlefield cdaactive
|
anyzone=type:wizard:battlefield/type:wizard:battlefield cdaactive
|
||||||
text=Nameless One's power and toughness are each equal to the number of Wizards on the battlefield. -- Morph {2}{U} (You may cast this face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)
|
text=Nameless One's power and toughness are each equal to the number of Wizards on the battlefield. -- Morph {2}{U} (You may cast this face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)
|
||||||
mana={3}{U}
|
mana={3}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -67248,7 +67256,7 @@ type=Sorcery
|
|||||||
[card]
|
[card]
|
||||||
name=Nightmare
|
name=Nightmare
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:swamp:mybattlefield/type:swamp:mybattlefield cdaactive
|
anyzone=type:swamp:mybattlefield/type:swamp:mybattlefield cdaactive
|
||||||
text=Flying -- Nightmare's power and toughness are each equal to the number of Swamps you control.
|
text=Flying -- Nightmare's power and toughness are each equal to the number of Swamps you control.
|
||||||
mana={5}{B}
|
mana={5}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -67366,7 +67374,7 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Nightstalker Engine
|
name=Nightstalker Engine
|
||||||
auto=type:creature:myGraveyard/3 cdaactive
|
anyzone=type:creature:myGraveyard/3 cdaactive
|
||||||
text=Nightstalker Engine's power is equal to the number of creature cards in your graveyard.
|
text=Nightstalker Engine's power is equal to the number of creature cards in your graveyard.
|
||||||
mana={4}{B}
|
mana={4}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -70197,7 +70205,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Overbeing of Myth
|
name=Overbeing of Myth
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto=@each my draw:draw:1
|
auto=@each my draw:draw:1
|
||||||
text=Overbeing of Myth's power and toughness are each equal to the number of cards in your hand. -- At the beginning of your draw step, draw an additional card.
|
text=Overbeing of Myth's power and toughness are each equal to the number of cards in your hand. -- At the beginning of your draw step, draw an additional card.
|
||||||
mana={GU}{GU}{GU}{GU}{GU}
|
mana={GU}{GU}{GU}{GU}{GU}
|
||||||
@@ -70450,7 +70458,7 @@ type=Sorcery
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Pack Rat
|
name=Pack Rat
|
||||||
auto=type:rat:mybattlefield/type:rat:mybattlefield cdaactive
|
anyzone=type:rat:mybattlefield/type:rat:mybattlefield cdaactive
|
||||||
auto={2}{B}{discard(*|myhand)}:token(253624)
|
auto={2}{B}{discard(*|myhand)}:token(253624)
|
||||||
text=Pack Rat's power and toughness are each equal to the number of Rats you control. -- {2}{B}, Discard a card: Put a token onto the battlefield that's a copy of Pack Rat.
|
text=Pack Rat's power and toughness are each equal to the number of Rats you control. -- {2}{B}, Discard a card: Put a token onto the battlefield that's a copy of Pack Rat.
|
||||||
mana={1}{B}
|
mana={1}{B}
|
||||||
@@ -70694,7 +70702,7 @@ toughness=4
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Pallimud
|
name=Pallimud
|
||||||
auto=type:land[tapped]:opponentbattlefield/3 cdaactive
|
anyzone=type:land[tapped]:opponentbattlefield/3 cdaactive
|
||||||
text=As Pallimud enters the battlefield, choose an opponent. -- Pallimud's power is equal to the number of tapped lands the chosen player controls.
|
text=As Pallimud enters the battlefield, choose an opponent. -- Pallimud's power is equal to the number of tapped lands the chosen player controls.
|
||||||
mana={2}{R}
|
mana={2}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -71900,7 +71908,7 @@ toughness=6
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Pestilence Rats
|
name=Pestilence Rats
|
||||||
auto=othertype:rat:battlefield/3 cdaactive
|
anyzone=othertype:rat:battlefield/3 cdaactive
|
||||||
text=Pestilence Rats's power is equal to the number of other Rats on the battlefield. (For example, as long as there are two other Rats on the battlefield, Pestilence Rats's power and toughness are 2/3.)
|
text=Pestilence Rats's power is equal to the number of other Rats on the battlefield. (For example, as long as there are two other Rats on the battlefield, Pestilence Rats's power and toughness are 2/3.)
|
||||||
mana={2}{B}
|
mana={2}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -73404,7 +73412,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Plague Rats
|
name=Plague Rats
|
||||||
auto=allmyname/allmyname cdaactive
|
anyzone=allmyname/allmyname cdaactive
|
||||||
text=Plague Rats's power and toughness are each equal to the number of creatures named Plague Rats on the battlefield.
|
text=Plague Rats's power and toughness are each equal to the number of creatures named Plague Rats on the battlefield.
|
||||||
mana={2}{B}
|
mana={2}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -74639,7 +74647,7 @@ subtype=Aura
|
|||||||
[card]
|
[card]
|
||||||
name=Primalcrux
|
name=Primalcrux
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:manag:mybattlefield/type:manag:mybattlefield cdaactive
|
anyzone=type:manag:mybattlefield/type:manag:mybattlefield cdaactive
|
||||||
text=Trample -- Chroma - Primalcrux's power and toughness are each equal to the number of green mana symbols in the mana costs of permanents you control.
|
text=Trample -- Chroma - Primalcrux's power and toughness are each equal to the number of green mana symbols in the mana costs of permanents you control.
|
||||||
mana={G}{G}{G}{G}{G}{G}
|
mana={G}{G}{G}{G}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -75329,7 +75337,7 @@ type=Enchantment
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Psychosis Crawler
|
name=Psychosis Crawler
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto=@drawof(player):life:-1 opponent
|
auto=@drawof(player):life:-1 opponent
|
||||||
text=Psychosis Crawler's power and toughness are each equal to the number of cards in your hand. - Whenever you draw a card, each opponent loses 1 life.
|
text=Psychosis Crawler's power and toughness are each equal to the number of cards in your hand. - Whenever you draw a card, each opponent loses 1 life.
|
||||||
mana={5}
|
mana={5}
|
||||||
@@ -78392,7 +78400,7 @@ toughness=2
|
|||||||
[card]
|
[card]
|
||||||
name=Reckless One
|
name=Reckless One
|
||||||
abilities=haste
|
abilities=haste
|
||||||
auto=type:goblin:battlefield/type:goblin:battlefield cdaactive
|
anyzone=type:goblin:battlefield/type:goblin:battlefield cdaactive
|
||||||
text=Haste -- Reckless One's power and toughness are each equal to the number of Goblins on the battlefield.
|
text=Haste -- Reckless One's power and toughness are each equal to the number of Goblins on the battlefield.
|
||||||
mana={3}{R}
|
mana={3}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -79780,8 +79788,9 @@ type=Artifact
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Revenant
|
name=Revenant
|
||||||
|
alias=001100
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
||||||
text=Flying -- Revenant's power and toughness are each equal to the number of creature cards in your graveyard.
|
text=Flying -- Revenant's power and toughness are each equal to the number of creature cards in your graveyard.
|
||||||
mana={4}{B}
|
mana={4}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -81838,7 +81847,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Rubblehulk
|
name=Rubblehulk
|
||||||
auto=type:land:mybattlefield/type:land:mybattlefield cdaactive
|
anyzone=type:land:mybattlefield/type:land:mybattlefield cdaactive
|
||||||
autohand={1}{R}{G}{discard}:name(bloodrush) target(creature[attacking]) type:land:mybattlefield/type:land:mybattlefield ueot
|
autohand={1}{R}{G}{discard}:name(bloodrush) target(creature[attacking]) type:land:mybattlefield/type:land:mybattlefield ueot
|
||||||
text=Rubblehulk's power and toughness are each equal to the number of lands you control. -- Bloodrush — {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.
|
text=Rubblehulk's power and toughness are each equal to the number of lands you control. -- Bloodrush — {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.
|
||||||
mana={4}{R}{G}
|
mana={4}{R}{G}
|
||||||
@@ -82362,7 +82371,7 @@ type=Artifact
|
|||||||
[card]
|
[card]
|
||||||
name=Rusting Golem
|
name=Rusting Golem
|
||||||
auto=fading:5
|
auto=fading:5
|
||||||
auto=counter{0%0.1.Fade}/counter{0%0.1.Fade} cdaactive
|
anyzone=counter{0%0.1.Fade}/counter{0%0.1.Fade} cdaactive
|
||||||
text=Fading 5 (This creature enters the battlefield with five fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.) -- Rusting Golem's power and toughness are each equal to the number of fade counters on it.
|
text=Fading 5 (This creature enters the battlefield with five fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.) -- Rusting Golem's power and toughness are each equal to the number of fade counters on it.
|
||||||
mana={4}
|
mana={4}
|
||||||
type=Artifact Creature
|
type=Artifact Creature
|
||||||
@@ -84429,7 +84438,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Scion of the Wild
|
name=Scion of the Wild
|
||||||
auto=type:creature:myBattlefield/type:creature:myBattlefield cdaactive
|
anyzone=type:creature:myBattlefield/type:creature:myBattlefield cdaactive
|
||||||
text=Scion of the Wild's power and toughness are each equal to the number of creatures you control.
|
text=Scion of the Wild's power and toughness are each equal to the number of creatures you control.
|
||||||
mana={1}{G}{G}
|
mana={1}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -86546,7 +86555,7 @@ toughness=3
|
|||||||
name=Serpent of the Endless Sea
|
name=Serpent of the Endless Sea
|
||||||
abilities=cantattack
|
abilities=cantattack
|
||||||
auto=aslongas(island|opponentBattlefield) -cantattack
|
auto=aslongas(island|opponentBattlefield) -cantattack
|
||||||
auto=type:island:myBattlefield/type:island:myBattlefield cdaactive
|
anyzone=type:island:myBattlefield/type:island:myBattlefield cdaactive
|
||||||
text=Serpent of the Endless Sea's power and toughness are each equal to the number of Islands you control. -- Serpent of the Endless Sea can't attack unless defending player controls an Island.
|
text=Serpent of the Endless Sea's power and toughness are each equal to the number of Islands you control. -- Serpent of the Endless Sea can't attack unless defending player controls an Island.
|
||||||
mana={4}{U}
|
mana={4}{U}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -86619,7 +86628,7 @@ toughness=1
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Serra Avatar
|
name=Serra Avatar
|
||||||
auto=lifetotal/lifetotal cdaactive
|
anyzone=lifetotal/lifetotal cdaactive
|
||||||
autograveyard=moveTo(ownerlibrary) && shuffle
|
autograveyard=moveTo(ownerlibrary) && shuffle
|
||||||
text=Serra Avatar's power and toughness are each equal to your life total. -- When Serra Avatar is put into a graveyard from anywhere, shuffle it into its owner's library.
|
text=Serra Avatar's power and toughness are each equal to your life total. -- When Serra Avatar is put into a graveyard from anywhere, shuffle it into its owner's library.
|
||||||
mana={4}{W}{W}{W}
|
mana={4}{W}{W}{W}
|
||||||
@@ -89377,7 +89386,7 @@ toughness=5
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Sima Yi, Wei Field Marshal
|
name=Sima Yi, Wei Field Marshal
|
||||||
auto=type:swamp:myBattlefield/4 cdaactive
|
anyzone=type:swamp:myBattlefield/4 cdaactive
|
||||||
text=Sima Yi, Wei Field Marshal's power is equal to the number of Swamps you control.
|
text=Sima Yi, Wei Field Marshal's power is equal to the number of Swamps you control.
|
||||||
mana={5}{B}
|
mana={5}{B}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -90842,7 +90851,7 @@ toughness=3
|
|||||||
[card]
|
[card]
|
||||||
name=Skyshroud War Beast
|
name=Skyshroud War Beast
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:land[-basic]:opponentBattlefield/type:land[-basic]:opponentBattlefield cdaactive
|
anyzone=type:land[-basic]:opponentBattlefield/type:land[-basic]:opponentBattlefield cdaactive
|
||||||
text=Trample -- As Skyshroud War Beast enters the battlefield, choose an opponent. -- Skyshroud War Beast's power and toughness are each equal to the number of nonbasic lands the chosen player controls.
|
text=Trample -- As Skyshroud War Beast enters the battlefield, choose an opponent. -- Skyshroud War Beast's power and toughness are each equal to the number of nonbasic lands the chosen player controls.
|
||||||
mana={1}{G}
|
mana={1}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -90926,7 +90935,8 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Slag Fiend
|
name=Slag Fiend
|
||||||
auto=type:artifact:graveyard/type:artifact:graveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:artifact:graveyard/type:artifact:graveyard cdaactive
|
||||||
text=Slag Fiend's power and toughness are each equal to the number of artifact cards in all graveyards.
|
text=Slag Fiend's power and toughness are each equal to the number of artifact cards in all graveyards.
|
||||||
mana={R}
|
mana={R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -92448,7 +92458,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Soramaro, First to Dream
|
name=Soramaro, First to Dream
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto={4}{H(land|myBattlefield)}:draw:1
|
auto={4}{H(land|myBattlefield)}:draw:1
|
||||||
text=Flying -- Soramaro, First to Dream's power and toughness are each equal to the number of cards in your hand. -- {4}, Return a land you control to its owner's hand: Draw a card.
|
text=Flying -- Soramaro, First to Dream's power and toughness are each equal to the number of cards in your hand. -- {4}, Return a land you control to its owner's hand: Draw a card.
|
||||||
mana={4}{U}{U}
|
mana={4}{U}{U}
|
||||||
@@ -93035,7 +93045,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Soulless One
|
name=Soulless One
|
||||||
auto=pgbzombie/pgbzombie cdaactive
|
anyzone=pgbzombie/pgbzombie cdaactive
|
||||||
text=Soulless One's power and toughness are each equal to the number of Zombies on the battlefield plus the number of Zombie cards in all graveyards.
|
text=Soulless One's power and toughness are each equal to the number of Zombies on the battlefield plus the number of Zombie cards in all graveyards.
|
||||||
mana={3}{B}
|
mana={3}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -93092,7 +93102,7 @@ type=Instant
|
|||||||
[card]
|
[card]
|
||||||
name=Soulsurge Elemental
|
name=Soulsurge Elemental
|
||||||
abilities=first strike
|
abilities=first strike
|
||||||
auto=type:creature:myBattlefield/1 cdaactive
|
anyzone=type:creature:myBattlefield/1 cdaactive
|
||||||
text=First strike -- Soulsurge Elemental's power is equal to the number of creatures you control.
|
text=First strike -- Soulsurge Elemental's power is equal to the number of creatures you control.
|
||||||
mana={3}{R}
|
mana={3}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -93637,7 +93647,7 @@ toughness=1
|
|||||||
[card]
|
[card]
|
||||||
name=Spellheart Chimera
|
name=Spellheart Chimera
|
||||||
abilities=flying,trample
|
abilities=flying,trample
|
||||||
auto=pginstantsorcery/3 cdaactive
|
anyzone=pginstantsorcery/3 cdaactive
|
||||||
text=Flying. -- Trample. -- Spellheart Chimera's power is equal to the number of instant and sorcery cards in your graveyard.
|
text=Flying. -- Trample. -- Spellheart Chimera's power is equal to the number of instant and sorcery cards in your graveyard.
|
||||||
mana={1}{U}{R}
|
mana={1}{U}{R}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -94631,8 +94641,9 @@ color=green
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Splinterfright
|
name=Splinterfright
|
||||||
|
alias=001100
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
anyzone=type:creature:mygraveyard/type:creature:mygraveyard cdaactive
|
||||||
auto=@each my upkeep:deplete:2 controller
|
auto=@each my upkeep:deplete:2 controller
|
||||||
text=Trample -- Splinterfright's power and toughness are each equal to the number of creature cards in your graveyard -- At the beginning of your upkeep, put the top two cards of your library into your graveyard.
|
text=Trample -- Splinterfright's power and toughness are each equal to the number of creature cards in your graveyard -- At the beginning of your upkeep, put the top two cards of your library into your graveyard.
|
||||||
mana={2}{G}
|
mana={2}{G}
|
||||||
@@ -95035,7 +95046,7 @@ type=Enchantment
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Squelching Leeches
|
name=Squelching Leeches
|
||||||
auto=type:swamp:myBattlefield/type:swamp:myBattlefield cdaactive
|
anyzone=type:swamp:myBattlefield/type:swamp:myBattlefield cdaactive
|
||||||
text=Squelching Leeches's power and toughness are each equal to the number of Swamps you control.
|
text=Squelching Leeches's power and toughness are each equal to the number of Swamps you control.
|
||||||
mana={2}{B}{B}
|
mana={2}{B}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -97237,7 +97248,7 @@ toughness=6
|
|||||||
[card]
|
[card]
|
||||||
name=Sturmgeist
|
name=Sturmgeist
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=type:*:myhand/type:*:myhand cdaactive
|
anyzone=type:*:myhand/type:*:myhand cdaactive
|
||||||
auto=@combatdamaged(player) from(this):draw:1 controller
|
auto=@combatdamaged(player) from(this):draw:1 controller
|
||||||
text=Flying -- Sturmgeist's power and toughness are each equal to the number of cards in your hand. -- Whenever Sturmgeist deals combat damage to a player, draw a card.
|
text=Flying -- Sturmgeist's power and toughness are each equal to the number of cards in your hand. -- Whenever Sturmgeist deals combat damage to a player, draw a card.
|
||||||
mana={3}{U}{U}
|
mana={3}{U}{U}
|
||||||
@@ -98406,7 +98417,7 @@ toughness=0
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Swarm of Rats
|
name=Swarm of Rats
|
||||||
auto=type:rat:mybattlefield/1 cdaactive
|
anyzone=type:rat:mybattlefield/1 cdaactive
|
||||||
text=Swarm of Rats's power is equal to the number of Rats you control.
|
text=Swarm of Rats's power is equal to the number of Rats you control.
|
||||||
mana={1}{B}
|
mana={1}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -98894,7 +98905,7 @@ type=Sorcery
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Sylvan Yeti
|
name=Sylvan Yeti
|
||||||
auto=type:*:myhand/4 cdaactive
|
anyzone=type:*:myhand/4 cdaactive
|
||||||
text=Sylvan Yeti's power is equal to the number of cards in your hand.
|
text=Sylvan Yeti's power is equal to the number of cards in your hand.
|
||||||
mana={2}{G}{G}
|
mana={2}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -99087,11 +99098,10 @@ text=Syphon Soul deals 2 damage to each other player. You gain life equal to the
|
|||||||
mana={2}{B}
|
mana={2}{B}
|
||||||
type=Sorcery
|
type=Sorcery
|
||||||
[/card]
|
[/card]
|
||||||
#workaround szadek.
|
|
||||||
[card]
|
[card]
|
||||||
name=Szadek, Lord of Secrets
|
name=Szadek, Lord of Secrets
|
||||||
|
alias=89092
|
||||||
abilities=flying
|
abilities=flying
|
||||||
auto=@combatdamaged(player) from(this):deplete:thatmuch opponent && life:thatmuch opponent && counter(1/1,thatmuch)
|
|
||||||
text=Flying -- If Szadek, Lord of Secrets would deal combat damage to a player, instead put that many +1/+1 counters on Szadek and that player puts that many cards from the top of his or her library into his or her graveyard.
|
text=Flying -- If Szadek, Lord of Secrets would deal combat damage to a player, instead put that many +1/+1 counters on Szadek and that player puts that many cards from the top of his or her library into his or her graveyard.
|
||||||
mana={3}{U}{U}{B}{B}
|
mana={3}{U}{U}{B}{B}
|
||||||
type=Legendary Creature
|
type=Legendary Creature
|
||||||
@@ -99741,7 +99751,7 @@ toughness=7
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Tarmogoyf
|
name=Tarmogoyf
|
||||||
auto=gravecardtypes/plusonegravecardtypes cdaactive
|
anyzone=gravecardtypes/plusonegravecardtypes cdaactive
|
||||||
text=Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. (The card types are artifact, creature, enchantment, instant, land, planeswalker, sorcery, and tribal.)
|
text=Tarmogoyf's power is equal to the number of card types among cards in all graveyards and its toughness is equal to that number plus 1. (The card types are artifact, creature, enchantment, instant, land, planeswalker, sorcery, and tribal.)
|
||||||
mana={1}{G}
|
mana={1}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -100774,8 +100784,9 @@ type=Artifact
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Terravore
|
name=Terravore
|
||||||
|
alias=001100
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:land:graveyard/type:land:graveyard cdaactive
|
anyzone=type:land:graveyard/type:land:graveyard cdaactive
|
||||||
text=Trample -- Terravore's power and toughness are each equal to the number of land cards in all graveyards.
|
text=Trample -- Terravore's power and toughness are each equal to the number of land cards in all graveyards.
|
||||||
mana={1}{G}{G}
|
mana={1}{G}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -100972,6 +100983,18 @@ mana={3}{p(U)}
|
|||||||
type=Sorcery
|
type=Sorcery
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Thada Adel, Acquisitor
|
||||||
|
abilities=islandwalk
|
||||||
|
auto=@combatdamagefoeof(player) from(this):name(exile artifact) notatarget(artifact|opponentlibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[phaseactionmulti[endofturn once] moveto(ownerexile) all(this|exile)])) ueot)!
|
||||||
|
auto=@combatdamageof(player) from(this):name(exile artifact) notatarget(artifact|mylibrary) moveto(myexile) and!( transforms((,newability[canplayfromexile],newability[phaseactionmulti[endofturn once] moveto(ownerexile) all(this|exile)])) ueot)!
|
||||||
|
text=Islandwalk -- Whenever Thada Adel, Acquisitor deals combat damage to a player, search that player's library for an artifact card and exile it. Then that player shuffles his or her library. Until end of turn, you may play that card.
|
||||||
|
mana={1}{U}{U}
|
||||||
|
type=Legendary Creature
|
||||||
|
subtype=Merfolk Rogue
|
||||||
|
power=2
|
||||||
|
toughness=2
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Thalakos Deceiver
|
name=Thalakos Deceiver
|
||||||
abilities=shadow
|
abilities=shadow
|
||||||
auto=@combat(notblocked) source(this):may moveTo(myBattlefield) target(creature|opponentBattlefield) && sacrifice all(this)
|
auto=@combat(notblocked) source(this):may moveTo(myBattlefield) target(creature|opponentBattlefield) && sacrifice all(this)
|
||||||
@@ -102682,7 +102705,7 @@ toughness=5
|
|||||||
[card]
|
[card]
|
||||||
name=Tidewalker
|
name=Tidewalker
|
||||||
auto=foreach(island|myBattlefield) counter(0/0,1,Time) oneshot
|
auto=foreach(island|myBattlefield) counter(0/0,1,Time) oneshot
|
||||||
auto=counter{0%0.1.Time}/counter{0%0.1.Time} cdaactive
|
anyzone=counter{0%0.1.Time}/counter{0%0.1.Time} cdaactive
|
||||||
auto=vanishing:0
|
auto=vanishing:0
|
||||||
text=Tidewalker enters the battlefield with a time counter on it for each Island you control. -- Vanishing (At the beginning of your upkeep, remove a time counter from this permanent. When the last is removed, sacrifice it.) -- Tidewalker's power and toughness are each equal to the number of time counters on it.
|
text=Tidewalker enters the battlefield with a time counter on it for each Island you control. -- Vanishing (At the beginning of your upkeep, remove a time counter from this permanent. When the last is removed, sacrifice it.) -- Tidewalker's power and toughness are each equal to the number of time counters on it.
|
||||||
mana={2}{U}
|
mana={2}{U}
|
||||||
@@ -105849,7 +105872,7 @@ toughness=2
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Uktabi Wildcats
|
name=Uktabi Wildcats
|
||||||
auto=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
anyzone=type:forest:mybattlefield/type:forest:mybattlefield cdaactive
|
||||||
auto={G}{S(forest|myBattlefield)}:regenerate
|
auto={G}{S(forest|myBattlefield)}:regenerate
|
||||||
text=Uktabi Wildcats's power and toughness are each equal to the number of Forests you control. -- {G}, Sacrifice a Forest: Regenerate Uktabi Wildcats.
|
text=Uktabi Wildcats's power and toughness are each equal to the number of Forests you control. -- {G}, Sacrifice a Forest: Regenerate Uktabi Wildcats.
|
||||||
mana={4}{G}
|
mana={4}{G}
|
||||||
@@ -105987,7 +106010,8 @@ type=Artifact
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Umbra Stalker
|
name=Umbra Stalker
|
||||||
auto=type:manab:mygraveyard/type:manab:mygraveyard cdaactive
|
alias=001100
|
||||||
|
anyzone=type:manab:mygraveyard/type:manab:mygraveyard cdaactive
|
||||||
text=Chroma - Umbra Stalker's power and toughness are each equal to the number of black mana symbols in the mana costs of cards in your graveyard.
|
text=Chroma - Umbra Stalker's power and toughness are each equal to the number of black mana symbols in the mana costs of cards in your graveyard.
|
||||||
mana={4}{B}{B}{B}
|
mana={4}{B}{B}{B}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -106105,6 +106129,17 @@ type=Enchantment
|
|||||||
subtype=Aura
|
subtype=Aura
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Undead Alchemist
|
||||||
|
auto=lord(zombie|mybattlefield) libraryeater
|
||||||
|
auto=@movedTo(creature|opponentgraveyard) from(opponentlibrary):all(trigger[to]) moveto(exile) and!(token(Zombie,Creature Zombie,2/2,black) controller)!
|
||||||
|
text=If a Zombie you control would deal combat damage to a player, instead that player puts that many cards from the top of his or her library into his or her graveyard. -- Whenever a creature card is put into an opponent's graveyard from his or her library, exile that card and put a 2/2 black Zombie creature token onto the battlefield.
|
||||||
|
mana={3}{U}
|
||||||
|
type=Creature
|
||||||
|
subtype=Zombie
|
||||||
|
power=4
|
||||||
|
toughness=2
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Undead Executioner
|
name=Undead Executioner
|
||||||
auto=@movedto(this|graveyard) from(battlefield):may target(creature) -2/-2 ueot
|
auto=@movedto(this|graveyard) from(battlefield):may target(creature) -2/-2 ueot
|
||||||
text=When Undead Executioner dies, you may have target creature get -2/-2 until end of turn.
|
text=When Undead Executioner dies, you may have target creature get -2/-2 until end of turn.
|
||||||
@@ -109886,7 +109921,7 @@ toughness=2
|
|||||||
name=Elemental
|
name=Elemental
|
||||||
type=Creature
|
type=Creature
|
||||||
subtype=Elemental
|
subtype=Elemental
|
||||||
auto=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
anyzone=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
||||||
text=This creature's power and toughness are each equal to the number of creature cards in its controller's battlefield.
|
text=This creature's power and toughness are each equal to the number of creature cards in its controller's battlefield.
|
||||||
power=*
|
power=*
|
||||||
toughness=*
|
toughness=*
|
||||||
@@ -112163,7 +112198,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Wayfaring Temple
|
name=Wayfaring Temple
|
||||||
auto=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
anyzone=type:creature:mybattlefield/type:creature:mybattlefield cdaactive
|
||||||
auto=@combatdamaged(player) from(this) restriction{type(creature[token]|mybattlefield)~morethan~0}:name(populate) clone notatarget(creature[token]|mybattlefield)
|
auto=@combatdamaged(player) from(this) restriction{type(creature[token]|mybattlefield)~morethan~0}:name(populate) clone notatarget(creature[token]|mybattlefield)
|
||||||
text=Wayfaring Temple's power and toughness are each equal to the number of creatures you control. -- Whenever Wayfaring Temple deals combat damage to a player, populate. (Put a token onto the battlefield that's a copy of a creature token you control.)
|
text=Wayfaring Temple's power and toughness are each equal to the number of creatures you control. -- Whenever Wayfaring Temple deals combat damage to a player, populate. (Put a token onto the battlefield that's a copy of a creature token you control.)
|
||||||
mana={1}{G}{W}
|
mana={1}{G}{W}
|
||||||
@@ -113235,7 +113270,7 @@ toughness=4
|
|||||||
[card]
|
[card]
|
||||||
name=Wilderness Elemental
|
name=Wilderness Elemental
|
||||||
abilities=trample
|
abilities=trample
|
||||||
auto=type:land[-basic]:opponentbattlefield/3 cdaactive
|
anyzone=type:land[-basic]:opponentbattlefield/3 cdaactive
|
||||||
text=Trample -- Wilderness Elemental's power is equal to the number of nonbasic lands your opponents control.
|
text=Trample -- Wilderness Elemental's power is equal to the number of nonbasic lands your opponents control.
|
||||||
mana={1}{R}{G}
|
mana={1}{R}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -115332,7 +115367,7 @@ type=Legendary Land
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Yavimaya Kavu
|
name=Yavimaya Kavu
|
||||||
auto=type:creature[red]:battlefield/type:creature[green]:battlefield cdaactive
|
anyzone=type:creature[red]:battlefield/type:creature[green]:battlefield cdaactive
|
||||||
text=Yavimaya Kavu's power is equal to the number of red creatures on the battlefield. -- Yavimaya Kavu's toughness is equal to the number of green creatures on the battlefield.
|
text=Yavimaya Kavu's power is equal to the number of red creatures on the battlefield. -- Yavimaya Kavu's toughness is equal to the number of green creatures on the battlefield.
|
||||||
mana={2}{R}{G}
|
mana={2}{R}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
@@ -115754,7 +115789,7 @@ toughness=3
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Zendikar Incarnate
|
name=Zendikar Incarnate
|
||||||
auto=type:land:mybattlefield/4 cdaactive
|
anyzone=type:land:mybattlefield/4 cdaactive
|
||||||
text=Zendikar Incarnate's power is equal to the number of lands you control.
|
text=Zendikar Incarnate's power is equal to the number of lands you control.
|
||||||
mana={2}{R}{G}
|
mana={2}{R}{G}
|
||||||
type=Creature
|
type=Creature
|
||||||
|
|||||||
@@ -12498,6 +12498,7 @@ text=Pyrotechnics deals 4 damage divided as you choose among any number of targe
|
|||||||
mana={4}{R}
|
mana={4}{R}
|
||||||
type=Sorcery
|
type=Sorcery
|
||||||
[/card]
|
[/card]
|
||||||
|
#anyzone is basic for now and used for cdaactive
|
||||||
[card]
|
[card]
|
||||||
name=Qasali Ambusher
|
name=Qasali Ambusher
|
||||||
text=Reach -- If a creature is attacking you and you control a Forest and a Plains, you may cast Qasali Ambusher without paying its mana cost and as though it had flash.
|
text=Reach -- If a creature is attacking you and you control a Forest and a Plains, you may cast Qasali Ambusher without paying its mana cost and as though it had flash.
|
||||||
@@ -12812,6 +12813,7 @@ mana={2}{U}
|
|||||||
type=Enchantment
|
type=Enchantment
|
||||||
subtype=Aura
|
subtype=Aura
|
||||||
[/card]
|
[/card]
|
||||||
|
#needs suspend ability not suspend activated ability
|
||||||
[card]
|
[card]
|
||||||
name=Reality Strobe
|
name=Reality Strobe
|
||||||
text=Return target permanent to its owner's hand. Exile Reality Strobe with three time counters on it. -- Suspend 3 - {2}{U} (Rather than cast this card from your hand, you may pay {2}{U} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)
|
text=Return target permanent to its owner's hand. Exile Reality Strobe with three time counters on it. -- Suspend 3 - {2}{U} (Rather than cast this card from your hand, you may pay {2}{U} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)
|
||||||
@@ -13490,6 +13492,7 @@ subtype=Elemental
|
|||||||
power=3
|
power=3
|
||||||
toughness=2
|
toughness=2
|
||||||
[/card]
|
[/card]
|
||||||
|
#seems possible
|
||||||
[card]
|
[card]
|
||||||
name=Roiling Horror
|
name=Roiling Horror
|
||||||
text=Roiling Horror's power and toughness are each equal to your life total minus the life total of an opponent with the most life. -- Suspend X - {X}{B}{B}{B}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{B}{B}{B} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Roiling Horror while it's exiled, target player loses 1 life and you gain 1 life.
|
text=Roiling Horror's power and toughness are each equal to your life total minus the life total of an opponent with the most life. -- Suspend X - {X}{B}{B}{B}. X can't be 0. (Rather than cast this card from your hand, you may pay {X}{B}{B}{B} and exile it with X time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost. It has haste.) -- Whenever a time counter is removed from Roiling Horror while it's exiled, target player loses 1 life and you gain 1 life.
|
||||||
@@ -13939,6 +13942,7 @@ subtype=Giant Warrior
|
|||||||
power=4
|
power=4
|
||||||
toughness=5
|
toughness=5
|
||||||
[/card]
|
[/card]
|
||||||
|
#modded ingest
|
||||||
[card]
|
[card]
|
||||||
name=Scalpelexis
|
name=Scalpelexis
|
||||||
text=Flying (This creature can't be blocked except by creatures with flying or reach.) -- Whenever Scalpelexis deals combat damage to a player, that player exiles the top four cards of his or her library. If two or more of those cards have the same name, repeat this process.
|
text=Flying (This creature can't be blocked except by creatures with flying or reach.) -- Whenever Scalpelexis deals combat damage to a player, that player exiles the top four cards of his or her library. If two or more of those cards have the same name, repeat this process.
|
||||||
@@ -14093,6 +14097,7 @@ text=Look at the top X cards of target opponent's library. Exile one of those ca
|
|||||||
mana={X}{U}{B}
|
mana={X}{U}{B}
|
||||||
type=Sorcery
|
type=Sorcery
|
||||||
[/card]
|
[/card]
|
||||||
|
#moverandom?
|
||||||
[card]
|
[card]
|
||||||
name=Search for Survivors
|
name=Search for Survivors
|
||||||
text=Reorder your graveyard at random. An opponent chooses a card at random in your graveyard. If it's a creature card, put it onto the battlefield. Otherwise, exile it.
|
text=Reorder your graveyard at random. An opponent chooses a card at random in your graveyard. If it's a creature card, put it onto the battlefield. Otherwise, exile it.
|
||||||
@@ -14480,6 +14485,7 @@ mana={3}{U}
|
|||||||
type=Instant
|
type=Instant
|
||||||
subtype=Arcane
|
subtype=Arcane
|
||||||
[/card]
|
[/card]
|
||||||
|
#phaseactionmulti?
|
||||||
[card]
|
[card]
|
||||||
name=Shifty Doppelganger
|
name=Shifty Doppelganger
|
||||||
text={3}{U}, Exile Shifty Doppelganger: You may put a creature card from your hand onto the battlefield. If you do, that creature gains haste until end of turn. At the beginning of the next end step, sacrifice that creature. If you do, return Shifty Doppelganger to the battlefield.
|
text={3}{U}, Exile Shifty Doppelganger: You may put a creature card from your hand onto the battlefield. If you do, that creature gains haste until end of turn. At the beginning of the next end step, sacrifice that creature. If you do, return Shifty Doppelganger to the battlefield.
|
||||||
@@ -14944,6 +14950,7 @@ type=Enchantment
|
|||||||
subtype=Aura
|
subtype=Aura
|
||||||
text=Enchant creature Enchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card." Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)
|
text=Enchant creature Enchanted creature gets +1/+1 and has "Whenever this creature deals damage to an opponent, you may draw a card." Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)
|
||||||
[/card]
|
[/card]
|
||||||
|
#manaflashback rule
|
||||||
[card]
|
[card]
|
||||||
name=Snapcaster Mage
|
name=Snapcaster Mage
|
||||||
abilities=flash
|
abilities=flash
|
||||||
@@ -16224,12 +16231,6 @@ type=Sorcery
|
|||||||
text=Put a 1/1 colorless Expansion-Symbol creature token into play for each different expansion symbol among permanents you control.
|
text=Put a 1/1 colorless Expansion-Symbol creature token into play for each different expansion symbol among permanents you control.
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Syncopate
|
|
||||||
text=Counter target spell unless its controller pays {X}. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.
|
|
||||||
mana={X}{U}
|
|
||||||
type=Instant
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Synod Artificer
|
name=Synod Artificer
|
||||||
text={X}, {T}: Tap X target noncreature artifacts. -- {X}, {T}: Untap X target noncreature artifacts.
|
text={X}, {T}: Tap X target noncreature artifacts. -- {X}, {T}: Untap X target noncreature artifacts.
|
||||||
mana={2}{U}
|
mana={2}{U}
|
||||||
@@ -16490,15 +16491,6 @@ type=Planeswalker
|
|||||||
subtype=Tezzeret
|
subtype=Tezzeret
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Thada Adel, Acquisitor
|
|
||||||
text=Islandwalk -- Whenever Thada Adel, Acquisitor deals combat damage to a player, search that player's library for an artifact card and exile it. Then that player shuffles his or her library. Until end of turn, you may play that card.
|
|
||||||
mana={1}{U}{U}
|
|
||||||
type=Legendary Creature
|
|
||||||
subtype=Merfolk Rogue
|
|
||||||
power=2
|
|
||||||
toughness=2
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Thalakos Dreamsower
|
name=Thalakos Dreamsower
|
||||||
text=Shadow (This creature can block or be blocked by only creatures with shadow.) -- You may choose not to untap Thalakos Dreamsower during your untap step. -- Whenever Thalakos Dreamsower deals damage to an opponent, tap target creature. That creature doesn't untap during its controller's untap step for as long as Thalakos Dreamsower remains tapped.
|
text=Shadow (This creature can block or be blocked by only creatures with shadow.) -- You may choose not to untap Thalakos Dreamsower during your untap step. -- Whenever Thalakos Dreamsower deals damage to an opponent, tap target creature. That creature doesn't untap during its controller's untap step for as long as Thalakos Dreamsower remains tapped.
|
||||||
mana={2}{U}
|
mana={2}{U}
|
||||||
@@ -17284,17 +17276,6 @@ mana={2}{U}
|
|||||||
type=Sorcery
|
type=Sorcery
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Undead Alchemist
|
|
||||||
auto=@combatdamaged(player) from(zombie|mybattlefield):deplete:thatmuch opponent && life:thatmuch opponent
|
|
||||||
auto=@movedTo(creature|opponentgraveyard) from(opponentlibrary):token(Zombie,Creature Zombie,2/2,black)
|
|
||||||
text=If a Zombie you control would deal combat damage to a player, instead that player puts that many cards from the top of his or her library into his or her graveyard. -- Whenever a creature card is put into an opponent's graveyard from his or her library, exile that card and put a 2/2 black Zombie creature token onto the battlefield.
|
|
||||||
mana={3}{U}
|
|
||||||
type=Creature
|
|
||||||
subtype=Zombie
|
|
||||||
power=4
|
|
||||||
toughness=2
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=Undercity Informer
|
name=Undercity Informer
|
||||||
text={1}, Sacrifice a creature: Target player reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard.
|
text={1}, Sacrifice a creature: Target player reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard.
|
||||||
mana={2}{B}
|
mana={2}{B}
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ public:
|
|||||||
COUNTERS = 30,
|
COUNTERS = 30,
|
||||||
PUT_INTO_PLAY_WITH_KICKER = 31,
|
PUT_INTO_PLAY_WITH_KICKER = 31,
|
||||||
STANDARD_FIZZLER = 32,
|
STANDARD_FIZZLER = 32,
|
||||||
CASTINGRAVEYARD_COST = 33,
|
PAYZERO_COST = 33,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -254,24 +254,7 @@ public:
|
|||||||
bool isTargetter();
|
bool isTargetter();
|
||||||
int cardistargetter;
|
int cardistargetter;
|
||||||
int myconvertedcost;
|
int myconvertedcost;
|
||||||
ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost)
|
ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost);
|
||||||
{
|
|
||||||
if(card->isLand())
|
|
||||||
return oldCost;
|
|
||||||
|
|
||||||
if(!card)
|
|
||||||
return NULL;
|
|
||||||
//i don't know why this method doesn't affect cards in hand, but is working on other zones....//
|
|
||||||
//pay zero costs//
|
|
||||||
//kicker???...//
|
|
||||||
//morph cost todo//
|
|
||||||
//trinisphere must be here below//
|
|
||||||
if(card->has(Constants::TRINISPHERE))
|
|
||||||
for(int jj = oldCost->getConvertedCost(); jj < 3; jj++)
|
|
||||||
oldCost->add(Constants::MTG_COLOR_ARTIFACT, 1);
|
|
||||||
|
|
||||||
return oldCost;
|
|
||||||
};
|
|
||||||
|
|
||||||
void eventattacked();
|
void eventattacked();
|
||||||
void eventattackedAlone();
|
void eventattackedAlone();
|
||||||
|
|||||||
@@ -237,7 +237,8 @@ class Constants
|
|||||||
PAYZERO = 119,
|
PAYZERO = 119,
|
||||||
TRINISPHERE = 120,
|
TRINISPHERE = 120,
|
||||||
CANPLAYFROMEXILE = 121,
|
CANPLAYFROMEXILE = 121,
|
||||||
NB_BASIC_ABILITIES = 122,
|
LIBRARYEATER = 122,
|
||||||
|
NB_BASIC_ABILITIES = 123,
|
||||||
|
|
||||||
|
|
||||||
RARITY_S = 'S', //Special Rarity
|
RARITY_S = 'S', //Special Rarity
|
||||||
|
|||||||
@@ -175,18 +175,21 @@ public:
|
|||||||
virtual MTGMorphCostRule * clone() const;
|
virtual MTGMorphCostRule * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MTGPlayFromGraveyardRule: public MTGAlternativeCostRule
|
class MTGPayZeroRule: public MTGAlternativeCostRule
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||||
int reactToClick(MTGCardInstance * card);
|
int reactToClick(MTGCardInstance * card);
|
||||||
|
string CustomName;
|
||||||
virtual ostream& toString(ostream& out) const;
|
virtual ostream& toString(ostream& out) const;
|
||||||
MTGPlayFromGraveyardRule(GameObserver* observer, int _id);
|
MTGPayZeroRule(GameObserver* observer, int _id);
|
||||||
const string getMenuText()
|
const string getMenuText()
|
||||||
{
|
{
|
||||||
return "Cast Card From Graveyard";
|
if(CustomName.size())
|
||||||
|
return CustomName.c_str();
|
||||||
|
return "Pay Zero To Cast";
|
||||||
}
|
}
|
||||||
virtual MTGPlayFromGraveyardRule * clone() const;
|
virtual MTGPayZeroRule * clone() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -627,6 +627,10 @@ int OrderedAIAction::getEfficiency()
|
|||||||
{
|
{
|
||||||
efficiency += 65;
|
efficiency += 65;
|
||||||
}
|
}
|
||||||
|
else if (dynamic_cast<MTGAlternativeCostRule *>(a))
|
||||||
|
{
|
||||||
|
efficiency += 55;
|
||||||
|
}
|
||||||
SAFE_DELETE(transAbility);
|
SAFE_DELETE(transAbility);
|
||||||
return efficiency;
|
return efficiency;
|
||||||
}
|
}
|
||||||
@@ -1726,6 +1730,310 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
|||||||
cd.setType(type);
|
cd.setType(type);
|
||||||
card = NULL;
|
card = NULL;
|
||||||
gotPayments = vector<MTGAbility*>();
|
gotPayments = vector<MTGAbility*>();
|
||||||
|
//canplayfromgraveyard
|
||||||
|
while ((card = cd.nextmatch(game->graveyard, card))&& card->has(Constants::CANPLAYFROMGRAVEYARD))
|
||||||
|
{
|
||||||
|
if (!CanHandleCost(card->getManaCost(),card))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_LAND))
|
||||||
|
{
|
||||||
|
if (game->playRestrictions->canPutIntoZone(card, game->inPlay) == PlayRestriction::CANT_PLAY)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (game->playRestrictions->canPutIntoZone(card, game->stack) == PlayRestriction::CANT_PLAY)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||||
|
{
|
||||||
|
if(hints->canWeCombo(observer,card,this))
|
||||||
|
{
|
||||||
|
AbilityFactory af(observer);
|
||||||
|
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||||
|
if(!canPlay)
|
||||||
|
continue;
|
||||||
|
nextCardToPlay = card;
|
||||||
|
gotPayments.clear();
|
||||||
|
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker()))
|
||||||
|
gotPayments = canPayMana(nextCardToPlay,nextCardToPlay->getManaCost());
|
||||||
|
return activateCombo();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nextCardToPlay = NULL;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int currentCost = card->getManaCost()->getConvertedCost();
|
||||||
|
int hasX = card->getManaCost()->hasX();
|
||||||
|
gotPayments.clear();
|
||||||
|
if((!pMana->canAfford(card->getManaCost()) || card->getManaCost()->getKicker()))
|
||||||
|
gotPayments = canPayMana(card,card->getManaCost());
|
||||||
|
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||||
|
if ((currentCost > maxCost || hasX) && (gotPayments.size() || pMana->canAfford(card->getManaCost())))
|
||||||
|
{
|
||||||
|
TargetChooserFactory tcf(observer);
|
||||||
|
TargetChooser * tc = tcf.createTargetChooser(card);
|
||||||
|
int shouldPlayPercentage = 0;
|
||||||
|
if (tc)
|
||||||
|
{
|
||||||
|
int hasTarget = chooseTarget(tc,NULL,NULL,true);
|
||||||
|
if(
|
||||||
|
(tc->maxtargets > hasTarget && tc->maxtargets > 1 && !tc->targetMin && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS) ||//target=<3>creature
|
||||||
|
(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS && hasTarget < 1)//target=creatures
|
||||||
|
)
|
||||||
|
hasTarget = 0;
|
||||||
|
if (!hasTarget)//single target covered here.
|
||||||
|
{
|
||||||
|
SAFE_DELETE(tc);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
if(tc->targetMin && hasTarget < tc->maxtargets)
|
||||||
|
shouldPlayPercentage = 0;
|
||||||
|
if(tc->maxtargets > 1 && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS && hasTarget <= tc->maxtargets)
|
||||||
|
{
|
||||||
|
int maxA = hasTarget-tc->maxtargets;
|
||||||
|
shouldPlayPercentage += (10*maxA);//reduce the chances of playing multitarget if we are not above max targets.
|
||||||
|
}
|
||||||
|
if(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 40 + (10*hasTarget);
|
||||||
|
int totalCost = pMana->getConvertedCost()-currentCost;
|
||||||
|
int totalTargets = hasTarget+hasTarget;
|
||||||
|
if(hasX && totalCost <= totalTargets)// {x} spell with unlimited targeting tend to divide damage, we want atleast 1 damage per target before casting.
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SAFE_DELETE(tc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int shouldPlay = effectBadOrGood(card);
|
||||||
|
if (shouldPlay == BAKA_EFFECT_GOOD)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
}
|
||||||
|
else if (BAKA_EFFECT_DONTKNOW == shouldPlay)
|
||||||
|
{
|
||||||
|
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||||
|
//for cards which AI had no idea how to use.
|
||||||
|
shouldPlayPercentage = 60;
|
||||||
|
}
|
||||||
|
else if (card->isLand())
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
}
|
||||||
|
else if (!card->isLand() && card->has(Constants::PAYZERO))
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 70;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||||
|
shouldPlayPercentage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||||
|
if (hasX)
|
||||||
|
{
|
||||||
|
int xDiff = pMana->getConvertedCost() - currentCost;
|
||||||
|
if (xDiff < 0)
|
||||||
|
xDiff = 0;
|
||||||
|
shouldPlayPercentage = shouldPlayPercentage - static_cast<int> ((shouldPlayPercentage * 1.9f) / (1 + xDiff));
|
||||||
|
}
|
||||||
|
if(card->getManaCost() && card->getManaCost()->getKicker() && card->getManaCost()->getKicker()->isMulti)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 10* size_t(gotPayments.size())/int(1+(card->getManaCost()->getConvertedCost()+card->getManaCost()->getKicker()->getConvertedCost()));
|
||||||
|
if(shouldPlayPercentage <= 10)
|
||||||
|
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||||
|
}
|
||||||
|
DebugTrace("Should I play " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||||
|
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||||
|
if(card->getRestrictions().size())
|
||||||
|
{
|
||||||
|
AbilityFactory af(observer);
|
||||||
|
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||||
|
if(!canPlay)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int randomChance = randomGenerator.random();
|
||||||
|
int chance = randomChance % 100;
|
||||||
|
if (chance > shouldPlayPercentage)
|
||||||
|
continue;
|
||||||
|
if(shouldPlayPercentage <= 10)
|
||||||
|
{
|
||||||
|
DebugTrace("shouldPlayPercentage was less than 10 this was a lottery roll on RNG");
|
||||||
|
}
|
||||||
|
nextCardToPlay = card;
|
||||||
|
maxCost = currentCost;
|
||||||
|
if (hasX)
|
||||||
|
maxCost = pMana->getConvertedCost();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//canplayfromexile
|
||||||
|
while ((card = cd.nextmatch(game->exile, card))&& card->has(Constants::CANPLAYFROMEXILE))
|
||||||
|
{
|
||||||
|
if (!CanHandleCost(card->getManaCost(),card))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_LAND))
|
||||||
|
{
|
||||||
|
if (game->playRestrictions->canPutIntoZone(card, game->inPlay) == PlayRestriction::CANT_PLAY)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (game->playRestrictions->canPutIntoZone(card, game->stack) == PlayRestriction::CANT_PLAY)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||||
|
{
|
||||||
|
if(hints->canWeCombo(observer,card,this))
|
||||||
|
{
|
||||||
|
AbilityFactory af(observer);
|
||||||
|
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||||
|
if(!canPlay)
|
||||||
|
continue;
|
||||||
|
nextCardToPlay = card;
|
||||||
|
gotPayments.clear();
|
||||||
|
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker()))
|
||||||
|
gotPayments = canPayMana(nextCardToPlay,nextCardToPlay->getManaCost());
|
||||||
|
return activateCombo();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nextCardToPlay = NULL;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int currentCost = card->getManaCost()->getConvertedCost();
|
||||||
|
int hasX = card->getManaCost()->hasX();
|
||||||
|
gotPayments.clear();
|
||||||
|
if((!pMana->canAfford(card->getManaCost()) || card->getManaCost()->getKicker()))
|
||||||
|
gotPayments = canPayMana(card,card->getManaCost());
|
||||||
|
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||||
|
if ((currentCost > maxCost || hasX) && (gotPayments.size() || pMana->canAfford(card->getManaCost())))
|
||||||
|
{
|
||||||
|
TargetChooserFactory tcf(observer);
|
||||||
|
TargetChooser * tc = tcf.createTargetChooser(card);
|
||||||
|
int shouldPlayPercentage = 0;
|
||||||
|
if (tc)
|
||||||
|
{
|
||||||
|
int hasTarget = chooseTarget(tc,NULL,NULL,true);
|
||||||
|
if(
|
||||||
|
(tc->maxtargets > hasTarget && tc->maxtargets > 1 && !tc->targetMin && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS) ||//target=<3>creature
|
||||||
|
(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS && hasTarget < 1)//target=creatures
|
||||||
|
)
|
||||||
|
hasTarget = 0;
|
||||||
|
if (!hasTarget)//single target covered here.
|
||||||
|
{
|
||||||
|
SAFE_DELETE(tc);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
if(tc->targetMin && hasTarget < tc->maxtargets)
|
||||||
|
shouldPlayPercentage = 0;
|
||||||
|
if(tc->maxtargets > 1 && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS && hasTarget <= tc->maxtargets)
|
||||||
|
{
|
||||||
|
int maxA = hasTarget-tc->maxtargets;
|
||||||
|
shouldPlayPercentage += (10*maxA);//reduce the chances of playing multitarget if we are not above max targets.
|
||||||
|
}
|
||||||
|
if(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 40 + (10*hasTarget);
|
||||||
|
int totalCost = pMana->getConvertedCost()-currentCost;
|
||||||
|
int totalTargets = hasTarget+hasTarget;
|
||||||
|
if(hasX && totalCost <= totalTargets)// {x} spell with unlimited targeting tend to divide damage, we want atleast 1 damage per target before casting.
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SAFE_DELETE(tc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int shouldPlay = effectBadOrGood(card);
|
||||||
|
if (shouldPlay == BAKA_EFFECT_GOOD)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
}
|
||||||
|
else if (BAKA_EFFECT_DONTKNOW == shouldPlay)
|
||||||
|
{
|
||||||
|
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||||
|
//for cards which AI had no idea how to use.
|
||||||
|
shouldPlayPercentage = 60;
|
||||||
|
}
|
||||||
|
else if (card->isLand())
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 90;
|
||||||
|
}
|
||||||
|
else if (!card->isLand() && card->has(Constants::PAYZERO))
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 70;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||||
|
shouldPlayPercentage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||||
|
if (hasX)
|
||||||
|
{
|
||||||
|
int xDiff = pMana->getConvertedCost() - currentCost;
|
||||||
|
if (xDiff < 0)
|
||||||
|
xDiff = 0;
|
||||||
|
shouldPlayPercentage = shouldPlayPercentage - static_cast<int> ((shouldPlayPercentage * 1.9f) / (1 + xDiff));
|
||||||
|
}
|
||||||
|
if(card->getManaCost() && card->getManaCost()->getKicker() && card->getManaCost()->getKicker()->isMulti)
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 10* size_t(gotPayments.size())/int(1+(card->getManaCost()->getConvertedCost()+card->getManaCost()->getKicker()->getConvertedCost()));
|
||||||
|
if(shouldPlayPercentage <= 10)
|
||||||
|
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||||
|
}
|
||||||
|
DebugTrace("Should I play " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||||
|
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||||
|
if(card->getRestrictions().size())
|
||||||
|
{
|
||||||
|
AbilityFactory af(observer);
|
||||||
|
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||||
|
if(!canPlay)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
int randomChance = randomGenerator.random();
|
||||||
|
int chance = randomChance % 100;
|
||||||
|
if (chance > shouldPlayPercentage)
|
||||||
|
continue;
|
||||||
|
if(shouldPlayPercentage <= 10)
|
||||||
|
{
|
||||||
|
DebugTrace("shouldPlayPercentage was less than 10 this was a lottery roll on RNG");
|
||||||
|
}
|
||||||
|
nextCardToPlay = card;
|
||||||
|
maxCost = currentCost;
|
||||||
|
if (hasX)
|
||||||
|
maxCost = pMana->getConvertedCost();
|
||||||
|
}
|
||||||
|
}
|
||||||
while ((card = cd.nextmatch(game->hand, card)))
|
while ((card = cd.nextmatch(game->hand, card)))
|
||||||
{
|
{
|
||||||
if (!CanHandleCost(card->getManaCost(),card))
|
if (!CanHandleCost(card->getManaCost(),card))
|
||||||
@@ -1829,6 +2137,10 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
|||||||
{
|
{
|
||||||
shouldPlayPercentage = 90;
|
shouldPlayPercentage = 90;
|
||||||
}
|
}
|
||||||
|
else if (!card->isLand() && card->has(Constants::PAYZERO))
|
||||||
|
{
|
||||||
|
shouldPlayPercentage = 70;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||||
@@ -2109,6 +2421,56 @@ int AIPlayerBaka::computeActions()
|
|||||||
nextCardToPlay = NULL;
|
nextCardToPlay = NULL;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(nextCardToPlay == NULL)//check if there is a free card to play, play it....
|
||||||
|
{//TODO: add potential mana if we can pay if there is a cost increaser in play
|
||||||
|
CardDescriptor cd;
|
||||||
|
if (game->hand->hasAbility(Constants::PAYZERO))
|
||||||
|
{
|
||||||
|
//Attempt to put free cards into play
|
||||||
|
cd.init();
|
||||||
|
cd.SetExclusionColor(Constants::MTG_COLOR_LAND);
|
||||||
|
MTGCardInstance *freecard = cd.match(game->hand);
|
||||||
|
int canCastCard = game->playRestrictions->canPutIntoZone(freecard, game->inPlay);
|
||||||
|
if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1))
|
||||||
|
{
|
||||||
|
MTGAbility * castFreeCard = observer->mLayers->actionLayer()->getAbility(MTGAbility::PAYZERO_COST);
|
||||||
|
AIAction * aa = NEW AIAction(this, castFreeCard, freecard); //TODO putinplay action
|
||||||
|
clickstream.push(aa);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (game->graveyard->hasAbility(Constants::PAYZERO) && game->graveyard->hasAbility(Constants::CANPLAYFROMGRAVEYARD))
|
||||||
|
{
|
||||||
|
//Attempt to put free cards into play
|
||||||
|
cd.init();
|
||||||
|
cd.SetExclusionColor(Constants::MTG_COLOR_LAND);
|
||||||
|
MTGCardInstance *freecard = cd.match(game->graveyard);
|
||||||
|
int canCastCard = game->playRestrictions->canPutIntoZone(freecard, game->inPlay);
|
||||||
|
if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMGRAVEYARD) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (freecard->alias != 001100))
|
||||||
|
{
|
||||||
|
MTGAbility * castFreeCard = observer->mLayers->actionLayer()->getAbility(MTGAbility::PAYZERO_COST);
|
||||||
|
AIAction * aa = NEW AIAction(this, castFreeCard, freecard); //TODO putinplay action
|
||||||
|
clickstream.push(aa);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (game->exile->hasAbility(Constants::PAYZERO) && game->exile->hasAbility(Constants::CANPLAYFROMEXILE))
|
||||||
|
{
|
||||||
|
//Attempt to put free cards into play
|
||||||
|
cd.init();
|
||||||
|
cd.SetExclusionColor(Constants::MTG_COLOR_LAND);
|
||||||
|
MTGCardInstance *freecard = cd.match(game->exile);
|
||||||
|
int canCastCard = game->playRestrictions->canPutIntoZone(freecard, game->inPlay);
|
||||||
|
if (freecard && (canCastCard == PlayRestriction::CAN_PLAY) && freecard->has(Constants::PAYZERO) && freecard->has(Constants::CANPLAYFROMEXILE) && (freecard->getIncreasedManaCost()->getConvertedCost() < 1) && (freecard->alias != 001100))
|
||||||
|
{
|
||||||
|
MTGAbility * castFreeCard = observer->mLayers->actionLayer()->getAbility(MTGAbility::PAYZERO_COST);
|
||||||
|
AIAction * aa = NEW AIAction(this, castFreeCard, freecard); //TODO putinplay action
|
||||||
|
clickstream.push(aa);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}//end
|
||||||
}
|
}
|
||||||
|
|
||||||
SAFE_DELETE(currentMana);
|
SAFE_DELETE(currentMana);
|
||||||
|
|||||||
@@ -126,7 +126,35 @@ int Damage::resolve()
|
|||||||
}
|
}
|
||||||
_target->doDamageTest = 1;
|
_target->doDamageTest = 1;
|
||||||
}
|
}
|
||||||
|
if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER)
|
||||||
|
{
|
||||||
|
if(source->has(Constants::LIBRARYEATER) && typeOfDamage == 1)
|
||||||
|
{
|
||||||
|
for (int j = damage; j > 0; j--)
|
||||||
|
{
|
||||||
|
if(((Player*)target)->game->library->nb_cards)
|
||||||
|
((Player*)target)->game->putInZone(((Player*)target)->game->library->cards[((Player*)target)->game->library->nb_cards - 1], ((Player*)target)->game->library, ((Player*)target)->game->graveyard);
|
||||||
|
}
|
||||||
|
damage = 0;
|
||||||
|
}
|
||||||
|
if(source->alias == 89092 && typeOfDamage == 1)//Szadek Lord of Secrets
|
||||||
|
{
|
||||||
|
for (int j = damage; j > 0; j--)
|
||||||
|
{
|
||||||
|
if(((Player*)target)->game->library->nb_cards)
|
||||||
|
((Player*)target)->game->putInZone(((Player*)target)->game->library->cards[((Player*)target)->game->library->nb_cards - 1], ((Player*)target)->game->library, ((Player*)target)->game->graveyard);
|
||||||
|
|
||||||
|
source->counters->addCounter(1, 1);
|
||||||
|
}
|
||||||
|
damage = 0;
|
||||||
|
}
|
||||||
|
if (!damage)
|
||||||
|
{
|
||||||
|
state = RESOLVED_NOK;
|
||||||
|
delete (e);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
int a = damage;
|
int a = damage;
|
||||||
|
|
||||||
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE && (source->has(Constants::WITHER) || source->has(
|
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE && (source->has(Constants::WITHER) || source->has(
|
||||||
|
|||||||
@@ -1156,7 +1156,7 @@ void GameObserver::Affinity()
|
|||||||
card->getManaCost()->remove(color,1);
|
card->getManaCost()->remove(color,1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//SAFE_DELETE(original);
|
SAFE_DELETE(original);
|
||||||
}//end
|
}//end
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1156,10 +1156,10 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
observer->addObserver(NEW MTGMorphCostRule(observer, -1));
|
observer->addObserver(NEW MTGMorphCostRule(observer, -1));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
found = s.find("playfromgraveyardrule");
|
found = s.find("payzerorule");
|
||||||
if(found != string::npos)
|
if(found != string::npos)
|
||||||
{
|
{
|
||||||
observer->addObserver(NEW MTGPlayFromGraveyardRule(observer, -1));
|
observer->addObserver(NEW MTGPayZeroRule(observer, -1));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
//this rule handles attacking ability during attacker phase
|
//this rule handles attacking ability during attacker phase
|
||||||
@@ -3080,7 +3080,11 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
}
|
}
|
||||||
else if(s.find("cdaactive") != string::npos)
|
else if(s.find("cdaactive") != string::npos)
|
||||||
{
|
{
|
||||||
return NEW APowerToughnessModifier(observer, id, card, target, wppt,s,true);
|
MTGAbility * a = NEW APowerToughnessModifier(observer, id, card, target, wppt,s,true);
|
||||||
|
a->forcedAlive = 1;
|
||||||
|
a->forceDestroy = -1;
|
||||||
|
return a;
|
||||||
|
//return NEW APowerToughnessModifier(observer, id, card, target, wppt,s,true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return NEW APowerToughnessModifier(observer, id, card, target, wppt,s,nonstatic);
|
return NEW APowerToughnessModifier(observer, id, card, target, wppt,s,nonstatic);
|
||||||
@@ -3689,9 +3693,6 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
|
|||||||
badAbilities[(int)Constants::WEAK] = true;
|
badAbilities[(int)Constants::WEAK] = true;
|
||||||
badAbilities[(int)Constants::NOLIFEGAIN] = true;
|
badAbilities[(int)Constants::NOLIFEGAIN] = true;
|
||||||
badAbilities[(int)Constants::NOLIFEGAINOPPONENT] = true;
|
badAbilities[(int)Constants::NOLIFEGAINOPPONENT] = true;
|
||||||
badAbilities[(int)Constants::CANTLOSE] = false;
|
|
||||||
badAbilities[(int)Constants::CANTLIFELOSE] = false;
|
|
||||||
badAbilities[(int)Constants::CANTMILLLOSE] = false;
|
|
||||||
|
|
||||||
if (AInstantBasicAbilityModifierUntilEOT * abi = dynamic_cast<AInstantBasicAbilityModifierUntilEOT *>(a))
|
if (AInstantBasicAbilityModifierUntilEOT * abi = dynamic_cast<AInstantBasicAbilityModifierUntilEOT *>(a))
|
||||||
{
|
{
|
||||||
@@ -3754,7 +3755,7 @@ int AbilityFactory::getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCar
|
|||||||
if (dest == zones->exile)
|
if (dest == zones->exile)
|
||||||
{
|
{
|
||||||
magicText = card->magicTexts["exile"];
|
magicText = card->magicTexts["exile"];
|
||||||
card->exileEffects = true;
|
card->exileEffects = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (dest == zones->library)
|
if (dest == zones->library)
|
||||||
|
|||||||
@@ -918,6 +918,25 @@ JQuadPtr MTGCardInstance::getIcon()
|
|||||||
return WResourceManager::Instance()->RetrieveCard(this, CACHE_THUMB);
|
return WResourceManager::Instance()->RetrieveCard(this, CACHE_THUMB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ManaCost * MTGCardInstance::computeNewCost(MTGCardInstance * card,ManaCost * oldCost)
|
||||||
|
{
|
||||||
|
if(card->isLand())
|
||||||
|
return oldCost;
|
||||||
|
|
||||||
|
if(!card)
|
||||||
|
return oldCost;
|
||||||
|
//use forcedalive//
|
||||||
|
//pay zero costs//
|
||||||
|
//kicker???...//
|
||||||
|
//morph cost todo//
|
||||||
|
//trinisphere must be here below//
|
||||||
|
if(card->has(Constants::TRINISPHERE))
|
||||||
|
for(int jj = oldCost->getConvertedCost(); jj < 3; jj++)
|
||||||
|
oldCost->add(Constants::MTG_COLOR_ARTIFACT, 1);
|
||||||
|
|
||||||
|
return oldCost;
|
||||||
|
}
|
||||||
|
|
||||||
MTGCardInstance * MTGCardInstance::getNextPartner()
|
MTGCardInstance * MTGCardInstance::getNextPartner()
|
||||||
{
|
{
|
||||||
MTGInPlay * inplay = controller()->game->inPlay;
|
MTGInPlay * inplay = controller()->game->inPlay;
|
||||||
|
|||||||
@@ -93,6 +93,16 @@ int MTGAllCards::processConfLine(string &s, MTGCard *card, CardPrimitive * primi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (key == "anyzone")
|
||||||
|
{
|
||||||
|
if (!primitive) primitive = NEW CardPrimitive();
|
||||||
|
primitive->addMagicText(val,"hand");
|
||||||
|
primitive->addMagicText(val,"library");
|
||||||
|
primitive->addMagicText(val,"graveyard");
|
||||||
|
primitive->addMagicText(val,"stack");
|
||||||
|
primitive->addMagicText(val,"exile");
|
||||||
|
primitive->addMagicText(val);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'b': //buyback
|
case 'b': //buyback
|
||||||
|
|||||||
@@ -148,9 +148,10 @@ const char* Constants::MTGBasicAbilities[] = {
|
|||||||
"protectionfromcoloredspells",
|
"protectionfromcoloredspells",
|
||||||
"mygcreatureexiler",
|
"mygcreatureexiler",
|
||||||
"oppgcreatureexiler",
|
"oppgcreatureexiler",
|
||||||
"payzero",
|
"zerocast",
|
||||||
"trinisphere",
|
"trinisphere",
|
||||||
"canplayfromexile"
|
"canplayfromexile",
|
||||||
|
"libraryeater"
|
||||||
};
|
};
|
||||||
|
|
||||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||||
|
|||||||
@@ -284,8 +284,10 @@ int MTGPutInPlayRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
|||||||
{
|
{
|
||||||
int cardsinhand = game->players[0]->game->hand->nb_cards;
|
int cardsinhand = game->players[0]->game->hand->nb_cards;
|
||||||
Player * player = game->currentlyActing();
|
Player * player = game->currentlyActing();
|
||||||
if (!player->game->hand->hasCard(card))
|
if (!player->game->hand->hasCard(card) && !player->game->graveyard->hasCard(card) && !player->game->exile->hasCard(card))
|
||||||
return 0;
|
return 0;
|
||||||
|
if ((player->game->graveyard->hasCard(card) && !card->has(Constants::CANPLAYFROMGRAVEYARD)) || (player->game->exile->hasCard(card) && !card->has(Constants::CANPLAYFROMEXILE)))
|
||||||
|
return 0;
|
||||||
if ((game->turn < 1) && (cardsinhand != 0) && (card->basicAbilities[(int)Constants::LEYLINE])
|
if ((game->turn < 1) && (cardsinhand != 0) && (card->basicAbilities[(int)Constants::LEYLINE])
|
||||||
&& game->getCurrentGamePhase() == MTG_PHASE_FIRSTMAIN
|
&& game->getCurrentGamePhase() == MTG_PHASE_FIRSTMAIN
|
||||||
&& game->players[0]->game->graveyard->nb_cards == 0
|
&& game->players[0]->game->graveyard->nb_cards == 0
|
||||||
@@ -295,7 +297,7 @@ int MTGPutInPlayRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
|||||||
|
|
||||||
if (card->basicAbilities[(int)Constants::LEYLINE])
|
if (card->basicAbilities[(int)Constants::LEYLINE])
|
||||||
{
|
{
|
||||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->hand, player->game->temp);
|
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp);
|
||||||
Spell * spell = NEW Spell(game, copy);
|
Spell * spell = NEW Spell(game, copy);
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
delete spell;
|
delete spell;
|
||||||
@@ -412,7 +414,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
|
|||||||
delete previousManaPool;
|
delete previousManaPool;
|
||||||
if (card->isLand())
|
if (card->isLand())
|
||||||
{
|
{
|
||||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->hand, player->game->temp);
|
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp);
|
||||||
Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, payResult);
|
Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, payResult);
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
delete spellCost;
|
delete spellCost;
|
||||||
@@ -421,7 +423,7 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Spell * spell = NULL;
|
Spell * spell = NULL;
|
||||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->hand, player->game->stack);
|
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->stack);
|
||||||
if (game->targetChooser)
|
if (game->targetChooser)
|
||||||
{
|
{
|
||||||
spell = game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, payResult, 0);
|
spell = game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, payResult, 0);
|
||||||
@@ -475,8 +477,10 @@ int MTGKickerRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
|||||||
if(OptionKicker::KICKER_ALWAYS == options[Options::KICKERPAYMENT].number)
|
if(OptionKicker::KICKER_ALWAYS == options[Options::KICKERPAYMENT].number)
|
||||||
return 0;
|
return 0;
|
||||||
Player * player = game->currentlyActing();
|
Player * player = game->currentlyActing();
|
||||||
if(!player->game->hand->hasCard(card))
|
if (!player->game->hand->hasCard(card) && !player->game->graveyard->hasCard(card) && !player->game->exile->hasCard(card))
|
||||||
return 0;
|
return 0;
|
||||||
|
if ((player->game->graveyard->hasCard(card) && !card->has(Constants::CANPLAYFROMGRAVEYARD)) || (player->game->exile->hasCard(card) && !card->has(Constants::CANPLAYFROMEXILE)))
|
||||||
|
return 0;
|
||||||
ManaCost * kicker = card->getManaCost()->getKicker();
|
ManaCost * kicker = card->getManaCost()->getKicker();
|
||||||
if(!kicker)
|
if(!kicker)
|
||||||
{
|
{
|
||||||
@@ -484,8 +488,12 @@ int MTGKickerRule::isReactingToClick(MTGCardInstance * card, ManaCost *)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ManaCost * playerMana = player->getManaPool();
|
ManaCost * playerMana = player->getManaPool();
|
||||||
ManaCost * withKickerCost= NEW ManaCost(card->getManaCost());
|
ManaCost * withKickerCost= NEW ManaCost(card->model->data->getManaCost());
|
||||||
withKickerCost->add(withKickerCost->getKicker());
|
if(card->getIncreasedManaCost()->getConvertedCost())
|
||||||
|
withKickerCost->add(card->getIncreasedManaCost());
|
||||||
|
if(card->getReducedManaCost()->getConvertedCost())
|
||||||
|
withKickerCost->remove(card->getReducedManaCost());
|
||||||
|
withKickerCost->add(card->model->data->getManaCost()->getKicker());
|
||||||
if(!playerMana->canAfford(withKickerCost))
|
if(!playerMana->canAfford(withKickerCost))
|
||||||
{
|
{
|
||||||
delete withKickerCost;
|
delete withKickerCost;
|
||||||
@@ -503,12 +511,16 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
Player * player = game->currentlyActing();
|
Player * player = game->currentlyActing();
|
||||||
ManaCost * withKickerCost= NEW ManaCost(card->getManaCost());//using pointers here alters the real cost of the card.
|
ManaCost * withKickerCost= NEW ManaCost(card->model->data->getManaCost());//using pointers here alters the real cost of the card.
|
||||||
if (card->getManaCost()->getKicker()->isMulti)
|
if(card->getIncreasedManaCost()->getConvertedCost())
|
||||||
|
withKickerCost->add(card->getIncreasedManaCost());
|
||||||
|
if(card->getReducedManaCost()->getConvertedCost())
|
||||||
|
withKickerCost->remove(card->getReducedManaCost());
|
||||||
|
if (card->model->data->getManaCost()->getKicker()->isMulti)
|
||||||
{
|
{
|
||||||
while(player->getManaPool()->canAfford(withKickerCost))
|
while(player->getManaPool()->canAfford(withKickerCost))
|
||||||
{
|
{
|
||||||
withKickerCost->add(withKickerCost->getKicker());
|
withKickerCost->add(card->model->data->getManaCost()->getKicker());
|
||||||
card->kicked += 1;
|
card->kicked += 1;
|
||||||
}
|
}
|
||||||
card->kicked -= 1;
|
card->kicked -= 1;
|
||||||
@@ -518,7 +530,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
withKickerCost->add(withKickerCost->getKicker());
|
withKickerCost->add(card->model->data->getManaCost()->getKicker());
|
||||||
card->paymenttype = MTGAbility::PUT_INTO_PLAY_WITH_KICKER;
|
card->paymenttype = MTGAbility::PUT_INTO_PLAY_WITH_KICKER;
|
||||||
}
|
}
|
||||||
if (withKickerCost->isExtraPaymentSet())
|
if (withKickerCost->isExtraPaymentSet())
|
||||||
@@ -545,7 +557,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
|
|||||||
delete previousManaPool;
|
delete previousManaPool;
|
||||||
if (card->isLand())
|
if (card->isLand())
|
||||||
{
|
{
|
||||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->hand, player->game->temp);
|
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->temp);
|
||||||
Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, ManaCost::MANA_PAID_WITH_KICKER);
|
Spell * spell = NEW Spell(game, 0,copy,NULL,NULL, ManaCost::MANA_PAID_WITH_KICKER);
|
||||||
spell->resolve();
|
spell->resolve();
|
||||||
delete spellCost;
|
delete spellCost;
|
||||||
@@ -554,7 +566,7 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Spell * spell = NULL;
|
Spell * spell = NULL;
|
||||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->hand, player->game->stack);
|
MTGCardInstance * copy = player->game->putInZone(card, card->currentZone, player->game->stack);
|
||||||
if (game->targetChooser)
|
if (game->targetChooser)
|
||||||
{
|
{
|
||||||
spell = game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, ManaCost::MANA_PAID_WITH_KICKER, 0);
|
spell = game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, ManaCost::MANA_PAID_WITH_KICKER, 0);
|
||||||
@@ -616,7 +628,9 @@ PermanentAbility(observer, _id)
|
|||||||
int MTGAlternativeCostRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
int MTGAlternativeCostRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
||||||
{
|
{
|
||||||
ManaCost * alternateCost = card->getManaCost()->getAlternative();
|
ManaCost * alternateCost = card->getManaCost()->getAlternative();
|
||||||
if (!game->currentlyActing()->game->hand->hasCard(card))
|
if (!game->currentlyActing()->game->hand->hasCard(card) && !game->currentlyActing()->game->graveyard->hasCard(card) && !game->currentlyActing()->game->exile->hasCard(card))
|
||||||
|
return 0;
|
||||||
|
if ((game->currentlyActing()->game->graveyard->hasCard(card) && !card->has(Constants::CANPLAYFROMGRAVEYARD)) || (game->currentlyActing()->game->exile->hasCard(card) && !card->has(Constants::CANPLAYFROMEXILE)))
|
||||||
return 0;
|
return 0;
|
||||||
return isReactingToClick( card, mana, alternateCost );
|
return isReactingToClick( card, mana, alternateCost );
|
||||||
}
|
}
|
||||||
@@ -630,7 +644,12 @@ int MTGAlternativeCostRule::isReactingToClick(MTGCardInstance * card, ManaCost *
|
|||||||
if(!allowedToAltCast(card,player))
|
if(!allowedToAltCast(card,player))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(card->model->data->getManaCost()->getAlternative() && card->model->data->getManaCost()->getAlternative()->alternativeName.size())
|
|
||||||
|
if(card->has(Constants::CANPLAYFROMGRAVEYARD))
|
||||||
|
alternativeName = "Alternate Cast From Graveyard";
|
||||||
|
else if(card->has(Constants::CANPLAYFROMEXILE))
|
||||||
|
alternativeName = "Alternate Cast From Exile";
|
||||||
|
else if(card->model->data->getManaCost()->getAlternative() && card->model->data->getManaCost()->getAlternative()->alternativeName.size())
|
||||||
alternativeName = card->model->data->getManaCost()->getAlternative()->alternativeName;
|
alternativeName = card->model->data->getManaCost()->getAlternative()->alternativeName;
|
||||||
|
|
||||||
if (card->isLand())
|
if (card->isLand())
|
||||||
@@ -763,8 +782,10 @@ MTGAlternativeCostRule(observer, _id)
|
|||||||
int MTGBuyBackRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
int MTGBuyBackRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
||||||
{
|
{
|
||||||
Player * player = game->currentlyActing();
|
Player * player = game->currentlyActing();
|
||||||
if (!player->game->hand->hasCard(card))
|
if (!player->game->hand->hasCard(card) && !player->game->graveyard->hasCard(card) && !player->game->exile->hasCard(card))
|
||||||
return 0;
|
return 0;
|
||||||
|
if ((player->game->graveyard->hasCard(card) && !card->has(Constants::CANPLAYFROMGRAVEYARD)) || (player->game->exile->hasCard(card) && !card->has(Constants::CANPLAYFROMEXILE)))
|
||||||
|
return 0;
|
||||||
if(!allowedToCast(card,player))
|
if(!allowedToCast(card,player))
|
||||||
return 0;
|
return 0;
|
||||||
return MTGAlternativeCostRule::isReactingToClick( card, mana, card->getManaCost()->getBuyback() );
|
return MTGAlternativeCostRule::isReactingToClick( card, mana, card->getManaCost()->getBuyback() );
|
||||||
@@ -1129,46 +1150,60 @@ MTGMorphCostRule * MTGMorphCostRule::clone() const
|
|||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
MTGPlayFromGraveyardRule::MTGPlayFromGraveyardRule(GameObserver* observer, int _id) :
|
MTGPayZeroRule::MTGPayZeroRule(GameObserver* observer, int _id) :
|
||||||
MTGAlternativeCostRule(observer, _id)
|
MTGAlternativeCostRule(observer, _id)
|
||||||
{
|
{
|
||||||
aType = MTGAbility::CASTINGRAVEYARD_COST;
|
aType = MTGAbility::PAYZERO_COST;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGPlayFromGraveyardRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
int MTGPayZeroRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
||||||
{
|
{
|
||||||
Player * player = game->currentlyActing();
|
Player * player = game->currentlyActing();
|
||||||
ManaCost * cost = card->getManaCost();
|
ManaCost * cost = NEW ManaCost(ManaCost::parseManaCost("{0}",NULL,NULL));
|
||||||
|
if(card->getIncreasedManaCost()->getConvertedCost())
|
||||||
|
cost->add(card->getIncreasedManaCost());
|
||||||
|
if(card->getReducedManaCost()->getConvertedCost())
|
||||||
|
cost->remove(card->getReducedManaCost());
|
||||||
|
|
||||||
if (!player->game->graveyard->hasCard(card))
|
if(card->isLand())
|
||||||
return 0;
|
return 0;
|
||||||
if (!card->has(Constants::CANPLAYFROMGRAVEYARD))
|
if(!card->has(Constants::PAYZERO))
|
||||||
return 0;
|
return 0;
|
||||||
|
if (!player->game->graveyard->hasCard(card) && !player->game->exile->hasCard(card) && !player->game->hand->hasCard(card))
|
||||||
|
return 0;
|
||||||
|
if ((!card->has(Constants::CANPLAYFROMGRAVEYARD) && player->game->graveyard->hasCard(card))||(!card->has(Constants::CANPLAYFROMEXILE) && player->game->exile->hasCard(card)))
|
||||||
|
return 0;
|
||||||
|
if(card->has(Constants::CANPLAYFROMGRAVEYARD))
|
||||||
|
CustomName = "Zero Cast From Graveyard";
|
||||||
|
else if(card->has(Constants::CANPLAYFROMEXILE))
|
||||||
|
CustomName = "Zero Cast From Exile";
|
||||||
|
else
|
||||||
|
CustomName = "Zero Cast From Anywhere";
|
||||||
|
|
||||||
return MTGAlternativeCostRule::isReactingToClick(card, mana, cost);
|
return MTGAlternativeCostRule::isReactingToClick(card, mana, cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGPlayFromGraveyardRule::reactToClick(MTGCardInstance * card)
|
int MTGPayZeroRule::reactToClick(MTGCardInstance * card)
|
||||||
{
|
{
|
||||||
if (!isReactingToClick(card))
|
if (!isReactingToClick(card))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ManaCost * cost = card->getManaCost();
|
ManaCost * cost = NEW ManaCost(ManaCost::parseManaCost("{0}",NULL,NULL));
|
||||||
|
|
||||||
card->paymenttype = MTGAbility::CASTINGRAVEYARD_COST;
|
card->paymenttype = MTGAbility::PAYZERO_COST;
|
||||||
|
|
||||||
return MTGAlternativeCostRule::reactToClick(card, cost, ManaCost::MANA_PAID_WITH_OTHERCOST);
|
return MTGAlternativeCostRule::reactToClick(card, cost, ManaCost::MANA_PAID);
|
||||||
}
|
}
|
||||||
|
|
||||||
ostream& MTGPlayFromGraveyardRule::toString(ostream& out) const
|
ostream& MTGPayZeroRule::toString(ostream& out) const
|
||||||
{
|
{
|
||||||
out << "MTGPlayFromGraveyardRule ::: (";
|
out << "MTGPayZeroRule ::: (";
|
||||||
return MTGAbility::toString(out) << ")";
|
return MTGAbility::toString(out) << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
MTGPlayFromGraveyardRule * MTGPlayFromGraveyardRule::clone() const
|
MTGPayZeroRule * MTGPayZeroRule::clone() const
|
||||||
{
|
{
|
||||||
return NEW MTGPlayFromGraveyardRule(*this);
|
return NEW MTGPayZeroRule(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -1718,7 +1753,7 @@ int MTGMomirRule::reactToClick(MTGCardInstance * card_to_discard, int cardId)
|
|||||||
ManaCost * cost = player->getManaPool();
|
ManaCost * cost = player->getManaPool();
|
||||||
player->getManaPool()->pay(cost);
|
player->getManaPool()->pay(cost);
|
||||||
MTGCardInstance * card = genCreature(cardId);
|
MTGCardInstance * card = genCreature(cardId);
|
||||||
player->game->putInZone(card_to_discard, player->game->hand, player->game->graveyard);
|
player->game->putInZone(card_to_discard, card_to_discard->currentZone, player->game->graveyard);
|
||||||
|
|
||||||
player->game->stack->addCard(card);
|
player->game->stack->addCard(card);
|
||||||
Spell * spell = NEW Spell(game, card);
|
Spell * spell = NEW Spell(game, card);
|
||||||
|
|||||||
Reference in New Issue
Block a user