- improved the parser for "lord", now can take any kind of "target", not only creature types (so it can now be used to code abilities such as Bad moon and crusade)
- fixed typos for goblin lord, zombie master, lord of atlantis
- Added "moveTo" keyword
- added a dozen cards
This commit is contained in:
wagic.the.homebrew
2008-12-14 12:07:01 +00:00
parent 6df5261294
commit 790e2a2cdf
11 changed files with 285 additions and 254 deletions
+91 -3
View File
@@ -102,6 +102,8 @@ toughness=3
[card] [card]
text=Flying (This creature can't be blocked except by creatures with flying or reach.) Other black creatures get +1/+1. Nonblack creatures get -1/-1. text=Flying (This creature can't be blocked except by creatures with flying or reach.) Other black creatures get +1/+1. Nonblack creatures get -1/-1.
abilities=Legendary, flying abilities=Legendary, flying
auto=lord(creature[black]) 1/1
auto=lord(creature[-black]) -1/-1 includeself
id=106525 id=106525
name=Ascendant Evincar name=Ascendant Evincar
rarity=R rarity=R
@@ -151,6 +153,17 @@ subtype=Bird
toughness=1 toughness=1
[/card] [/card]
[card] [card]
text=Blaze deals X damage to target creature or player.
target=creature,player
alias=1291
id=129484
name=Blaze
rarity=U
color=Red
type=Sorcery
mana={X}{R}
[/card]
[card]
text=Swampwalk (This creature is unblockable as long as defending player controls a Swamp.) text=Swampwalk (This creature is unblockable as long as defending player controls a Swamp.)
abilities=swampwalk abilities=swampwalk
id=129491 id=129491
@@ -329,7 +342,8 @@ toughness=5
[card] [card]
text=Other Elf creatures get +1/+1 and have forestwalk. (They're unblockable as long as defending player controls a Forest.) text=Other Elf creatures get +1/+1 and have forestwalk. (They're unblockable as long as defending player controls a Forest.)
id=129534 id=129534
auto=lord(elf) 1/1 forestwalk auto=lord(elf) 1/1
auto=lord(elf) forestwalk
name=Elvish Champion name=Elvish Champion
rarity=R rarity=R
color=Green color=Green
@@ -391,7 +405,8 @@ toughness=2
[card] [card]
text=Other Soldier creatures get +1/+1 and have first strike. (They deal combat damage before creatures without first strike.) text=Other Soldier creatures get +1/+1 and have first strike. (They deal combat damage before creatures without first strike.)
id=135258 id=135258
auto=lord(soldier) 1/1 first strike auto=lord(soldier) 1/1
auto=lord(soldier) first strike
name=Field Marshal name=Field Marshal
rarity=R rarity=R
color=White color=White
@@ -541,9 +556,20 @@ subtype=Spider
toughness=4 toughness=4
[/card] [/card]
[card] [card]
text=Creatures you control get +1/+1.
auto=lord(creature|myinplay) 1/1 includeself
id=129572
name=Glorious Anthem
rarity=R
color=White
type=Enchantment
mana={1}{W}{W}
[/card]
[card]
text=Other Goblin creatures get +1/+1 and have mountainwalk. (They're unblockable as long as defending player controls a Mountain.) text=Other Goblin creatures get +1/+1 and have mountainwalk. (They're unblockable as long as defending player controls a Mountain.)
id=129578 id=129578
alias=1296 auto=lord(goblin) 1/1
auto=lord(goblin) mountainwalk
name=Goblin King name=Goblin King
rarity=R rarity=R
color=Red color=Red
@@ -848,6 +874,20 @@ subtype=Demon
toughness=7 toughness=7
[/card] [/card]
[card] [card]
text=Other Zombie creatures get +1/+1. {1}{B}, {T}: Return target Zombie card from your graveyard to your hand.
auto=lord(zombie) 1/1
auto={1}{B}{T}:moveTo(myhand) target(zombie|mygraveyard)
id=129629
name=Lord of the Undead
rarity=R
color=Black
type=Creature
mana={1}{B}{B}
power=2
subtype=Zombie
toughness=2
[/card]
[card]
text={W}, {T}: Tap target creature. text={W}, {T}: Tap target creature.
auto={W},{T}:tap target(creature) auto={W},{T}:tap target(creature)
id=129638 id=129638
@@ -1075,6 +1115,19 @@ mana={3}{U}{U}
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
text=Phantom Warrior is unblockable.
abilities=unblockable
id=132064
name=Phantom Warrior
rarity=U
color=Blue
type=Creature
mana={1}{U}{U}
power=2
subtype=Illusion Warrior
toughness=2
[/card]
[card]
text=When Phyrexian Rager comes into play, you draw a card and you lose 1 life. text=When Phyrexian Rager comes into play, you draw a card and you lose 1 life.
auto=draw:1 auto=draw:1
auto=life:-1 auto=life:-1
@@ -1165,6 +1218,16 @@ type=Basic Land
subtype=Plains subtype=Plains
[/card] [/card]
[card] [card]
text=Creatures you control have trample. (If a creature you control would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player.)
auto=lord(creature|myinplay) trample includeself
id=136288
name=Primal Rage
rarity=U
color=Green
type=Enchantment
mana={1}{G}
[/card]
[card]
text={T}: Prodigal Pyromancer deals 1 damage to target creature or player. text={T}: Prodigal Pyromancer deals 1 damage to target creature or player.
id=134752 id=134752
alias=1217 alias=1217
@@ -1226,6 +1289,18 @@ type=Sorcery
mana={2}{G} mana={2}{G}
[/card] [/card]
[card] [card]
text=Return target creature card from your graveyard to your hand. Draw a card.
target=creature|mygraveyard
auto=moveTo(myhand)
auto=Draw:1
id=135188
name=Recover
rarity=C
color=Black
type=Sorcery
mana={2}{B}
[/card]
[card]
text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) {G}: Regenerate enchanted creature. (The next time that creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.) text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) {G}: Regenerate enchanted creature. (The next time that creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)
target=creature target=creature
auto={G}:regenerate auto={G}:regenerate
@@ -1775,6 +1850,19 @@ subtype=Bat
toughness=1 toughness=1
[/card] [/card]
[card] [card]
text={U}, {T}: Return target permanent you control to its owner's hand.
auto={U}{T}:moveTo(ownerhand) target(*|myinplay)
id=130834
name=Vedalken Mastermind
rarity=U
color=Blue
type=Creature
mana={U}{U}
power=1
subtype=Vedalken Wizard
toughness=2
[/card]
[card]
text=When Venerable Monk comes into play, you gain 2 life. text=When Venerable Monk comes into play, you gain 2 life.
auto=life:2 auto=life:2
id=129786 id=129786
+5 -72
View File
@@ -78,6 +78,8 @@ subtype=Aura
[/card] [/card]
[card] [card]
text={T}: Draw three cards. {2}{U}{U}: Return Arcanis the Omnipotent to its owner's hand. text={T}: Draw three cards. {2}{U}{U}: Return Arcanis the Omnipotent to its owner's hand.
abilities=legendary
auto={T}:Draw:3
id=106426 id=106426
name=Arcanis the Omnipotent name=Arcanis the Omnipotent
rarity=R rarity=R
@@ -221,15 +223,6 @@ mana={2}{G}
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
text=Blaze deals X damage to target creature or player.
id=129484
name=Blaze
rarity=U
color=Red
type=Sorcery
mana={X}{R}
[/card]
[card]
text={R}, Sacrifice Bloodfire Colossus: Bloodfire Colossus deals 6 damage to each creature and each player. text={R}, Sacrifice Bloodfire Colossus: Bloodfire Colossus deals 6 damage to each creature and each player.
id=129709 id=129709
name=Bloodfire Colossus name=Bloodfire Colossus
@@ -771,15 +764,6 @@ color=Land
type=Land type=Land
[/card] [/card]
[card] [card]
text=Creatures you control get +1/+1.
id=129572
name=Glorious Anthem
rarity=R
color=White
type=Enchantment
mana={1}{W}{W}
[/card]
[card]
text=Whenever Goblin Elite Infantry blocks or becomes blocked, it gets -1/-1 until end of turn. text=Whenever Goblin Elite Infantry blocks or becomes blocked, it gets -1/-1 until end of turn.
id=130380 id=130380
name=Goblin Elite Infantry name=Goblin Elite Infantry
@@ -1074,18 +1058,6 @@ color=Land
type=Land type=Land
[/card] [/card]
[card] [card]
text=Other Zombie creatures get +1/+1. {1}{B}, {T}: Return target Zombie card from your graveyard to your hand.
id=129629
name=Lord of the Undead
rarity=R
color=Black
type=Creature
mana={1}{B}{B}
power=2
subtype=Zombie
toughness=2
[/card]
[card]
text=Equipped creature gets +3/+0 and has lifelink and trample. (When it deals damage, you gain that much life. If it would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player.) Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) text=Equipped creature gets +3/+0 and has lifelink and trample. (When it deals damage, you gain that much life. If it would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player.) Equip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.)
id=129630 id=129630
name=Loxodon Warhammer name=Loxodon Warhammer
@@ -1203,6 +1175,7 @@ mana={2}
[/card] [/card]
[card] [card]
text=Soldier creatures have vigilance. (Attacking doesn't cause them to tap.) {2}{W}: Put a 1/1 white Soldier creature token into play. text=Soldier creatures have vigilance. (Attacking doesn't cause them to tap.) {2}{W}: Put a 1/1 white Soldier creature token into play.
auto=lord(soldier) vigilance includeself
id=129716 id=129716
name=Mobilization name=Mobilization
rarity=R rarity=R
@@ -1370,18 +1343,6 @@ subtype=Zombie Minion
toughness=4 toughness=4
[/card] [/card]
[card] [card]
text=Phantom Warrior is unblockable.
id=132064
name=Phantom Warrior
rarity=U
color=Blue
type=Creature
mana={1}{U}{U}
power=2
subtype=Illusion Warrior
toughness=2
[/card]
[card]
text={2}, {T}, Sacrifice a creature: Draw a card. text={2}, {T}, Sacrifice a creature: Draw a card.
id=135281 id=135281
name=Phyrexian Vault name=Phyrexian Vault
@@ -1421,15 +1382,6 @@ subtype=Angel
toughness=4 toughness=4
[/card] [/card]
[card] [card]
text=Creatures you control have trample. (If a creature you control would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player.)
id=136288
name=Primal Rage
rarity=U
color=Green
type=Enchantment
mana={1}{G}
[/card]
[card]
text={U}, {T}: You may tap or untap target creature. text={U}, {T}: You may tap or untap target creature.
id=129685 id=129685
name=Puppeteer name=Puppeteer
@@ -1504,15 +1456,6 @@ subtype=Masticore
toughness=5 toughness=5
[/card] [/card]
[card] [card]
text=Return target creature card from your graveyard to your hand. Draw a card.
id=135188
name=Recover
rarity=C
color=Black
type=Sorcery
mana={2}{B}
[/card]
[card]
text=Untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. text=Untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase.
id=129697 id=129697
name=Relentless Assault name=Relentless Assault
@@ -1709,6 +1652,8 @@ toughness=4
[/card] [/card]
[card] [card]
text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) Enchanted creature has flying. (It can't be blocked except by creatures with flying or reach.) {U}: Return Shimmering Wings to its owner's hand. text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) Enchanted creature has flying. (It can't be blocked except by creatures with flying or reach.) {U}: Return Shimmering Wings to its owner's hand.
target=creature
auto=flying
id=129553 id=129553
name=Shimmering Wings name=Shimmering Wings
rarity=C rarity=C
@@ -2185,18 +2130,6 @@ type=Enchantment
mana={3}{G} mana={3}{G}
[/card] [/card]
[card] [card]
text={U}, {T}: Return target permanent you control to its owner's hand.
id=130834
name=Vedalken Mastermind
rarity=U
color=Blue
type=Creature
mana={U}{U}
power=1
subtype=Vedalken Wizard
toughness=2
[/card]
[card]
text=At the beginning of each upkeep, put a 1/1 green Saproling creature token into play under your control. text=At the beginning of each upkeep, put a 1/1 green Saproling creature token into play under your control.
id=129788 id=129788
name=Verdant Force name=Verdant Force
+10
View File
@@ -46,6 +46,8 @@ toughness=4
[card] [card]
text=Other red creatures you control get +1/+1. Other white creatures you control get +1/+1. Whenever you play a red spell, Balefire Liege deals 3 damage to target player. Whenever you play a white spell, you gain 3 life. text=Other red creatures you control get +1/+1. Other white creatures you control get +1/+1. Whenever you play a red spell, Balefire Liege deals 3 damage to target player. Whenever you play a white spell, you gain 3 life.
id=158104 id=158104
auto=lord(creature[red]) 1/1
auto=lord(creature[white]) 1/1
name=Balefire Liege name=Balefire Liege
rarity=R rarity=R
type=Creature type=Creature
@@ -259,6 +261,8 @@ toughness=3
[card] [card]
text=Other black creatures you control get +1/+1. Other green creatures you control get +1/+1. At the beginning of your upkeep, you may put a 1/1 black and green Worm creature token into play. text=Other black creatures you control get +1/+1. Other green creatures you control get +1/+1. At the beginning of your upkeep, you may put a 1/1 black and green Worm creature token into play.
id=157406 id=157406
auto=lord(creature[black]) 1/1
auto=lord(creature[green]) 1/1
name=Creakwood Liege name=Creakwood Liege
rarity=R rarity=R
type=Creature type=Creature
@@ -278,6 +282,8 @@ mana={1}{B}
[card] [card]
text=Other white creatures you control get +1/+1. Other black creatures you control get +1/+1. Whenever you play a white spell, you may tap target creature. Whenever you play a black spell, you may destroy target creature if it's tapped. text=Other white creatures you control get +1/+1. Other black creatures you control get +1/+1. Whenever you play a white spell, you may tap target creature. Whenever you play a black spell, you may destroy target creature if it's tapped.
id=157288 id=157288
auto=lord(creature[black]) 1/1
auto=lord(creature[white]) 1/1
name=Deathbringer Liege name=Deathbringer Liege
rarity=R rarity=R
type=Creature type=Creature
@@ -786,6 +792,8 @@ toughness=3
[card] [card]
text=Other blue creatures you control get +1/+1. Other red creatures you control get +1/+1. {UR}{UR}{UR}{UR}: You may put a blue or red creature card from your hand into play. text=Other blue creatures you control get +1/+1. Other red creatures you control get +1/+1. {UR}{UR}{UR}{UR}: You may put a blue or red creature card from your hand into play.
id=151132 id=151132
auto=lord(creature[blue]) 1/1
auto=lord(creature[red]) 1/1
name=Mindwrack Liege name=Mindwrack Liege
rarity=R rarity=R
type=Creature type=Creature
@@ -813,6 +821,8 @@ mana={2}{RW}
[card] [card]
text=Other green creatures you control get +1/+1. Other blue creatures you control get +1/+1. Untap all green and/or blue creatures you control during each other player's untap step. text=Other green creatures you control get +1/+1. Other blue creatures you control get +1/+1. Untap all green and/or blue creatures you control during each other player's untap step.
id=152091 id=152091
auto=lord(creature[green]) 1/1
auto=lord(creature[blue]) 1/1
name=Murkfiend Liege name=Murkfiend Liege
rarity=R rarity=R
type=Creature type=Creature
+8 -3
View File
@@ -107,6 +107,7 @@ toughness=2
[/card] [/card]
[card] [card]
text=Black creatures get +1/+1. text=Black creatures get +1/+1.
auto=lord(creature[black]) 1/1 includeself
id=1144 id=1144
name=Bad Moon name=Bad Moon
rarity=R rarity=R
@@ -423,6 +424,7 @@ mana={G}
[/card] [/card]
[card] [card]
text=White creatures get +1/+1. text=White creatures get +1/+1.
auto=lord(creature[white]) 1/1 includeself
id=1341 id=1341
name=Crusade name=Crusade
rarity=R rarity=R
@@ -860,7 +862,8 @@ toughness=1
[card] [card]
text=Other Goblin creatures get +1/+1 and have mountainwalk. (They're unblockable as long as defending player controls a Mountain.) text=Other Goblin creatures get +1/+1 and have mountainwalk. (They're unblockable as long as defending player controls a Mountain.)
id=1296 id=1296
auto=lord(goblin) 1/1 mountainwalk auto=lord(goblin) 1/1
auto=lord(goblin) mountainwalk
name=Goblin King name=Goblin King
rarity=R rarity=R
type=Creature type=Creature
@@ -1292,7 +1295,8 @@ toughness=1
[/card] [/card]
[card] [card]
text=Other Merfolk creatures get +1/+1 and have islandwalk. text=Other Merfolk creatures get +1/+1 and have islandwalk.
auto=lord(merfolk) 1/1 islandwalk auto=lord(merfolk) 1/1
auto=lord(merfolk) islandwalk
id=1206 id=1206
name=Lord of Atlantis name=Lord of Atlantis
rarity=R rarity=R
@@ -2448,7 +2452,8 @@ mana={2}{W}{W}
[/card] [/card]
[card] [card]
text=Zombie creatures have swampwalk. All Zombies have "{B}: Regenerate this permanent." text=Zombie creatures have swampwalk. All Zombies have "{B}: Regenerate this permanent."
auto=lord(zombie) swampwalk {B}:regenerate auto=lord(zombie) swampwalk
auto=lord(zombie) {B}:regenerate
id=1188 id=1188
name=Zombie Master name=Zombie Master
rarity=R rarity=R
+53
View File
@@ -225,6 +225,15 @@ subtype=Spirit
toughness=1 toughness=1
[/card] [/card]
[card] [card]
text=Destroy all nonwhite creatures.
auto=destroy all(creature[-white])
id=146053
name=Mass Calcify
rarity=R
type=Sorcery
mana={5}{W}{W}
[/card]
[card]
text={T}: Add {R} to your mana pool. text={T}: Add {R} to your mana pool.
auto={T}:Add{R} auto={T}:Add{R}
id=157888 id=157888
@@ -295,6 +304,27 @@ subtype=Faerie Soldier
toughness=1 toughness=1
[/card] [/card]
[card] [card]
text=Creatures you control have double strike.
auto=lord(creature|myinplay) double strike
id=146727
name=Rage Reflection
rarity=R
type=Enchantment
mana={4}{R}{R}
[/card]
[card]
text=Green creatures you control have trample.
auto=lord(creature[green]|myinplay) trample
id=141972
name=Roughshod Mentor
rarity=U
type=Creature
mana={5}{G}
power=5
subtype=Giant Warrior
toughness=4
[/card]
[card]
text=Protection from blue, from black, and from red text=Protection from blue, from black, and from red
abilities=protection from blue, protection from black, protection from red abilities=protection from blue, protection from black, protection from red
id=146735 id=146735
@@ -540,6 +570,20 @@ type=Basic Land
subtype=Swamp subtype=Swamp
[/card] [/card]
[card] [card]
text=Flash Other white creatures you control get +1/+1. Other blue creatures you control get +1/+1.
abilities=flash
auto=lord(creature[white]|myinplay) 1/1
auto=lord(creature[blue]|myinplay) 1/1
id=147409
name=Thistledown Liege
rarity=R
type=Creature
mana={1}{WU}{WU}{WU}
power=1
subtype=Kithkin Knight
toughness=3
[/card]
[card]
text=Flash Enchant creature Enchanted creature gets -3/-0. text=Flash Enchant creature Enchanted creature gets -3/-0.
abilities=flash abilities=flash
auto=-3/0 auto=-3/0
@@ -551,6 +595,15 @@ mana={2}{UB}
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
text={2}, {T}: Tap target creature.
auto={2},[T}:tap target(creature)
id=147420
name=Trip Noose
rarity=U
type=Artifact
mana={2}
[/card]
[card]
text=Flying text=Flying
abilities=flying abilities=flying
id=153967 id=153967
+3 -47
View File
@@ -1197,14 +1197,6 @@ type=Instant
mana={1}{RG} mana={1}{RG}
[/card] [/card]
[card] [card]
text=Destroy all nonwhite creatures.
id=146053
name=Mass Calcify
rarity=R
type=Sorcery
mana={5}{W}{W}
[/card]
[card]
text=When Medicine Runner comes into play, you may remove a counter from target permanent. text=When Medicine Runner comes into play, you may remove a counter from target permanent.
id=141977 id=141977
name=Medicine Runner name=Medicine Runner
@@ -1572,14 +1564,6 @@ type=Instant
mana={2}{U}{U} mana={2}{U}{U}
[/card] [/card]
[card] [card]
text=Creatures you control have double strike.
id=146727
name=Rage Reflection
rarity=R
type=Enchantment
mana={4}{R}{R}
[/card]
[card]
text=Whenever a creature with flying attacks you, Raking Canopy deals 4 damage to it. text=Whenever a creature with flying attacks you, Raking Canopy deals 4 damage to it.
id=158691 id=158691
name=Raking Canopy name=Raking Canopy
@@ -1704,17 +1688,6 @@ subtype=Giant Shaman
toughness=4 toughness=4
[/card] [/card]
[card] [card]
text=Green creatures you control have trample.
id=141972
name=Roughshod Mentor
rarity=U
type=Creature
mana={5}{G}
power=5
subtype=Giant Warrior
toughness=4
[/card]
[card]
text=As Runed Halo comes into play, name a card. You have protection from the chosen name. (You can't be targeted, dealt damage, or enchanted by anything with that name.) text=As Runed Halo comes into play, name a card. You have protection from the chosen name. (You can't be targeted, dealt damage, or enchanted by anything with that name.)
id=154005 id=154005
name=Runed Halo name=Runed Halo
@@ -1836,7 +1809,7 @@ mana={2}{GW}
subtype=Aura subtype=Aura
[/card] [/card]
[card] [card]
text=Flying {1}{WU}, {T}: Tap target creature. ({T} is the untap symbol.) text=Flying {1}{WU}, {Q}: Tap target creature. ({Q} is the untap symbol.)
id=142027 id=142027
name=Silkbind Faerie name=Silkbind Faerie
rarity=C rarity=C
@@ -2056,17 +2029,6 @@ subtype=Kithkin Soldier Wizard
toughness=2 toughness=2
[/card] [/card]
[card] [card]
text=Flash Other white creatures you control get +1/+1. Other blue creatures you control get +1/+1.
id=147409
name=Thistledown Liege
rarity=R
type=Creature
mana={1}{WU}{WU}{WU}
power=1
subtype=Kithkin Knight
toughness=3
[/card]
[card]
text=Thornwatch Scarecrow has wither as long as you control a green creature. (It deals damage to creatures in the form of -1/-1 counters.) Thornwatch Scarecrow has vigilance as long as you control a white creature. text=Thornwatch Scarecrow has wither as long as you control a green creature. (It deals damage to creatures in the form of -1/-1 counters.) Thornwatch Scarecrow has vigilance as long as you control a white creature.
id=151634 id=151634
name=Thornwatch Scarecrow name=Thornwatch Scarecrow
@@ -2135,14 +2097,6 @@ type=Sorcery
mana={4}{BR} mana={4}{BR}
[/card] [/card]
[card] [card]
text={2}, {T}: Tap target creature.
id=147420
name=Trip Noose
rarity=U
type=Artifact
mana={2}
[/card]
[card]
text=Remove target creature from the game. Return that card to play under its owner's control at end of turn. text=Remove target creature from the game. Return that card to play under its owner's control at end of turn.
id=158752 id=158752
name=Turn to Mist name=Turn to Mist
@@ -2271,6 +2225,8 @@ mana={3}{R}
[/card] [/card]
[card] [card]
text=Other green creatures you control get +1/+1. Other white creatures you control get +1/+1. If a spell or ability an opponent controls causes you to discard Wilt-Leaf Liege, put it into play instead of putting it into your graveyard. text=Other green creatures you control get +1/+1. Other white creatures you control get +1/+1. If a spell or ability an opponent controls causes you to discard Wilt-Leaf Liege, put it into play instead of putting it into your graveyard.
auto=lord(creature[green]) 1/1
auto=lord(creature[white]) 1/1
id=147439 id=147439
name=Wilt-Leaf Liege name=Wilt-Leaf Liege
rarity=R rarity=R
+34 -85
View File
@@ -43,11 +43,36 @@ class ADrawer:public ActivatedAbility{
}; };
//Moves Cards from a zone to another
class AZoneMover:public TargetAbility{
public:
string destinationZone;
AZoneMover(int _id, MTGCardInstance * _source, TargetChooser * _tc,string destZone, ManaCost * _cost = NULL):TargetAbility(_id,_source, _tc,_cost){
destinationZone = destZone;
}
int resolve(){
MTGCardInstance * _target = tc->getNextCardTarget();
if(_target){
Player* p = _target->controller();
if (p){
MTGGameZone * fromZone = _target->getCurrentZone();
MTGGameZone * destZone = MTGGameZone::stringToZone(destinationZone, source);
p->game->putInZone(_target,fromZone,destZone);
}
return 1;
}
return 0;
}
};
//Destroyer. TargetAbility //Destroyer. TargetAbility
class ADestroyer:public TargetAbility{ class ADestroyer:public TargetAbility{
public: public:
int bury; int bury;
ADestroyer(int _id, MTGCardInstance * _source, TargetChooser * _tc = NULL, int _bury = 0):TargetAbility(_id,_source, _tc),bury(_bury){ ADestroyer(int _id, MTGCardInstance * _source, TargetChooser * _tc = NULL, int _bury = 0, ManaCost * _cost=NULL):TargetAbility(_id,_source, _tc,_cost),bury(_bury){
if (!tc) tc = NEW CreatureTargetChooser(); if (!tc) tc = NEW CreatureTargetChooser();
} }
@@ -73,7 +98,7 @@ class ADestroyer:public TargetAbility{
//Destroyer. TargetAbility //Destroyer. TargetAbility
class ABurier:public ADestroyer{ class ABurier:public ADestroyer{
public: public:
ABurier(int _id, MTGCardInstance * _source, TargetChooser * _tc = NULL):ADestroyer(_id,_source, tc,1){ ABurier(int _id, MTGCardInstance * _source, TargetChooser * _tc = NULL,ManaCost * _cost=NULL):ADestroyer(_id,_source, _tc,1,_cost){
} }
const char * getMenuText(){ const char * getMenuText(){
@@ -869,13 +894,16 @@ class AConvertLandToCreatures:public ListMaintainerAbility{
//Lords (Merfolk lord...) give power and toughness to OTHER creatures of their type, they can give them special abilities, regeneration //Lords (Merfolk lord...) give power and toughness to OTHER creatures of their type, they can give them special abilities, regeneration
class ALord:public ListMaintainerAbility{ class ALord:public ListMaintainerAbility{
public: public:
string type; TargetChooser * tc;
int power, toughness; int power, toughness;
int ability; int ability;
ManaCost * regenCost; ManaCost * regenCost;
int includeSelf;
map<MTGCardInstance *, MTGAbility *> regenerations; map<MTGCardInstance *, MTGAbility *> regenerations;
ALord(int _id, MTGCardInstance * card, const char * _type, int _power = 0 , int _toughness = 0, int _ability = -1, ManaCost * _regenCost = NULL):ListMaintainerAbility(_id,card){ ALord(int _id, MTGCardInstance * card, TargetChooser * _tc, int _includeSelf, int _power = 0 , int _toughness = 0, int _ability = -1, ManaCost * _regenCost = NULL):ListMaintainerAbility(_id,card){
type = _type; tc = _tc;
tc->source = NULL;
includeSelf = _includeSelf;
power = _power; power = _power;
toughness = _toughness; toughness = _toughness;
ability = _ability; ability = _ability;
@@ -883,7 +911,7 @@ class ALord:public ListMaintainerAbility{
} }
int canBeInList(MTGCardInstance * card){ int canBeInList(MTGCardInstance * card){
if (card!=source && card->isACreature() && card->hasSubtype(type)) return 1; if ( (includeSelf || card!=source) && tc->canTarget(card)) return 1;
return 0; return 0;
} }
@@ -915,59 +943,6 @@ class ALord:public ListMaintainerAbility{
}; };
//Lords (Merfolk lord...) give power and toughness to OTHER creatures of a given color, they can give them special abilities, regeneration
class AColorLord:public ListMaintainerAbility{
public:
int color;
int notcolor;
int power, toughness;
int ability;
ManaCost * regenCost;
map<MTGCardInstance *, MTGAbility *> regenerations;
AColorLord(int _id, MTGCardInstance * card, int _color, int _notcolor = -1, int _power = 0 , int _toughness = 0, int _ability = -1, ManaCost * _regenCost = NULL):ListMaintainerAbility(_id,card){
color = _color;
notcolor = _notcolor;
power = _power;
toughness = _toughness;
ability = _ability;
regenCost = _regenCost;
}
int canBeInList(MTGCardInstance * card){
if (notcolor > -1){
if (card!=source && card->isACreature() && !card->hasColor(notcolor)) return 1;
}else{
if (card!=source && card->isACreature() && card->hasColor(color)) return 1;
}
return 0;
}
int added(MTGCardInstance * card){
card->power += power;
card->addToToughness(toughness);
if (ability != -1) card->basicAbilities[ability] +=1;
if (regenCost){
AStandardRegenerate * regen = NEW AStandardRegenerate(0, card, card, regenCost);
regenerations[card] = regen;
game->addObserver(regen);
}
return 1;
}
int removed(MTGCardInstance * card){
card->power -= power;
card->addToToughness(-toughness);
if (ability != -1 && card->basicAbilities[ability]) card->basicAbilities[ability] -=1;
if (regenCost){
if(regenerations.find(card) != regenerations.end()){
game->removeObserver(regenerations[card]);
regenerations.erase(card);
}
}
return 1;
}
};
/* Standard Damager, can choose a NEW target each time the price is paid */ /* Standard Damager, can choose a NEW target each time the price is paid */
@@ -1785,32 +1760,6 @@ class AAnimateDead:public MTGAbility{
} }
}; };
//1144 Bad Moon, 1341 Crusade
class ABadMoon:public ListMaintainerAbility{
public:
int color;
ABadMoon(int _id, MTGCardInstance * _source, int _color = MTG_COLOR_BLACK):ListMaintainerAbility(_id, _source),color(_color){
}
int canBeInList(MTGCardInstance * card){
if (card->isACreature() && card->hasColor(color)) return 1;
return 0;
}
int added(MTGCardInstance * card){
card->power += 1;
card->addToToughness(1);
return 1;
}
int removed(MTGCardInstance * card){
card->power -= 1;
card->addToToughness(-1);
return 1;
}
};
//1159 Erg Raiders //1159 Erg Raiders
class AErgRaiders:public MTGAbility{ class AErgRaiders:public MTGAbility{
+6
View File
@@ -34,6 +34,7 @@ class MTGGameZone {
int hasType(const char * value); int hasType(const char * value);
void setOwner(Player * player); void setOwner(Player * player);
MTGCardInstance * lastCardDrawn; MTGCardInstance * lastCardDrawn;
static MTGGameZone * stringToZone(string zoneName, MTGCardInstance * source);
}; };
class MTGLibrary: public MTGGameZone { class MTGLibrary: public MTGGameZone {
@@ -52,6 +53,9 @@ class MTGHand: public MTGGameZone {
public: public:
}; };
class MTGRemovedFromGame: public MTGGameZone {
public:
};
class MTGStack: public MTGGameZone { class MTGStack: public MTGGameZone {
public: public:
@@ -78,6 +82,8 @@ class MTGPlayerCards {
MTGHand * hand; MTGHand * hand;
MTGInPlay * inPlay; MTGInPlay * inPlay;
MTGStack * stack; MTGStack * stack;
MTGRemovedFromGame * removedFromGame;
MTGAllCards * collection; MTGAllCards * collection;
MTGPlayerCards(MTGAllCards * _collection, int * idList, int idListSize); MTGPlayerCards(MTGAllCards * _collection, int * idList, int idListSize);
+35 -25
View File
@@ -9,6 +9,8 @@
#include "../include/MTGDeck.h" #include "../include/MTGDeck.h"
int AbilityFactory::countCards(TargetChooser * tc, Player * player, int option){ int AbilityFactory::countCards(TargetChooser * tc, Player * player, int option){
int result = 0; int result = 0;
GameObserver * game = GameObserver::GetInstance(); GameObserver * game = GameObserver::GetInstance();
@@ -122,7 +124,8 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
TargetChooser * tc = NULL; TargetChooser * tc = NULL;
int doTap = 0; int doTap = 0;
string lordType = ""; TargetChooser * lordTargets = NULL;
int lordIncludeSelf = 0;
Trigger * trigger = parseTrigger(s); Trigger * trigger = parseTrigger(s);
//Dirty way to remove the trigger text (could get in the way) //Dirty way to remove the trigger text (could get in the way)
@@ -150,8 +153,11 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
if (dryMode) return BAKA_EFFECT_GOOD; if (dryMode) return BAKA_EFFECT_GOOD;
unsigned int end = s.find(")", found+5); unsigned int end = s.find(")", found+5);
if (end != string::npos){ if (end != string::npos){
lordType = s.substr(found+5,end-found-5).c_str(); string lordType = s.substr(found+5,end-found-5).c_str();
TargetChooserFactory tcf;
lordTargets = tcf.createTargetChooser(lordType, card);
} }
if (s.find("includeself") != string::npos) lordIncludeSelf = 1;
} }
//foreach. Very basic, needs to be improved ! //foreach. Very basic, needs to be improved !
@@ -189,8 +195,8 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
if (dryMode) return BAKA_EFFECT_GOOD; if (dryMode) return BAKA_EFFECT_GOOD;
ManaCost * cost = ManaCost::parseManaCost(s); ManaCost * cost = ManaCost::parseManaCost(s);
if (lordType.size() > 0){ if (lordTargets){
game->addObserver(NEW ALord(id,card,lordType.c_str(),0,0,-1,cost)); game->addObserver(NEW ALord(id,card,lordTargets,lordIncludeSelf,0,0,-1,cost));
}else{ }else{
if (tc){ if (tc){
@@ -204,6 +210,27 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
continue; continue;
} }
//MoveTo Move a card from a zone to another
found = s.find("moveto(");
if (found != string::npos){
if (dryMode) return BAKA_EFFECT_BAD; //TODO : depends on where from, where to...
int end = s.find(")");
string szone = s.substr(found + 7,end - found - 7);
if (tc){
ManaCost * cost = ManaCost::parseManaCost(s);
if (cost->getConvertedCost() == 0){
delete cost;
cost = NULL;
}
game->addObserver(NEW AZoneMover(id,card,tc,szone,cost));
}else{
MTGGameZone * fromZone = target->getCurrentZone();
MTGGameZone * destZone = MTGGameZone::stringToZone(szone, target);
target->controller()->game->putInZone(target,fromZone,destZone);
}
result++;
continue;
}
//Bury //Bury
found = s.find("bury"); found = s.find("bury");
if (found != string::npos){ if (found != string::npos){
@@ -386,8 +413,8 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
} }
ManaCost * cost = ManaCost::parseManaCost(s); ManaCost * cost = ManaCost::parseManaCost(s);
if (lordType.size() > 0){ if (lordTargets){
game->addObserver(NEW ALord(id,card,lordType.c_str(),power,toughness)); game->addObserver(NEW ALord(id,card,lordTargets,lordIncludeSelf,power,toughness));
}else{ }else{
if(tc){ if(tc){
game->addObserver(NEW ATargetterPowerToughnessModifierUntilEOT(id, card,power,toughness, cost, tc)); game->addObserver(NEW ATargetterPowerToughnessModifierUntilEOT(id, card,power,toughness, cost, tc));
@@ -447,8 +474,8 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
} }
ManaCost * cost = ManaCost::parseManaCost(s); ManaCost * cost = ManaCost::parseManaCost(s);
if (lordType.size() > 0){ if (lordTargets){
game->addObserver(NEW ALord(id,card,lordType.c_str(),0,0,j)); game->addObserver(NEW ALord(id,card,lordTargets,lordIncludeSelf,0,0,j));
}else{ }else{
if (tc){ if (tc){
@@ -539,12 +566,6 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
game->addObserver(ability); game->addObserver(ability);
break; break;
} }
case 106525: //Ascendant Evincar
{
game->addObserver(NEW AColorLord(_id, card,MTG_COLOR_BLACK,-1,1,1));
game->addObserver(NEW AColorLord(_id + 1, card,0,MTG_COLOR_BLACK,-1,-1));
break;
}
case 1096: //Basalt Monolith case 1096: //Basalt Monolith
{ {
@@ -856,11 +877,6 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
game->addObserver(NEW AAnimateDead(_id, card, card->target)); game->addObserver(NEW AAnimateDead(_id, card, card->target));
break; break;
} }
case 1144: //Bad moon
{
game->addObserver(NEW ABadMoon(_id,card));
break;
}
case 1148 : //Cursed lands case 1148 : //Cursed lands
{ {
game->addObserver(NEW AWanderlust(_id, card, card->target)); game->addObserver(NEW AWanderlust(_id, card, card->target));
@@ -1249,12 +1265,6 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
game->addObserver(NEW AOldSchoolDeathtouch(_id,card)); game->addObserver(NEW AOldSchoolDeathtouch(_id,card));
break; break;
} }
case 1341: //Crusade:
{
game->addObserver(NEW ABadMoon(_id,card, MTG_COLOR_WHITE));
break;
}
case 1346: //Green Ward case 1346: //Green Ward
{ {
game->addObserver(NEW AProtectionFrom( _id,card, card->target, MTG_COLOR_GREEN)); game->addObserver(NEW AProtectionFrom( _id,card, card->target, MTG_COLOR_GREEN));
+1
View File
@@ -201,6 +201,7 @@ int MTGCardInstance::reset(){
return 1; return 1;
} }
Player * MTGCardInstance::controller(){ Player * MTGCardInstance::controller(){
GameObserver * game = GameObserver::GetInstance(); GameObserver * game = GameObserver::GetInstance();
if (!game) return NULL; if (!game) return NULL;
+20
View File
@@ -320,3 +320,23 @@ void MTGLibrary::shuffleTopToBottom(int nbcards){
cards[i] = _cards[i]; cards[i] = _cards[i];
} }
} }
MTGGameZone * MTGGameZone::stringToZone(string zoneName, MTGCardInstance * source){
Player * p = source->controller();
if(zoneName.compare("mygraveyard") == 0)return p->game->graveyard;
if(zoneName.compare("opponentgraveyard") == 0) return p->opponent()->game->graveyard;
if(zoneName.compare("ownergraveyard") == 0) return source->owner->game->graveyard;
if(zoneName.compare("myinplay") == 0)return p->game->inPlay;
if(zoneName.compare("opponentinplay") == 0) return p->opponent()->game->inPlay;
if(zoneName.compare("ownerinplay") == 0) return source->owner->game->inPlay;
if(zoneName.compare("myhand") == 0)return p->game->hand;
if(zoneName.compare("opponenthand") == 0) return p->opponent()->game->hand;
if(zoneName.compare("ownerhand") == 0) return source->owner->game->hand;
if(zoneName.compare("myremovedfromgame") == 0)return p->game->removedFromGame;
if(zoneName.compare("opponentremovedfromgame") == 0) return p->opponent()->game->removedFromGame;
if(zoneName.compare("ownerhremovedfromgame") == 0) return source->owner->game->removedFromGame;
}