-Laurent Added @damaged, cards to 10E and LEG, small correction to ALA, ARB, CHK, EVE and ZEN

- Added @damaged works fine (tested with thieving magpie), please test your additions if you plan to add some cards with this keyword and report if buggy. As the other trigger, you cannot have a target unless there is a may ability.
- Added 2 cards to 10E - Reminisce and Thieving Magpie both tested and working.
- Added 2 cards to LEG - Jovial Evil and Spiritual Sanctuary (not tested yet) but should work.
This commit is contained in:
wagic.laurent
2009-10-15 09:30:09 +00:00
parent e23fac82e0
commit adba482340
12 changed files with 187 additions and 62 deletions

View File

@@ -364,7 +364,7 @@ mana={1}{U}{U}
[/card]
[card]
text=Reach (This creature can block creatures with flying.)
abilities=Reach
abilities=reach
id=135185
name=Canopy Spider
rarity=C
@@ -1487,7 +1487,7 @@ mana={2}
[/card]
[card]
text=First strike, forestwalk, vigilance (This creature deals combat damage before creatures without first strike, it's unblockable as long as defending player controls a Forest, and attacking doesn't cause this creature to tap.)
abilities=first strike,forestwalk,vigilance,legendary
abilities=first strike,forestwalk,vigilance,legendary
id=106405
name=Mirri, Cat Warrior
rarity=R
@@ -1951,6 +1951,16 @@ subtype=Rat
toughness=2
[/card]
[card]
text=Target player shuffles his or her graveyard into his or her library.
id=129698
target=player
name=Reminisce
rarity=U
color=Blue
type=Sorcery
mana={2}{U}
[/card]
[card]
text=Counter target creature spell.
target=creature|stack
auto=fizzle
@@ -2305,6 +2315,20 @@ subtype=Elf
toughness=1
[/card]
[card]
text=Flying (This creature can't be blocked except by creatures with flying or reach.) Whenever Thieving Magpie deals damage to an opponent, you draw a card.
id=129764
abilities=flying
name=Thieving Magpie
auto=@damaged(opponent):draw:1 controller
rarity=U
color=Blue
type=Creature
mana={2}{U}{U}
power=1
subtype=Bird
toughness=3
[/card]
[card]
text={2}: Target white or black creature gains flying until end of turn. (It can't be blocked except by creatures with flying or reach.)
auto={2}:flying target(creature[white;black])
id=130998

View File

@@ -32,6 +32,9 @@ mana={2}{B}{B}
text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) Enchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to target creature or player."
id=130530
name=Arcane Teachings
target=creature
auto=2/2
auto={T}:damage:1 target(creature,player)
rarity=U
color=Red
type=Enchantment
@@ -42,6 +45,8 @@ subtype=Aura
text=Gain control of target Aura that's attached to a permanent. Attach it to another permanent it can enchant.
id=130976
name=Aura Graft
target=aura
auto=moveto(creature)
rarity=U
color=Blue
type=Instant
@@ -99,6 +104,7 @@ toughness=3
text={X}{W}, {T}: Ballista Squad deals X damage to target attacking or blocking creature.
id=129477
name=Ballista Squad
auto={X}{W}{T}:damage:x target(creature[attacking,blocking])
rarity=U
color=White
type=Creature
@@ -111,6 +117,8 @@ toughness=2
text=Prevent the next 1 damage that would be dealt to target creature or player this turn. Draw a card.
id=132106
name=Bandage
target=creature,player
auto=draw:1 controller
rarity=C
color=White
type=Instant
@@ -135,6 +143,7 @@ text=Whenever Cephalid Constable deals combat damage to a player, return up to t
id=135261
name=Cephalid Constable
rarity=R
auto=@damaged(player) from(this):
color=Blue
type=Creature
mana={1}{U}{U}
@@ -146,6 +155,7 @@ toughness=1
text={X}: Chimeric Staff becomes an X/X Construct artifact creature until end of turn.
id=135254
name=Chimeric Staff
auto={X}:becomes(Artifact Creature Construct,x/x)
rarity=R
color=Artifact
type=Artifact
@@ -212,6 +222,9 @@ mana={3}{R}{R}
text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) Whenever enchanted creature attacks or blocks, its controller loses 3 life.
id=129590
name=Contaminated Bond
target=creature
auto=aslongas(this[attacking])life:3 targetController
auto=aslongas(this[blocking])life:3 targetController
rarity=C
color=Black
type=Enchantment
@@ -250,6 +263,8 @@ mana={2}{U}{U}
text=Target player reveals his or her hand. You choose a nonland card from it. That player discards that card.
id=135219
name=Distress
target=*[-land]|opponentHand
auto=moveto(opponentGraveyard)
rarity=C
color=Black
type=Sorcery
@@ -294,6 +309,10 @@ text=Faerie Conclave comes into play tapped. {T}: Add {U} to your mana pool.
id=106531
name=Faerie Conclave
rarity=U
auto=tap
auto={T}:add {U}
auto={1}{U}:becomes(Creature Faerie,2/1,flying blue)
#will only work if activatedability is added for becomes
color=Land
type=Land
[/card]
@@ -344,6 +363,8 @@ mana={1}{R}{R}{R}
text=Creature spells can't be countered.
id=129789
name=Gaea's Herald
auto=lord(creature|stack)shroud
#Not tested yet could evtl work
rarity=R
color=Green
type=Creature
@@ -364,6 +385,8 @@ type=Land
text=Whenever Goblin Elite Infantry blocks or becomes blocked, it gets -1/-1 until end of turn.
id=130380
name=Goblin Elite Infantry
auto=bushido(-1/-1)
#Could be coded once rampage is fixed bushido will be only a formality lot of cards have such ability but do not include the term bushido this one is an example.
rarity=C
color=Red
type=Creature
@@ -523,9 +546,12 @@ toughness=2
text={W}{U}{B}{R}{G}: Remove target permanent from the game. If Legacy Weapon would be put into a graveyard from anywhere, reveal Legacy Weapon and shuffle it into its owner's library instead.
id=135242
name=Legacy Weapon
auto={W}{U}{B}{R}{G}:moveto(exile) target(*)
#as the same ability as darksteel collosus
rarity=R
color=Artifact
type=Legendary Artifact
abilities=legendary
type=Artifact
mana={7}
[/card]
[card]
@@ -610,6 +636,7 @@ mana={3}{R}
text=Each noncreature artifact is an artifact creature with power and toughness each equal to its converted mana cost. (Equipment that's a creature can't equip a creature.)
id=106555
name=March of the Machines
auto=lord(artifact[-creature])becomes(Artifact Creature,manacost/manacost)
rarity=R
color=Blue
type=Enchantment
@@ -619,6 +646,7 @@ mana={3}{U}
text={T}: Draw a card, then discard a card.
id=130900
name=Merfolk Looter
auto={T}:draw:1 controller && moveto(graveyard) target(*|myHand)
rarity=C
color=Blue
type=Creature
@@ -695,6 +723,7 @@ text={W}, {T}: Put target Aura card in a graveyard into play attached to a creat
id=130547
name=Nomad Mythmaker
rarity=R
auto=moveto(creature|myBattlefield) target(aura|graveyard)
color=White
type=Creature
mana={2}{W}
@@ -706,6 +735,8 @@ toughness=2
text=Enchant land (Target a land as you play this. This card comes into play attached to that land.) Whenever enchanted land is tapped for mana, its controller adds {G}{G} to his or her mana pool.
id=135282
name=Overgrowth
target=land
auto=@tapped(this):add{G}{G}
rarity=C
color=Green
type=Enchantment
@@ -726,6 +757,8 @@ subtype=Aura
text=Look at target player's hand. Draw a card.
id=130903
name=Peek
target=opponenthand
auto=draw:1 controller
rarity=C
color=Blue
type=Instant
@@ -808,15 +841,6 @@ type=Sorcery
mana={2}{R}{R}
[/card]
[card]
text=Target player shuffles his or her graveyard into his or her library.
id=129698
name=Reminisce
rarity=U
color=Blue
type=Sorcery
mana={2}{U}
[/card]
[card]
text=You may have Rhox assign its combat damage as though it weren't blocked. {2}{G}: Regenerate Rhox. (The next time this creature would be destroyed this turn, it isn't. Instead tap it, remove all damage from it, and remove it from combat.)
id=106504
name=Rhox
@@ -931,7 +955,10 @@ mana={1}{R}{R}
[card]
text=Draw three cards, then discard a card.
id=136217
auto=draw:3 && moveto(mygraveyard) target(*|myhand)
auto=draw:3 controller
#the following works but you have to discard first then you draw 3 cards. no other combination would work because moveto(x) target(y) when put in play does not work
target=*|myhand
auto=moveto(mygraveyard)
name=Sift
rarity=C
color=Blue
@@ -995,7 +1022,8 @@ toughness=3
text=Trample (If this creature would deal enough combat damage to its blockers to destroy them, you may have it deal the rest of its damage to defending player.) At the beginning of your upkeep, return a green creature you control to its owner's hand.
id=135264
name=Stampeding Wildebeests
auto=@my upkeep:moveto(myhand) target(creature[green]|myBattlefield)
#does not work because you cannot have a target after a line with @
auto=@each my upkeep:moveto(myhand) target(creature[green]|myBattlefield)
rarity=U
type=Creature
mana={2}{G}{G}
@@ -1052,26 +1080,13 @@ color=Blue
type=Instant
mana={1}{U}
[/card]
[card]
text=Flying (This creature can't be blocked except by creatures with flying or reach.) Whenever Thieving Magpie deals damage to an opponent, you draw a card.
id=129764
abilities=flying
name=Thieving Magpie
rarity=U
color=Blue
type=Creature
mana={2}{U}{U}
power=1
subtype=Bird
toughness=3
[/card]
[card]
text={1}{B}, Sacrifice Thrull Surgeon: Look at target player's hand and choose a card from it. That player discards that card. Play this ability only any time you could play a sorcery.
id=136282
name=Thrull Surgeon
rarity=U
auto={1}{B}{S}:moveto(graveyard) target(*|opponentHand)
#unfortunately you can target opponenthand but it does not show when targetted
color=Black
type=Creature
mana={1}{B}
@@ -1100,7 +1115,11 @@ mana={8}{U}{U}
[card]
text=Enchant creature (Target a creature as you play this. This card comes into play attached to that creature.) Enchanted creature gets +1/+1 and can't be blocked except by creatures with flying.
id=129777
name=Treetop Bracers
name=Treetop Bracer
target=creature
auto=1/1
auto=cantbeblockedby(creature[-flying])
#Really need to continue trying implementing this one 3 cards from 10E would be added with cantbeblockedby.
rarity=C
color=Green
type=Enchantment

View File

@@ -1106,7 +1106,7 @@ mana={G}{W}
[/card]
[card]
text=First strike Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)
abilities=first strike, exalted
abilities=first strike,exalted
id=174958
name=Sigiled Paladin
rarity=U

