Merge pull request #837 from kevlahnota/master

AACopier andAbility support
This commit is contained in:
Anthony Calosa
2016-08-07 10:29:06 +08:00
committed by GitHub
5 changed files with 41 additions and 22 deletions
+12 -17
View File
@@ -2601,8 +2601,7 @@ type=Instant
[card] [card]
name=Altered Ego name=Altered Ego
abilities=nofizzle abilities=nofizzle
auto=copy target(creature) auto=may copy target(creature) and!( counter(1/1,X) )!
auto=counter(1/1,X)
text=Altered Ego can't be countered. -- You may have Altered Ego enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it. text=Altered Ego can't be countered. -- You may have Altered Ego enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it.
mana={X}{2}{G}{U} mana={X}{2}{G}{U}
type=Creature type=Creature
@@ -28155,7 +28154,7 @@ name=Domri Rade
auto=counter(0/0,3,loyalty) auto=counter(0/0,3,loyalty)
auto={C(0/0,1,Loyalty)}:name(+1: Reveal) reveal:1 optionone target(creature|reveal)moveto(myhand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend auto={C(0/0,1,Loyalty)}:name(+1: Reveal) reveal:1 optionone target(creature|reveal)moveto(myhand) optiononeend optiontwo name(Put Back On Top) target(<1>*|reveal) moveto(mylibrary) optiontwoend revealend
auto={C(0/0,-2,Loyalty)}:name(-2: Fight) target(creature|mybattlefield) transforms((,newability[target(creature) dynamicability<!powerstrike eachother!>])) ueot auto={C(0/0,-2,Loyalty)}:name(-2: Fight) target(creature|mybattlefield) transforms((,newability[target(creature) dynamicability<!powerstrike eachother!>])) ueot
auto={C(0/0,-7,Loyalty)}:name(-7: emblem) emblem transforms((,newability[lord(creature|mybattlefield)doublestrike],newability[lord(creature|mybattlefield)trample],newability[lord(creature|mybattlefield)hexproof],newability[lord(creature|mybattlefield)haste])) forever dontremove auto={C(0/0,-7,Loyalty)}:name(-7: emblem) emblem transforms((,newability[lord(creature|mybattlefield)double strike],newability[lord(creature|mybattlefield)trample],newability[lord(creature|mybattlefield)hexproof],newability[lord(creature|mybattlefield)haste])) forever dontremove
text=+1: Look at the top card of your library. If it's a creature card, you may reveal it and put it into your hand. -- -2: Target creature you control fights another target creature. -- -7: You get an emblem with "Creatures you control have double strike, trample, hexproof, and haste." text=+1: Look at the top card of your library. If it's a creature card, you may reveal it and put it into your hand. -- -2: Target creature you control fights another target creature. -- -7: You get an emblem with "Creatures you control have double strike, trample, hexproof, and haste."
mana={1}{R}{G} mana={1}{R}{G}
type=Planeswalker type=Planeswalker
@@ -29668,7 +29667,7 @@ toughness=4
name=Drogskol Reaver name=Drogskol Reaver
abilities=flying,double strike,lifelink abilities=flying,double strike,lifelink
auto=@lifeof(player):draw:1 controller auto=@lifeof(player):draw:1 controller
text=Flying, doublestrike, lifelink -- Whenever you gain life, draw a card. text=Flying, double strike, lifelink -- Whenever you gain life, draw a card.
mana={5}{W}{U} mana={5}{W}{U}
type=Creature type=Creature
subtype=Spirit subtype=Spirit
@@ -33405,7 +33404,7 @@ text=First strike -- When Enlistment Officer enters the battlefield, reveal the
mana={3}{W} mana={3}{W}
type=Creature type=Creature
subtype=Human Soldier subtype=Human Soldier
abilities=firststrike abilities=first strike
power=2 power=2
toughness=3 toughness=3
[/card] [/card]
@@ -67273,8 +67272,7 @@ toughness=2
[/card] [/card]
[card] [card]
name=Mercurial Pretender name=Mercurial Pretender
auto=may copy NotATarget(creature) auto=may copy NotATarget(creature) and!( transforms((,newability[{2}{U}{U}:moveto(ownerhand)])) forever )!
auto=transforms((,newability[{2}{U}{U}:moveto(ownerhand)])) forever
text=You may have Mercurial Pretender enter the battlefield as a copy of any creature you control except it gains ?{2}{U}{U}: Return this creature to its owner?s hand.? text=You may have Mercurial Pretender enter the battlefield as a copy of any creature you control except it gains ?{2}{U}{U}: Return this creature to its owner?s hand.?
mana={4}{U} mana={4}{U}
type=Creature type=Creature
@@ -72894,9 +72892,9 @@ toughness=1
name=Needle Spires name=Needle Spires
auto={t}:add{w} auto={t}:add{w}
auto={t}:add{r} auto={t}:add{r}
auto={1}{B}{G}:all(this) transforms((Elemental Creature,setpower=2,settoughness=1,red,white,doublestrike)) ueot auto={1}{B}{G}:all(this) transforms((Elemental Creature,setpower=2,settoughness=1,red,white,double strike)) ueot
auto=tap(noevent) auto=tap(noevent)
text=Needle Spires enters the battlefield tapped. -- {T}: Add {R} or {W} to your mana pool. -- {2}{R}{W}: Needle Spires becomes a 2/1 red and white Elemental creature with doublestrike until end of turn. It's still a land. text=Needle Spires enters the battlefield tapped. -- {T}: Add {R} or {W} to your mana pool. -- {2}{R}{W}: Needle Spires becomes a 2/1 red and white Elemental creature with double strike until end of turn. It's still a land.
type=Land type=Land
[/card] [/card]
[card] [card]
@@ -79169,9 +79167,7 @@ toughness=1
[/card] [/card]
[card] [card]
name=Phantasmal Image name=Phantasmal Image
auto=transforms((Illusion)) auto=may copy NotATarget(creature) and!( transforms((Illusion,newability[@targeted(this):sacrifice])) forever )!
auto=transforms((,newability[@targeted(this):sacrifice])) forever
auto=may copy NotATarget(creature)
text=You may have Phantasmal Image enter the battlefield as a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains "When this creature becomes the target of a spell or ability, sacrifice it." text=You may have Phantasmal Image enter the battlefield as a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains "When this creature becomes the target of a spell or ability, sacrifice it."
mana={1}{U} mana={1}{U}
type=Creature type=Creature
@@ -82297,8 +82293,7 @@ type=Sorcery
[/card] [/card]
[card] [card]
name=Progenitor Mimic name=Progenitor Mimic
auto=transforms((,newability[@each my upkeep:all(this) ifnot cantargetcard(*[token]) then clone])) forever auto=may copy NotATarget(creature) and!( transforms((,newability[@each my upkeep:all(this) ifnot cantargetcard(*[token]) then clone])) forever )!
auto=may copy NotATarget(creature)
text=You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield except it gains "At the beginning of your upkeep, if this creature isn't a token, put a token onto the battlefield that's a copy of this creature." text=You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield except it gains "At the beginning of your upkeep, if this creature isn't a token, put a token onto the battlefield that's a copy of this creature."
mana={4}{G}{U} mana={4}{G}{U}
type=Creature type=Creature
@@ -87107,9 +87102,9 @@ toughness=4
[/card] [/card]
[card] [card]
name=Resolute Blademaster name=Resolute Blademaster
auto=choice all(creature|mybattlefield) doublestrike ueot auto=choice all(creature|mybattlefield) double strike ueot
auto=@movedTo(ally|myBattlefield):all(creature|mybattlefield) doublestrike ueot auto=@movedTo(ally|myBattlefield):all(creature|mybattlefield) double strike ueot
text=Rally ? Whenever Resolute Blademaster or another Ally enters the battlefield under your control, creatures you control gain doublestrike until end of turn. text=Rally ? Whenever Resolute Blademaster or another Ally enters the battlefield under your control, creatures you control gain double strike until end of turn.
mana={3}{R}{W} mana={3}{R}{W}
type=Creature type=Creature
subtype=Human Soldier Ally subtype=Human Soldier Ally
+1
View File
@@ -1911,6 +1911,7 @@ public:
class AACopier: public ActivatedAbility class AACopier: public ActivatedAbility
{ {
public: public:
MTGAbility * andAbility;
AACopier(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL); AACopier(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target = NULL, ManaCost * _cost = NULL);
int resolve(); int resolve();
const string getMenuText(); const string getMenuText();
+19 -4
View File
@@ -1453,6 +1453,7 @@ AACopier::AACopier(GameObserver* observer, int _id, MTGCardInstance * _source, M
ActivatedAbility(observer, _id, _source, _cost, 0) ActivatedAbility(observer, _id, _source, _cost, 0)
{ {
target = _target; target = _target;
andAbility = NULL;
} }
int AACopier::resolve() int AACopier::resolve()
@@ -1505,9 +1506,23 @@ int AACopier::resolve()
} }
if(_target->TokenAndAbility) if(_target->TokenAndAbility)
{//the source copied a token with andAbility {//the source copied a token with andAbility
MTGAbility * andAbilityClone = _target->TokenAndAbility->clone(); MTGAbility * TokenandAbilityClone = _target->TokenAndAbility->clone();
andAbilityClone->target = source; TokenandAbilityClone->target = source;
if(_target->TokenAndAbility->oneShot) if(_target->TokenAndAbility->oneShot)
{
TokenandAbilityClone->resolve();
SAFE_DELETE(TokenandAbilityClone);
}
else
{
TokenandAbilityClone->addToGame();
}
}
if(andAbility)
{
MTGAbility * andAbilityClone = andAbility->clone();
andAbilityClone->target = source;
if(andAbility->oneShot)
{ {
andAbilityClone->resolve(); andAbilityClone->resolve();
SAFE_DELETE(andAbilityClone); SAFE_DELETE(andAbilityClone);
@@ -3968,10 +3983,10 @@ int AACloner::resolve()
} }
} }
list<int>::iterator it; list<int>::iterator it;
for (it = awith.begin(); it != awith.end(); it++) /*for (it = awith.begin(); it != awith.end(); it++)
{//there must be a layer of temporary abilities and original abilities {//there must be a layer of temporary abilities and original abilities
spell->source->basicAbilities[*it] = 1; spell->source->basicAbilities[*it] = 1;
} }*/
for (it = colors.begin(); it != colors.end(); it++) for (it = colors.begin(); it != colors.end(); it++)
{ {
spell->source->setColor(*it); spell->source->setColor(*it);
+1 -1
View File
@@ -1224,7 +1224,7 @@ void CardGui::DrawBorder(string cardsetname, const Pos& pos, float x, bool nobor
alphabeta->SetHotSpot(static_cast<float> (alphabeta->mWidth / 2), static_cast<float> (alphabeta->mHeight / 2)); alphabeta->SetHotSpot(static_cast<float> (alphabeta->mWidth / 2), static_cast<float> (alphabeta->mHeight / 2));
float myscale = pos.actZ * 254 / alphabeta->mHeight; float myscale = pos.actZ * 254 / alphabeta->mHeight;
alphabeta->SetColor(ARGB((int)pos.actA,255,255,255)); alphabeta->SetColor(ARGB((int)pos.actA,255,255,255));
renderer->RenderQuad(alphabeta.get(), x, pos.actY, pos.actT, myscale, myscale); renderer->RenderQuad(alphabeta.get(), x, pos.actY+0.2f, pos.actT, myscale, myscale);
} }
} }
} }
+8
View File
@@ -2518,6 +2518,14 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
{ {
MTGAbility * a = NEW AACopier(observer, id, card, target); MTGAbility * a = NEW AACopier(observer, id, card, target);
a->oneShot = 1; a->oneShot = 1;
a->canBeInterrupted = false;
//andability
if(storedAndAbility.size())
{
string stored = storedAndAbility;
storedAndAbility.clear();
((AACopier*)a)->andAbility = parseMagicLine(stored, id, spell, card);
}
return a; return a;
} }