- Fixed the "CANTREGENERATE" keyword (by Zethfox).

The engine always handled it as "REGENERATE" and thus had to be renamed. Its new name is "CANTREGEN". It has been tested excessively by me and Zethfox. Now all cards with the former "cantregenerate" work as they should.

- I also added a test for "CANTREGEN" (Incinerate).


- Added the new keyword "FOG" (by Zethfox). 
This is an equivalent for "PREVENTALLCOMBATDAMAGE", which only worked for instants and sorceries. "Fog" works only for permanents and is used in combination with the newly introduced parameter "ONESHOT"!

- I also added 2 tests for "FOG" (Maze of Ith, Spore Frog).

Both additions lead to several issue fixes:
Fixed issue286.
Fixed issue328.
Fixed issue332.
Fixed issue416.

- Removed Demonic Torment, Gaseous Form, General's Kabuto, Sandskin. Those cards never worked and could even not be fixed with "FOG".


- Optimized the code of the dragon-lair land-cycle from PLS and added 2 tests for them.

- Added 8 successfully tested cards. Card list -> first comment.
This commit is contained in:
solo81@web.de
2010-08-09 23:49:31 +00:00
parent 9e549f3e88
commit 477439773b
14 changed files with 367 additions and 145 deletions

View File

@@ -8075,6 +8075,17 @@ power=5
toughness=5
[/card]
[card]
##Neither works with "preventallCombatDamage" nor "fog".
name=Demonic Torment
target=creature
auto=cantattack
auto=preventAllCombatDamage from(mytgt)
text=Enchant creature -- Enchanted creature can't attack. -- Prevent all combat damage that would be dealt by enchanted creature.
mana={2}{B}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Demon of Death's Gate
text=Flying, trample -- You may pay 6 life and sacrifice three black creatures rather than pay Demon of Death's Gate's mana cost.
mana={6}{B}{B}{B}
@@ -8712,12 +8723,6 @@ power=1
toughness=1
[/card]
[card]
name=Dolmen Gate
text=Prevent all combat damage that would be dealt to attacking creatures you control.
mana={2}
type=Artifact
[/card]
[card]
name=Dominate
text=Gain control of target creature with converted mana cost X or less. (This effect lasts indefinitely.)
mana={X}{1}{U}{U}
@@ -13014,6 +13019,17 @@ power=2
toughness=2
[/card]
[card]
##Neither works with "preventallCombatDamage" nor "fog".
name=Gaseous Form
target=creature
auto=preventAllCombatDamage from(mytgt)
auto=preventAllCombatDamage to(mytgt)
text=Enchant creature -- Prevent all combat damage that would be dealt to and dealt by enchanted creature.
mana={2}{U}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Gate Hound
text=Creatures you control have vigilance as long as Gate Hound is enchanted.
mana={2}{W}
@@ -13129,6 +13145,17 @@ power=1
toughness=2
[/card]
[card]
##Neither works with "preventallCombatDamage" nor "fog".
name=General's Kabuto
auto={2}:equip
auto=shroud
auto=preventAllCombatDamage to(mytgt)
text=Equipped creature has shroud. (It can't be the target of spells or abilities.) -- Prevent all combat damage that would be dealt to equipped creature. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)
mana={4}
type=Artifact
subtype=Equipment
[/card]
[card]
name=General's Regalia
text={3}: The next time a source of your choice would deal damage to you this turn, that damage is dealt to target creature you control instead.
mana={3}
@@ -16136,7 +16163,6 @@ power=*
toughness=*
[/card]
[card]
#"prevent from target" does not work in Wagic 0.11
name=Horn of Deafening
auto={2}{T}:preventAllCombatDamage from target(creature)
text={2}, {T}: Prevent all combat damage that would be dealt by target creature this turn.
@@ -27883,15 +27909,6 @@ mana={2}{R}
type=Instant
[/card]
[card]
name=Radiant Kavu
text={R}{G}{W}: Prevent all combat damage blue creatures and black creatures would deal this turn.
mana={R}{G}{W}
type=Creature
subtype=Kavu
power=3
toughness=3
[/card]
[card]
name=Radiate
text=Choose target instant or sorcery spell that targets only a single permanent or player. Copy that spell for each other permanent or player the spell could target. Each copy targets a different one of those permanents and players.
mana={3}{R}{R}
@@ -30566,6 +30583,17 @@ mana={4}
type=Artifact
[/card]
[card]
##Neither works with "preventallCombatDamage" nor "fog".
name=Sandskin
target=creature
auto=preventAllCombatDamage from(mytgt)
auto=preventAllCombatDamage to(mytgt)
text=Enchant creature -- Prevent all combat damage that would be dealt to and dealt by enchanted creature.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Sandsower
text=Tap three untapped creatures you control: Tap target creature.
mana={3}{W}
@@ -34131,15 +34159,6 @@ power=0
toughness=0
[/card]
[card]
name=Spike Weaver
text=Spike Weaver enters the battlefield with three +1/+1 counters on it. -- {2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature. -- {1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.
mana={2}{G}{G}
type=Creature
subtype=Spike
power=0
toughness=0
[/card]
[card]
name=Spiketail Drake
text=Flying -- Sacrifice Spiketail Drake: Counter target spell unless its controller pays {3}.
mana={3}{U}{U}
@@ -34435,15 +34454,6 @@ mana={1}{G}{G}
type=Instant
[/card]
[card]
name=Spore Flower
text=At the beginning of your upkeep, put a spore counter on Spore Flower. -- Remove three spore counters from Spore Flower: Prevent all combat damage that would be dealt this turn.
mana={G}{G}
type=Creature
subtype=Fungus
power=0
toughness=1
[/card]
[card]
name=Sporeback Troll
text=Graft 2 (This creature enters the battlefield with two +1/+1 counters on it. Whenever another creature enters the battlefield, you may move a +1/+1 counter from this creature onto it.) -- {1}{G}: Regenerate target creature with a +1/+1 counter on it.
mana={3}{G}
@@ -34759,12 +34769,6 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Statecraft
text=Prevent all combat damage that would be dealt to and dealt by creatures you control.
mana={3}{U}
type=Enchantment
[/card]
[card]
name=Static Orb
text=If Static Orb is untapped, players can't untap more than two permanents during their untap steps.
mana={3}
@@ -38436,15 +38440,6 @@ power=2
toughness=2
[/card]
[card]
name=Urborg Phantom
text=Urborg Phantom can't block. -- {U}: Prevent all combat damage that would be dealt to and dealt by Urborg Phantom this turn.
mana={2}{B}
type=Creature
subtype=Spirit Minion
power=3
toughness=1
[/card]
[card]
name=Urborg, Tomb of Yawgmoth
text=Each land is a Swamp in addition to its other land types.
type=Legendary Land

View File

@@ -7752,6 +7752,7 @@ toughness=6
name=Child of Gaea
abilities=trample
auto=upcost[{G}{G}] moveTo(graveyard)
auto={1}{G}:regenerate
text=Trample -- At the beginning of your upkeep, sacrifice Child of Gaea unless you pay {G}{G}. -- {1}{G}: Regenerate Child of Gaea.
mana={3}{G}{G}{G}
type=Creature
@@ -9597,11 +9598,11 @@ toughness=3
[/card]
[card]
name=Crosis's Catacombs
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield) oneshot
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield?) oneshot && counter(0/0,-1,payment)
auto=moveto(mygraveyard) target(this|mybattlefield)
auto={T}:Add{U}
auto={T}:Add{B}
auto={T}:Add{R}
auto=this(counter{0/0.1.payment}<1) {T}:Add{U}
auto=this(counter{0/0.1.payment}<1) {T}:Add{B}
auto=this(counter{0/0.1.payment}<1) {T}:Add{R}
text=When Crosis's Catacombs enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand. -- {T}: Add {U}, {B}, or {R} to your mana pool.
type=Land
subtype=Lair
@@ -10208,11 +10209,11 @@ toughness=3
[/card]
[card]
name=Darigaaz's Caldera
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield) oneshot
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield?) oneshot && counter(0/0,-1,payment)
auto=moveto(mygraveyard) target(this|mybattlefield)
auto={T}:Add{B}
auto={T}:Add{R}
auto={T}:Add{G}
auto=this(counter{0/0.1.payment}<1) {T}:Add{B}
auto=this(counter{0/0.1.payment}<1) {T}:Add{R}
auto=this(counter{0/0.1.payment}<1) {T}:Add{G}
text=When Darigaaz's Caldera enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand. -- {T}: Add {B}, {R}, or {G} to your mana pool.
type=Land
subtype=Lair
@@ -10610,7 +10611,7 @@ toughness=1
[/card]
[card]
name=Dawnstrider
auto={G}{T}{S(*|myhand)}:preventAllCombatDamage ueot
auto={G}{T}{S(*|myhand)}:fog oneshot
text={G}, {T}, Discard a card: Prevent all combat damage that would be dealt this turn.
mana={1}{G}
type=Creature
@@ -11232,16 +11233,6 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Demonic Torment
target=creature
auto=cantattack
auto=preventAllCombatDamage from(mytgt)
text=Enchant creature -- Enchanted creature can't attack. -- Prevent all combat damage that would be dealt by enchanted creature.
mana={2}{B}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Demonic Tutor
target=*|myLibrary
auto=moveTo(hand)
@@ -12028,6 +12019,13 @@ mana={3}{R}
type=Instant
[/card]
[card]
name=Dolmen Gate
auto=preventAllCombatDamage to(creature[attacking]|myBattlefield)
text=Prevent all combat damage that would be dealt to attacking creatures you control.
mana={2}
type=Artifact
[/card]
[card]
name=Dominaria's Judgment
auto=aslongas(plains|myBattlefield) lord(creature|myBattlefield) protection from white
auto=aslongas(island|myBattlefield) lord(creature|myBattlefield) protection from blue
@@ -12669,11 +12667,11 @@ toughness=3
[/card]
[card]
name=Dromar's Cavern
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield) oneshot
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield?) oneshot && counter(0/0,-1,payment)
auto=moveto(mygraveyard) target(this|mybattlefield)
auto={T}:Add{W}
auto={T}:Add{U}
auto={T}:Add{B}
auto=this(counter{0/0.1.payment}<1) {T}:Add{W}
auto=this(counter{0/0.1.payment}<1) {T}:Add{U}
auto=this(counter{0/0.1.payment}<1) {T}:Add{B}
text=When Dromar's Cavern enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand. -- {T}: Add {W}, {U}, or {B} to your mana pool.
type=Land
subtype=Lair
@@ -13315,7 +13313,7 @@ type=Land
[/card]
[card]
name=Ebony Horse
auto={2}{T}:untap target(creature[attacking]|myBattlefield) && preventAllCombatDamage to(mytgt) ueot && preventAllCombatDamage from(mytgt) ueot
auto={2}{T}:untap target(creature[attacking]|myBattlefield) && fog to(mytgt) oneshot && fog from(mytgt) oneshot
text={2}, {T}: Untap target attacking creature you control. Prevent all combat damage that would be dealt to and dealt by that creature this turn.
mana={3}
type=Artifact
@@ -13813,7 +13811,7 @@ toughness=1
[/card]
[card]
name=Elvish Scout
auto={G}{T}:untap target(creature[attacking]|myBattlefield) && preventAllCombatDamage to(mytgt) ueot && preventAllCombatDamage from(mytgt) ueot
auto={G}{T}:untap target(creature[attacking]|myBattlefield) && fog to(mytgt) oneshot && fog from(mytgt) oneshot
text={G}, {T}: Untap target attacking creature you control. Prevent all combat damage that would be dealt to and dealt by it this turn.
mana={G}
type=Creature
@@ -16161,7 +16159,7 @@ toughness=3
name=Flamebreak
auto=damage:3 all(creature[-flying])
auto=damage:3 all(player)
auto=lord(creature[-flying]) cantregenerate
auto=lord(creature[-flying;-protection from red]) cantregen ueot
text=Flamebreak deals 3 damage to each creature without flying and each player. Creatures dealt damage this way can't be regenerated this turn.
mana={R}{R}{R}
type=Sorcery
@@ -16938,9 +16936,7 @@ type=Artifact
[card]
name=Foxfire
target=creature[attacking]
auto=untap
auto=preventAllCombatDamage to(mytgt) ueot
auto=preventAllCombatDamage from(mytgt) ueot
auto=untap && fog to(mytgt) oneshot && fog from(mytgt) oneshot
auto=@next upkeep:draw:1 controller
text=Untap target attacking creature. Prevent all combat damage that would be dealt to and dealt by that creature this turn. -- Draw a card at the beginning of the next turn's upkeep.
mana={2}{G}
@@ -17213,7 +17209,7 @@ type=Enchantment
[/card]
[card]
name=Furnace Brood
auto={R}:cantregenerate target(creature)
auto={R}:cantregen target(creature)
text={R}: Target creature can't be regenerated this turn.
mana={3}{R}
type=Creature
@@ -17505,16 +17501,6 @@ power=4
toughness=4
[/card]
[card]
name=Gaseous Form
target=creature
auto=preventAllCombatDamage from(mytgt)
auto=preventAllCombatDamage to(mytgt)
text=Enchant creature -- Prevent all combat damage that would be dealt to and dealt by enchanted creature.
mana={2}{U}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Gate to Phyrexia
auto={S(creature|myBattlefield)}:destroy target(artifact) limit:1 myUpkeepOnly
text=Sacrifice a creature: Destroy target artifact. Activate this ability only during your upkeep and only once each turn.
@@ -17642,16 +17628,6 @@ text=Gemstone Mine enters the battlefield with three mining counters on it. -- {
type=Land
[/card]
[card]
name=General's Kabuto
auto={2}:equip
auto=shroud
auto=preventAllCombatDamage to(mytgt)
text=Equipped creature has shroud. (It can't be the target of spells or abilities.) -- Prevent all combat damage that would be dealt to equipped creature. -- Equip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.)
mana={4}
type=Artifact
subtype=Equipment
[/card]
[card]
name=Genesis
autograveyard={2}{G}:moveTo(myhand) target(creature|mygraveyard) myUpkeepOnly
text=At the beginning of your upkeep, if Genesis is in your graveyard, you may pay {2}{G}. If you do, return target creature card from your graveyard to your hand.
@@ -17981,8 +17957,11 @@ toughness=3
[/card]
[card]
name=Giant Growth
target=creature
auto=3/3
##target=creature
##auto=3/3
target=creature,player
auto=cantregen
auto=damage:3
text=Target creature gets +3/+3 until end of turn.
mana={G}
type=Instant
@@ -18149,7 +18128,7 @@ type=Land
[/card]
[card]
name=Glacial Crevasses
auto={S(mountain[snow]|myBattlefield)}:preventAllcombatDamage ueot
auto={S(mountain[snow]|myBattlefield)}:fog oneshot
text=Sacrifice a snow Mountain: Prevent all combat damage that would be dealt this turn.
mana={2}{R}
type=Enchantment
@@ -19511,7 +19490,7 @@ toughness=1
[card]
name=Gravebind
target=creature
auto=cantregenerate
auto=cantregen
auto=@next upkeep:draw:1 controller
text=Target creature can't be regenerated this turn. -- Draw a card at the beginning of the next turn's upkeep.
mana={B}
@@ -20056,6 +20035,17 @@ type=Enchantment
subtype=Aura
[/card]
[card]
name=Guard Gomazoa
abilities=flying,defender
auto=preventAllCombatDamage to(this)
text=Defender, flying -- Prevent all combat damage that would be dealt to Guard Gomazoa.
mana={2}{U}
type=Creature
subtype=Jellyfish
power=1
toughness=3
[/card]
[card]
name=Guardian Idol
auto=tap
auto={T}:Add{1}
@@ -20670,6 +20660,17 @@ power=1
toughness=2
[/card]
[card]
name=Haze Frog
abilities=flash
auto=fog from(other creature) oneshot
text=Flash (You may cast this spell any time you could cast an instant.) -- When Haze Frog enters the battlefield, prevent all combat damage that other creatures would deal this turn.
mana={3}{G}{G}
type=Creature
subtype=Frog
power=2
toughness=1
[/card]
[card]
name=Hazerider Drake
abilities=flying,protection from red
text=Flying, protection from red
@@ -22123,7 +22124,7 @@ type=Sorcery
[/card]
[card]
name=Hurr Jackal
auto={T}:cantregenerate target(creature)
auto={T}:cantregen target(creature)
text={T}: Target creature can't be regenerated this turn.
mana={R}
type=Creature
@@ -22536,7 +22537,7 @@ subtype=Aura
[card]
name=Incinerate
target=creature,player
auto=cantregenerate
auto=cantregen
auto=damage:3
text=Incinerate deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn.
mana={1}{R}
@@ -23391,7 +23392,7 @@ toughness=1
[card]
name=Jaya Ballard, Task Mage
auto={R}{T}{S(*|myHand)}:destroy target(*[blue])
auto={1}{R}{T}{S(*|myHand)}:damage:3 && cantregenerate target(creature,player)
auto={1}{R}{T}{S(*|myHand)}:damage:3 && cantregen target(creature,player)
auto={5}{R}{R}{S(*|myHand)}:damage:6 all(creature,player)
text={R}, {T}, Discard a card: Destroy target blue permanent. -- {1}{R}, {T}, Discard a card: Jaya Ballard, Task Mage deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn. -- {5}{R}{R}, {T}, Discard a card: Jaya Ballard deals 6 damage to each creature and each player.
mana={1}{R}{R}
@@ -24129,7 +24130,7 @@ toughness=1
[/card]
[card]
name=Kami of False Hope
auto={S}:preventAllcombatDamage ueot
auto={S}:fog oneshot
text=Sacrifice Kami of False Hope: Prevent all combat damage that would be dealt this turn.
mana={W}
type=Creature
@@ -25369,7 +25370,7 @@ toughness=2
[card]
name=Knight-Captain of Eos
auto=token(Soldier,creature soldier, 1/1,white)*2
auto={W}{S(soldier|myBattlefield)}:preventAllcombatDamage ueot
auto={W}{S(soldier|myBattlefield)}:fog oneshot
text=When Knight-Captain of Eos enters the battlefield, put two 1/1 white Soldier creature tokens onto the battlefield. -- {W}, Sacrifice a Soldier: Prevent all combat damage that would be dealt this turn.
mana={4}{W}
type=Creature
@@ -28562,14 +28563,14 @@ type=Enchantment
[/card]
[card]
name=Maze of Ith
auto={T}:untap target(creature[attacking]) && preventAllCombatDamage to(mytgt) ueot && preventAllCombatDamage from(mytgt) ueot
auto={T}:untap target(creature[attacking]) && fog to(mytgt) oneshot && fog from(mytgt) oneshot
text={T}: Untap target attacking creature. Prevent all combat damage that would be dealt to and dealt by that creature this turn.
type=Land
[/card]
[card]
name=Maze of Shadows
auto={T}:Add {1}
auto={T}:untap target(creature[attacking;shadow]) && preventAllCombatDamage to(mytgt) ueot && preventAllCombatDamage from(mytgt) ueot
auto={T}:untap target(creature[attacking;shadow]) && fog to(mytgt) oneshot && fog from(mytgt) oneshot
text={T}: Add {1} to your mana pool. -- {T}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn.
type=Land
[/card]
@@ -32470,7 +32471,7 @@ toughness=3
[/card]
[card]
name=Orcish Healer
auto={R}{R}{T}:cantregenerate target(creature)
auto={R}{R}{T}:cantregen target(creature)
auto={B}{B}{R}{T}:regenerate target(creature[black;green])
auto={R}{G}{G}{T}:regenerate target(creature[black;green])
text={R}{R}, {T}: Target creature can't be regenerated this turn. -- {B}{B}{R}, {T}: Regenerate target black or green creature. -- {R}{G}{G}, {T}: Regenerate target black or green creature.
@@ -35365,6 +35366,16 @@ power=2
toughness=3
[/card]
[card]
name=Radiant Kavu
auto={R}{G}{W}:fog from(creature[blue]) oneshot && fog from(creature[black]) oneshot
text={R}{G}{W}: Prevent all combat damage blue creatures and black creatures would deal this turn.
mana={R}{G}{W}
type=Creature
subtype=Kavu
power=3
toughness=3
[/card]
[card]
name=Radiant's Dragoons
auto=life:5
auto=upcost[{3}{W}{0};next upkeep] moveTo(graveyard)
@@ -37257,11 +37268,11 @@ toughness=3
[/card]
[card]
name=Rith's Grove
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield) oneshot
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield?) oneshot && counter(0/0,-1,payment)
auto=moveto(mygraveyard) target(this|mybattlefield)
auto={T}:Add{R}
auto={T}:Add{G}
auto={T}:Add{W}
auto=this(counter{0/0.1.payment}<1) {T}:Add{R}
auto=this(counter{0/0.1.payment}<1) {T}:Add{G}
auto=this(counter{0/0.1.payment}<1) {T}:Add{W}
text=When Rith's Grove enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand. -- {T}: Add {R}, {G}, or {W} to your mana pool.
type=Land
subtype=Lair
@@ -38327,16 +38338,6 @@ power=3
toughness=4
[/card]
[card]
name=Sandskin
target=creature
auto=preventAllCombatDamage from(mytgt)
auto=preventAllCombatDamage to(mytgt)
text=Enchant creature -- Prevent all combat damage that would be dealt to and dealt by enchanted creature.
mana={2}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Sandstone Needle
auto=counter(0/0,2,Depletion)
auto={T}{C(0/0,-1,Depletion)}:Add{R}{R}
@@ -43245,6 +43246,18 @@ power=0
toughness=0
[/card]
[card]
name=Spike Weaver
auto=counter(1/1,3)
auto={2}{C(1/1,-1)}:counter(1/1,1) target(creature)
auto={2}{C(1/1,-1)}:fog oneshot
text=Spike Weaver enters the battlefield with three +1/+1 counters on it. -- {2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature. -- {1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.
mana={2}{G}{G}
type=Creature
subtype=Spike
power=0
toughness=0
[/card]
[card]
name=Spike Worker
text=Spike Worker enters the battlefield with a +1/+1 counter on it. -- {2}, Remove a +1/+1 counter from Spike Worker: Put a +1/+1 counter on target creature.
mana={2}{G}
@@ -43578,8 +43591,19 @@ mana={3}{G}
type=Sorcery
[/card]
[card]
name=Spore Flower
auto=@each my upkeep:counter(0/0,1,Spore)
auto={C(0/0,-3,Spore)}:fog oneshot
text=At the beginning of your upkeep, put a spore counter on Spore Flower. -- Remove three spore counters from Spore Flower: Prevent all combat damage that would be dealt this turn.
mana={G}{G}
type=Creature
subtype=Fungus
power=0
toughness=1
[/card]
[card]
name=Spore Frog
auto={S}:preventAllcombatDamage ueot
auto={S}:fog oneshot
text=Sacrifice Spore Frog: Prevent all combat damage that would be dealt this turn.
mana={G}
type=Creature
@@ -44059,6 +44083,14 @@ mana={1}{U}
type=Enchantment
[/card]
[card]
name=Statecraft
auto=preventAllCombatDamage to(creature|myBattlefield)
auto=preventAllCombatDamage from(creature|myBattlefield)
text=Prevent all combat damage that would be dealt to and dealt by creatures you control.
mana={3}{U}
type=Enchantment
[/card]
[card]
name=Staunch Defenders
auto=life:4
text=When Staunch Defenders enters the battlefield, you gain 4 life.
@@ -45256,7 +45288,7 @@ type=Enchantment
[/card]
[card]
name=Sunstone
auto={2}{S(land[snow])}:preventAllcombatDamage ueot
auto={2}{S(land[snow]|myBattlefield)}:fog oneshot
text={2}, Sacrifice a snow land: Prevent all combat damage that would be dealt this turn.
mana={3}
type=Artifact
@@ -48567,11 +48599,11 @@ type=nothing
[/card]
[card]
name=Treva's Ruins
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield) oneshot
auto=aslongas(land[-lair]|mybattlefield) moveto(myhand) target(land[-lair]|mybattlefield?) oneshot && counter(0/0,-1,payment)
auto=moveto(mygraveyard) target(this|mybattlefield)
auto={T}:Add{G}
auto={T}:Add{W}
auto={T}:Add{U}
auto=this(counter{0/0.1.payment}<1) {T}:Add{G}
auto=this(counter{0/0.1.payment}<1) {T}:Add{W}
auto=this(counter{0/0.1.payment}<1) {T}:Add{U}
text=When Treva's Ruins enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand. -- {T}: Add {G}, {W}, or {U} to your mana pool.
type=Land
subtype=Lair
@@ -49507,6 +49539,17 @@ power=2
toughness=2
[/card]
[card]
name=Urborg Phantom
abilities=cantblock
auto={U}:fog to(mytgt) oneshot && fog from(mytgt) oneshot
text=Urborg Phantom can't block. -- {U}: Prevent all combat damage that would be dealt to and dealt by Urborg Phantom this turn.
mana={2}{B}
type=Creature
subtype=Spirit Minion
power=3
toughness=1
[/card]
[card]
name=Urborg Shambler
auto=lord(creature[black]) -1/-1 other
text=Other black creatures get -1/-1.

View File

@@ -180,6 +180,8 @@ creature_bond.txt
curiosity1_i217.txt
curiosity2_i217.txt
crimson_kobolds.txt
crosis_s_catacombs_1.txt
crosis_s_catacombs_2.txt
crumble.txt
crystal_rod_i172.txt
dark_banishing.txt
@@ -284,6 +286,7 @@ hypnotic_specter.txt
icatian_priest.txt
imaginary_pet.txt
immaculate_magistrate.txt
incinerate.txt
instill_energy_i166.txt
iron_will_i270.txt
ivy_elemental.txt
@@ -326,6 +329,7 @@ master_decoy.txt
master_of_etherium.txt
masticore.txt
masticore2.txt
maze_of_ith.txt
meekstone.txt
memory_erosion.txt
millstone.txt
@@ -422,6 +426,7 @@ sphinx_summoner.txt
spirit_link.txt
spitting_earth.txt
spoils_of_evil.txt
spore_frog.txt
stasis.txt
steelclad_serpent1.txt
steelclad_serpent2.txt

View File

@@ -0,0 +1,20 @@
#NAME: Crosis's Catacombs
#DESC: When Crosis's Catacombs enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand.
#DESC: Catacombs enter the battlefield WITH a legal target to bounce.
[INIT]
firstmain
[PLAYER1]
inplay:Swamp
hand:Crosis's Catacombs
[PLAYER2]
[DO]
Crosis's Catacombs
choice 0
Swamp
[ASSERT]
firstmain
[PLAYER1]
inplay:Crosis's Catacombs
hand:Swamp
[PLAYER2]
[END]

View File

@@ -0,0 +1,18 @@
#NAME: Crosis's Catacombs
#DESC: When Crosis's Catacombs enters the battlefield, sacrifice it unless you return a non-Lair land you control to its owner's hand.
#DESC: Test 2: Catacombs enter the battlefield WITHOUT a legal target to bounce.
[INIT]
firstmain
[PLAYER1]
hand:Crosis's Catacombs
[PLAYER2]
[DO]
Crosis's Catacombs
choice 0
Crosis's Catacombs
[ASSERT]
firstmain
[PLAYER1]
graveyard:Crosis's Catacombs
[PLAYER2]
[END]

View File

@@ -0,0 +1,21 @@
#Testing Does Incinerate really prevent its target from keeping its regeneration shield?
[INIT]
FIRSTMAIN
[PLAYER1]
hand:Deathmark,Incinerate
inplay:Child Of Gaea
manapool:{2}{B}{R}{G}
[PLAYER2]
[DO]
Incinerate
Child of Gaea
Child of Gaea
Deathmark
Child of Gaea
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:Incinerate,Deathmark,Child of Gaea
manapool:{0}
[PLAYER2]
[END]

View File

@@ -0,0 +1,48 @@
#NAME:Maze of Ith
#Test:Does Maze of Ith prevent an attacking creature from dealing combat damage (for only one turn)?
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:prodigal sorcerer,raging goblin,maze of ith
[PLAYER2]
life:20
[DO]
fog
prodigal sorcerer
p2
next
#begin
next
#attackers
raging goblin
maze of ith
raging goblin
next
#blockers
next
#damage
next
#end combat
eot
eot
next
next
next
next
#combatbegins
next
#attackers
raging goblin
next
#blockers
next
#damage
next
#end combat
[ASSERT]
COMBATEND
[PLAYER1]
inplay:prodigal sorcerer,raging goblin,maze of ith
[PLAYER2]
life:18
[END]

View File

@@ -0,0 +1,49 @@
#NAME:Spore Frog
#Test:Does Spore Frog prevent all combat damage (for only one turn)?
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:prodigal sorcerer,raging goblin,panther warriors,spore frog
[PLAYER2]
life:20
[DO]
spore frog
prodigal sorcerer
p2
next
#begin
next
#attackers
raging goblin
panther warriors
next
#blockers
next
#damage
next
#end combat
eot
eot
next
next
next
next
#combatbegins
next
#attackers
raging goblin
panther warriors
next
#blockers
next
#damage
next
#end combat
[ASSERT]
COMBATEND
[PLAYER1]
inplay:prodigal sorcerer,raging goblin,panther warriors
graveyard:spore frog
[PLAYER2]
life:12
[END]

View File

@@ -1564,9 +1564,10 @@ class AStandardRegenerate:public ActivatedAbility{
}
int resolve(){
MTGCardInstance * _target = (MTGCardInstance *)target;
_target->regenerate();
return 1;
_target->regenerate();
return 1;
}
const char * getMenuText(){
@@ -2578,15 +2579,16 @@ public:
ability = NEW APreventAllCombatDamage(id,source,to, from);
}
int resolve(){
APreventAllCombatDamage * a = ability->clone();
a->target = this->target;
a->forceDestroy = -1; //Prevent the effect from getting destroyed because its source is not inplay
a->addToGame();
clones.push_back(a);
GenericInstantAbility * wrapper = NEW GenericInstantAbility(1,source,(Damageable *)(this->target),a);
wrapper->addToGame();
return 1;
}
int destroy(){
for (size_t i = 0; i < clones.size(); ++i){
clones[i]->forceDestroy = 0;

View File

@@ -265,7 +265,7 @@ class AbilityFactory{
Counter * parseCounter(string s, MTGCardInstance * target, Spell * spell = NULL);
int parsePowerToughness(string s, int *power, int *toughness);
int getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCardInstance * card = NULL, int id = 0,MTGGameZone * dest = NULL);
MTGAbility * parseMagicLine(string s, int id, Spell * spell, MTGCardInstance *card, int activated = 0, int forceUEOT = 0,MTGGameZone * dest = NULL);
MTGAbility * parseMagicLine(string s, int id, Spell * spell, MTGCardInstance *card, int activated = 0, int forceUEOT = 0,int oneShot = 0, MTGGameZone * dest = NULL);
int abilityEfficiency(MTGAbility * a, Player * p, int mode = MODE_ABILITY, TargetChooser * tc = NULL);
int magicText(int id, Spell * spell, MTGCardInstance * card = NULL, int mode = MODE_PUTINTOPLAY, TargetChooser * tc = NULL, MTGGameZone * dest = NULL);
static int computeX(Spell * spell, MTGCardInstance * card);

View File

@@ -101,7 +101,7 @@ class Constants
INTIMIDATE = 43,
DEATHTOUCH = 44,
HORSEMANSHIP = 45,
CANTREGENERATE = 46,
CANTREGEN = 46,
ONEBLOCKER = 47,
NB_BASIC_ABILITIES = 48,

View File

@@ -226,7 +226,7 @@ MTGAbility * AbilityFactory::getCoreAbility(MTGAbility * a){
//Parses a string and returns the corresponding MTGAbility object
//Returns NULL if parsing failed
//Beware, Spell CAN be null when the function is called by the AI trying to analyze the effects of a given card
MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTGCardInstance *card, int activated, int forceUEOT, MTGGameZone * dest){
MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTGCardInstance *card, int activated, int forceUEOT, int oneShot, MTGGameZone * dest){
size_t found;
string whitespaces (" \t\f\v\n\r");
@@ -709,6 +709,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
found = s.find("ueot");
if (found!= string::npos) forceUEOT = 1;
found = s.find("oneshot");
if (found!= string::npos) oneShot = 1;
//PreventCombat Damage
found = s.find("preventallcombatdamage");
@@ -739,6 +741,25 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
return ab;
}
//PreventCombat Damage
found = s.find("fog");
if (found != string::npos){
string to = "";
string from = "";
found = s.find("to(");
if (found != string::npos){
size_t end = s.find (")", found);
to = s.substr(found+3,end - found - 3);
}
found = s.find("from(");
if (found != string::npos){
size_t end = s.find (")", found);
from = s.substr(found+5,end - found - 5);
}
MTGAbility * a = NEW APreventAllCombatDamageUEOT(id,card,to,from);
a->oneShot = 1;
return a;
}
//Damage
found = s.find("damage");
@@ -1106,7 +1127,7 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
badAbilities[Constants::DEFENDER] = true;
badAbilities[Constants::DOESNOTUNTAP] = true;
badAbilities[Constants::MUSTATTACK] = true;
badAbilities[Constants::CANTREGENERATE] = true;
badAbilities[Constants::CANTREGEN] = true;
if (AInstantBasicAbilityModifierUntilEOT * abi = dynamic_cast<AInstantBasicAbilityModifierUntilEOT *>(a)) {
int result = badAbilities[abi->ability] ? BAKA_EFFECT_BAD : BAKA_EFFECT_GOOD;
@@ -1183,7 +1204,7 @@ int AbilityFactory::getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCar
magicText = "";
}
MTGAbility * a = parseMagicLine(line, result, spell, card,0,0,dest);
MTGAbility * a = parseMagicLine(line, result, spell, card,0,0,0,dest);
if (a){
v->push_back(a);
result++;

View File

@@ -234,13 +234,13 @@ int MTGCardInstance::isTapped(){
}
int MTGCardInstance::regenerate(){
if (has(Constants::CANTREGENERATE)) return 0;
if (has(Constants::CANTREGEN)) return 0;
return ++regenerateTokens;
}
int MTGCardInstance::triggerRegenerate(){
if (! regenerateTokens) return 0;
if (has(Constants::CANTREGENERATE)) return 0;
if (has(Constants::CANTREGEN)) return 0;
regenerateTokens--;
tap();
life = toughness;

View File

@@ -54,7 +54,7 @@ const char* Constants::MTGBasicAbilities[] = {
"intimidate",
"deathtouch",
"horsemanship",
"cantregenerate",
"cantregen",
"oneblocker",
};