View File

@@ -110,7 +110,6 @@ text=Intimidation Bolt deals 3 damage to target creature. Other creatures can't
target=creature
auto=damage:3
auto=lord(creature) cantattack
target=creature
rarity=U
[/card]
[card]
@@ -119,7 +118,7 @@ name=Jenara, Asura of War
mana={G}{W}{U}
type=Creature
subtype=Angel
abilities=Legendary,Flying
abilities=legendary,flying
auto={1}{W}:counter(1/1)
power=3
toughness=3
@@ -409,7 +408,7 @@ type=Creature
subtype=Illusion Wall
power=0
toughness=8
abilities=Defender, flying, shroud
abilities=defender,flying,shroud
[/card]
[card]
text=Flash. Flying. Deathtouch (Whenever this creature deals damage to a creature, destroy that creature.)

View File

@@ -40,7 +40,7 @@ id=79248
name=Ben-Ben, Akki Hermit
mana={2}{R}{R}
type=Creature
abilities=legendary
abilities=legendary
subtype=Goblin Shaman
power=1
toughness=1
@@ -259,7 +259,7 @@ id=79180
name=Honden of Life's Web
mana={4}{G}
type=Enchantment
abilities=Legendary
abilities=legendary
subtype=Shrine
text=At the beginning of your upkeep, put a 1/1 colorless Spirit creature token into play for each Shrine you control.
auto=@each my upkeep:foreach(shrine|myinplay) token(Spirit,Creature Spirit,1/1,artifact)
@@ -270,7 +270,7 @@ id=79176
name=Honden of Seeing Winds
mana={4}{U}
type=Enchantment
abilities=Legendary
abilities=legendary
subtype=Shrine
text=At the beginning of your upkeep, draw a card for each Shrine you control.
auto=@each my upkeep:foreach(shrine|myinplay) draw:1
@@ -833,7 +833,7 @@ type=Creature
subtype=Dragon Spirit
power=5
toughness=5
auto=@movedTo(this|graveyard):damage:5 all(creature[-flying])
auto=@movedTo(this|graveyard) from(inplay):damage:5 all(creature[-flying])
abilities=flying,legendary
rarity=R
[/card]
@@ -856,7 +856,7 @@ id=78965
name=Seizan, Perverter of Truth
mana={3}{B}{B}
type=Creature
abilities=Legendary
abilities=legendary
auto=@each my upkeep:life:-2 controller && draw:2 controller
auto=@each opponent upkeep:life:-2 opponent && draw:2 opponent
subtype=Demon Spirit
@@ -1060,7 +1060,7 @@ toughness=1
id=80274
name=Zo-Zu the Punisher
mana={1}{R}{R}
type=Legendary Creature
type=Creature
subtype=Goblin Warrior
power=2
toughness=2

