Erwan
- 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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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){
|
||||||
@@ -371,38 +398,38 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card){
|
|||||||
unsigned int end = s.find(" ",start);
|
unsigned int end = s.find(" ",start);
|
||||||
int toughness;
|
int toughness;
|
||||||
if (end != string::npos){
|
if (end != string::npos){
|
||||||
toughness = atoi(s.substr(found+1,end-found-1).c_str());
|
toughness = atoi(s.substr(found+1,end-found-1).c_str());
|
||||||
}else{
|
}else{
|
||||||
toughness = atoi(s.substr(found+1).c_str());
|
toughness = atoi(s.substr(found+1).c_str());
|
||||||
}
|
}
|
||||||
if (dryMode){
|
if (dryMode){
|
||||||
if (power >=0 && toughness >= 0 ) return BAKA_EFFECT_GOOD;
|
if (power >=0 && toughness >= 0 ) return BAKA_EFFECT_GOOD;
|
||||||
return BAKA_EFFECT_BAD;
|
return BAKA_EFFECT_BAD;
|
||||||
}
|
}
|
||||||
int limit = 0;
|
int limit = 0;
|
||||||
unsigned int limit_str = s.find("limit:");
|
unsigned int limit_str = s.find("limit:");
|
||||||
if (limit_str != string::npos){
|
if (limit_str != string::npos){
|
||||||
limit = atoi(s.substr(limit_str+6).c_str());
|
limit = atoi(s.substr(limit_str+6).c_str());
|
||||||
}
|
}
|
||||||
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));
|
||||||
}else{
|
}else{
|
||||||
if (cost->getConvertedCost() == 0){
|
if (cost->getConvertedCost() == 0){
|
||||||
delete cost;
|
delete cost;
|
||||||
if(card->hasType("enchantment")){
|
if(card->hasType("enchantment")){
|
||||||
game->addObserver(NEW APowerToughnessModifier(id, card, target,power,toughness));
|
game->addObserver(NEW APowerToughnessModifier(id, card, target,power,toughness));
|
||||||
}else{
|
}else{
|
||||||
game->addObserver(NEW AInstantPowerToughnessModifierUntilEOT(id, card, target,power,toughness));
|
game->addObserver(NEW AInstantPowerToughnessModifierUntilEOT(id, card, target,power,toughness));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
game->addObserver(NEW APowerToughnessModifierUntilEndOfTurn(id, card, target,power,toughness, cost, limit));
|
game->addObserver(NEW APowerToughnessModifierUntilEndOfTurn(id, card, target,power,toughness, cost, limit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result++;
|
result++;
|
||||||
continue;
|
continue;
|
||||||
@@ -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));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user