add andAbility support for AACopier
the granted ability must exists only if you copy a card, if you don't copy any card, the source doesn't have any granted abillities.
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user