View File

@@ -816,7 +816,6 @@ subtype=Elf Warrior
toughness=1
[/card]
[card]
target=creature
text=Remove target creature from the game.
target=creature
auto=moveTo(removedfromGame)

View File

@@ -661,6 +661,15 @@ toughness=5
abilities=legendary
[/card]
[card]
text=Jovial Evil deals X damage to target opponent, where X is twice the number of white creatures that player controls.
id=1449
auto=foreach(creature[white]|opponentinplay):damage:2 opponent
name=Jovial Evil
rarity=R
type=Sorcery
mana={2}{B}
[/card]
[card]
text=Legendary {T}: Add {W} to your mana pool. {W}, {T}: Return target legendary creature to its owner's hand.
id=1701
name=Karakas
@@ -1121,6 +1130,16 @@ type=Enchantment
subtype=Aura
[/card]
[card]
text=At the beginning of each player's upkeep, if that player controls a Plains, he or she gains 1 life.
id=1636
auto=@each my upkeep:aslongas(plains|myinplay) life:1 controller
auto=@each opponent upkeep:aslongas(plains|opponentinplay) life:1 opponent
name=Spiritual Sanctuary
rarity=R
type=Enchantment
mana={2}{W}{W}
[/card]
[card]
text=Storm Seeker deals damage equal to the number of cards in target player's hand to that player.
id=1545
target=player
@@ -1146,8 +1165,7 @@ abilities=legendary
[card]
text=Syphon Soul deals 2 damage to each other player. You gain life equal to the damage dealt this way.
id=1458
target=player
auto=damage:2
auto=damage:2 opponent
auto=life:2 controller
name=Syphon Soul
rarity=C

View File

@@ -322,6 +322,7 @@ toughness=7
text=When Cyclopean Mummy is put into a graveyard from play, remove Cyclopean Mummy from the game.
id=1433
name=Cyclopean Mummy
auto=@movedTo(this|graveyard) from(inplay):moveto(exile)
rarity=C
type=Creature
mana={1}{B}
@@ -341,6 +342,8 @@ mana={B}
text=Enchant creature Enchanted creature can't attack. Prevent all combat damage that would be dealt by enchanted creature.
id=1435
name=Demonic Torment
target=creature
auto=cantattack
rarity=U
type=Enchantment
mana={2}{B}
@@ -349,6 +352,8 @@ subtype=Aura
[card]
text=Play Disharmony only during combat before blockers are declared. Untap target attacking creature and remove it from combat. Gain control of that creature until end of turn.
id=1568
target=creature[attacking]
alias=129767
name=Disharmony
rarity=R
type=Instant
@@ -383,6 +388,8 @@ mana={R}
text=Defender, trample When Elder Land Wurm blocks, it loses defender.
id=1609
name=Elder Land Wurm
abilities=defender,trample
auto=aslongas(this[blocking]):-defender
rarity=R
type=Creature
mana={4}{W}{W}{W}
@@ -486,6 +493,7 @@ mana={U}
[card]
text=Flying If Firestorm Phoenix would be put into a graveyard from play, return Firestorm Phoenix to its owner's hand instead. It can't be played again until its owner's next turn.
id=1573
auto=@movedTo(this|graveyard) from(inplay):moveto(ownerhand)
name=Firestorm Phoenix
rarity=R
type=Creature
@@ -544,6 +552,9 @@ type=Enchantment
text=At the beginning of your upkeep, choose flying, first strike, trample, or rampage 3. Gabriel Angelfire gains that ability until your next upkeep.
id=1652
name=Gabriel Angelfire
auto=@each my upkeep:may flying
auto=@each my upkeep:may first strike
auto=@each my upkeep:may rampage(3/3,1)
rarity=R
type=Legendary Creature
mana={3}{G}{G}{W}{W}
@@ -662,6 +673,8 @@ toughness=3
text=At the beginning of your upkeep, if Hazezon Tamar came into play since the beginning of your last upkeep, put a 1/1 red, green, and white Sand Warrior creature token into play for each land you control. Those creatures have "When a permanent named Hazezon Tamar isn't in play, remove this creature from the game."
id=1656
name=Hazezon Tamar
auto=@next my upkeep:foreach(land|myinplay) token(Sand Warrior,Creature Sand Warrior,1/1,red green)
auto=@movedTo(this|mygraveyard) from(myinplay):moveto(graveyard) all(Sand Warrior|myinplay)
rarity=R
type=Legendary Creature
mana={4}{R}{G}{W}
@@ -760,14 +773,6 @@ subtype=Human Wizard
toughness=4
[/card]
[card]
text=Jovial Evil deals X damage to target opponent, where X is twice the number of white creatures that player controls.
id=1449
name=Jovial Evil
rarity=R
type=Sorcery
mana={2}{B}
[/card]
[card]
text=You and target player exchange control of the creature you each control with the highest converted mana cost. Then exchange control of artifacts the same way. If two or more permanents a player controls are tied for highest cost, their controller chooses one of them.
id=1489
name=Juxtapose
@@ -789,6 +794,7 @@ toughness=2
[card]
text=Artifacts, creatures, and lands your opponents control come into play tapped.
id=1623
auto=lord(artifact,creature,land|opponentinplay)tap
name=Kismet
rarity=U
type=Enchantment
@@ -1065,6 +1071,7 @@ toughness=1
text={T}: Psionic Entity deals 2 damage to target creature or player and 3 damage to itself.
id=1493
name=Psionic Entity
auto={T}:damage:3 && damage:2 target(creature,player)
rarity=R
type=Creature
mana={4}{U}
@@ -1354,14 +1361,6 @@ mana={B}{B}
subtype=Aura
[/card]
[card]
text=At the beginning of each player's upkeep, if that player controls a Plains, he or she gains 1 life.
id=1636
name=Spiritual Sanctuary
rarity=R
type=Enchantment
mana={2}{W}{W}
[/card]
[card]
text=When Stangg comes into play, if Stangg is in play, put a legendary 3/4 red and green Human Warrior creature token named Stangg Twin into play. When Stangg leaves play, remove that token from the game. When that token leaves play, sacrifice Stangg.
id=1686
name=Stangg

View File

@@ -814,7 +814,6 @@ id=5684
target=creature
auto=destroy
auto=life:4 targetController
target=creature
name=Path of Peace
rarity=C
mana={3}{W}
@@ -1017,7 +1016,8 @@ auto={T}:foreach(enchantment|myBattlefield)add:{W}
id=9674
name=Serra's Sanctum
rarity=R
type=Legendary Land
type=Land
abilities=legendary
[/card]
[card]
text=Flying (This creature can't be blocked except by creatures with flying or reach.) {1}{R}: Shivan Hellkite deals 1 damage to target creature or player.

View File

@@ -111,7 +111,7 @@ rarity=C
mana={U}
type=Creature
subtype=Merfolk Wizard
auto={T}:flying target(creature)
auto={1}{U}{T}:flying target(creature)
power=1
toughness=1
[/card]
@@ -615,7 +615,7 @@ auto=may counter(1/1)
auto=@movedTo(other ally|myBattlefield):counter(1/1)
power=1
toughness=1
abilities=first strike,vigilance
abilities=first strike,vigilance
[/card]
[card]
text=Kazandu Refuge enters the battlefield tapped. When Kazandu Refuge enters the battlefield, you gain 1 life. {T}: Add {R} or {G} to your mana pool.

View File

@@ -157,6 +157,35 @@ public:
}
};
class TrDamaged:public TriggeredAbility{
public:
TargetChooser * tc;
TargetChooser * fromTc;
TrDamaged (int id, MTGCardInstance * source, TargetChooser * tc, TargetChooser * fromTc = NULL):TriggeredAbility(id,source), tc(tc), fromTc(fromTc){}
int resolve(){
return 0; //This is a trigger, this function should not be called
}
int triggerOnEvent(WEvent * event){
WEventDamage * e = dynamic_cast<WEventDamage *>(event);
if (!e) return 0;
if(!tc->canTarget(e->damage->target)) return 0;
if (fromTc && !fromTc->canTarget(e->damage->source)) return 0;
return 1;
}
~ TrDamaged (){
SAFE_DELETE(tc);
SAFE_DELETE(fromTc);
}
TrDamaged * clone() const{
TrDamaged * a = NEW TrDamaged (*this);
a->isClone = 1;
return a;
}
};
//counters
class AACounter: public ActivatedAbility{

View File

@@ -108,6 +108,27 @@ TriggeredAbility * AbilityFactory::parseTrigger(string magicText, int id, Spell
return NEW TrCardTapped(id,card,tc);
}
//Card Damaging
found = s.find("damaged(");
if (found != string::npos){
size_t end = s.find (")");
string starget = s.substr(found+8,end - found - 8);
TargetChooserFactory tcf;
TargetChooser *tc = tcf.createTargetChooser(starget,card);
tc->targetter = NULL;
TargetChooser *fromTc = NULL;
found = s.find("from(");
if (found != string::npos){
end = s.find (")", found);
starget = s.substr(found+5,end - found - 5);
TargetChooser * fromTc = tcf.createTargetChooser(starget,card);
fromTc->targetter = NULL;
return NEW TrDamaged(id,card,tc,fromTc);
}
}
int who = 0;
if (s.find("my") != string::npos) who = 1;
if (s.find("opponent") != string::npos) who = -1;
@@ -1548,6 +1569,23 @@ void AbilityFactory::addAbilities(int _id, Spell * spell){
break;
}
case 129698: // Reminisce
{
int nbcards;
Player * player = spell->getNextPlayerTarget();
MTGLibrary * library = player->game->library;
MTGGraveyard * graveyard = player->game->graveyard;
nbcards = (graveyard->nb_cards);
for (int i = 0; i < nbcards; i++){
if (graveyard->nb_cards)
player->game->putInZone(graveyard->cards[graveyard->nb_cards-1],graveyard, library);
}
library->shuffle();
break;
}
// --- addon Invasion---
case 23195: //Artifact Mutation
{