@@ -16791,6 +16791,18 @@ mana={1}
|
|||||||
type=Artifact
|
type=Artifact
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Chrome Mox
|
||||||
|
auto=may imprint notatarget(*[-land;-artifact]|myhand)
|
||||||
|
auto=this(variable{evictg}>0) {t}:add{g}
|
||||||
|
auto=this(variable{evictu}>0) {t}:add{u}
|
||||||
|
auto=this(variable{evictr}>0) {t}:add{r}
|
||||||
|
auto=this(variable{evictb}>0) {t}:add{b}
|
||||||
|
auto=this(variable{evictw}>0) {t}:add{w}
|
||||||
|
text=Imprint - When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand. -- {T}: Add one mana of any of the exiled card's colors to your mana pool.
|
||||||
|
mana={0}
|
||||||
|
type=Artifact
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Chrome Steed
|
name=Chrome Steed
|
||||||
auto=aslongas(artifact|mybattlefield) 2/2 >2
|
auto=aslongas(artifact|mybattlefield) 2/2 >2
|
||||||
text=Metalcraft - Chrome Steed gets +2/+2 as long as you control three or more artifacts.
|
text=Metalcraft - Chrome Steed gets +2/+2 as long as you control three or more artifacts.
|
||||||
@@ -17070,6 +17082,16 @@ mana={3}{W}
|
|||||||
type=Enchantment
|
type=Enchantment
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Circular Logic
|
||||||
|
abilities=madness
|
||||||
|
target=*|stack
|
||||||
|
auto=if cantargetcard(*|opponentstack) then transforms((,newability[pay[[{value:type:*:opponentgraveyard}]] name(pay {value} mana) donothing?fizzle])) forever else transforms((,newability[pay[[{value:type:*:mygraveyard}]] name(pay {value} mana) donothing?fizzle])) forever
|
||||||
|
autoexile=restriction{discarded} pay({U}) name(pay U to cast) activate name(pay U to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
|
||||||
|
text=Counter target spell unless its controller pays {1} for each card in your graveyard. -- Madness {U} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
|
||||||
|
mana={2}{U}
|
||||||
|
type=Instant
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Citadel Castellan
|
name=Citadel Castellan
|
||||||
abilities=vigilance
|
abilities=vigilance
|
||||||
auto=this(cantargetcard(*[-renown]) transforms((,newability[@combatdamaged(player) from(this):counter(1/1.2) && becomes(renown) forever]))
|
auto=this(cantargetcard(*[-renown]) transforms((,newability[@combatdamaged(player) from(this):counter(1/1.2) && becomes(renown) forever]))
|
||||||
|
|||||||
@@ -3862,12 +3862,6 @@ power=2
|
|||||||
toughness=3
|
toughness=3
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Circular Logic
|
|
||||||
text=Counter target spell unless its controller pays {1} for each card in your graveyard. -- Madness {U} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
|
|
||||||
mana={2}{U}
|
|
||||||
type=Instant
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
name=City in a Bottle
|
name=City in a Bottle
|
||||||
text=Whenever a nontoken permanent from the Arabian Nights expansion other than City in a Bottle is on the battlefield, its controller sacrifices it. -- Players can't play cards from the Arabian Nights expansion.
|
text=Whenever a nontoken permanent from the Arabian Nights expansion other than City in a Bottle is on the battlefield, its controller sacrifices it. -- Players can't play cards from the Arabian Nights expansion.
|
||||||
mana={2}
|
mana={2}
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ civic_wayfinder.txt
|
|||||||
clone.txt
|
clone.txt
|
||||||
clone2.txt
|
clone2.txt
|
||||||
clone3.txt
|
clone3.txt
|
||||||
|
clone4.txt
|
||||||
cockatrice.txt
|
cockatrice.txt
|
||||||
cockatrice_i228.txt
|
cockatrice_i228.txt
|
||||||
colossus_of_sardia1.txt
|
colossus_of_sardia1.txt
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
#Testing Clone with Thistledown Liege Fix issue #448
|
||||||
|
#we have p/t layers
|
||||||
|
[INIT]
|
||||||
|
FIRSTMAIN
|
||||||
|
[PLAYER1]
|
||||||
|
hand:129501
|
||||||
|
inplay:Thistledown Liege
|
||||||
|
manapool:{3}{U}
|
||||||
|
[PLAYER2]
|
||||||
|
life:20
|
||||||
|
[DO]
|
||||||
|
129501
|
||||||
|
choice 0
|
||||||
|
Thistledown Liege
|
||||||
|
next
|
||||||
|
#begin
|
||||||
|
next
|
||||||
|
#attackers
|
||||||
|
Thistledown Liege
|
||||||
|
129501
|
||||||
|
next
|
||||||
|
#blockers
|
||||||
|
next
|
||||||
|
#damage
|
||||||
|
next
|
||||||
|
eot
|
||||||
|
eot
|
||||||
|
#untap
|
||||||
|
next
|
||||||
|
#upkeep
|
||||||
|
next
|
||||||
|
#draw
|
||||||
|
next
|
||||||
|
#main1
|
||||||
|
next
|
||||||
|
#combat begin
|
||||||
|
next
|
||||||
|
#attackers
|
||||||
|
129501
|
||||||
|
next
|
||||||
|
#blockers
|
||||||
|
next
|
||||||
|
#damage
|
||||||
|
next
|
||||||
|
#combat end
|
||||||
|
[ASSERT]
|
||||||
|
COMBATEND
|
||||||
|
[PLAYER1]
|
||||||
|
inplay:Thistledown Liege, 129501
|
||||||
|
[PLAYER2]
|
||||||
|
life:14
|
||||||
|
[END]
|
||||||
@@ -565,6 +565,26 @@ private:
|
|||||||
intValue +=1;
|
intValue +=1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (s == "evictg")
|
||||||
|
{
|
||||||
|
intValue = card->imprintG;
|
||||||
|
}
|
||||||
|
else if (s == "evictu")
|
||||||
|
{
|
||||||
|
intValue = card->imprintU;
|
||||||
|
}
|
||||||
|
else if (s == "evictr")
|
||||||
|
{
|
||||||
|
intValue = card->imprintR;
|
||||||
|
}
|
||||||
|
else if (s == "evictb")
|
||||||
|
{
|
||||||
|
intValue = card->imprintB;
|
||||||
|
}
|
||||||
|
else if (s == "evictw")
|
||||||
|
{
|
||||||
|
intValue = card->imprintW;
|
||||||
|
}
|
||||||
else if (s == "targetedcurses")
|
else if (s == "targetedcurses")
|
||||||
{
|
{
|
||||||
if(card->playerTarget)
|
if(card->playerTarget)
|
||||||
@@ -1963,7 +1983,8 @@ public:
|
|||||||
string named;
|
string named;
|
||||||
bool undying;
|
bool undying;
|
||||||
bool persist;
|
bool persist;
|
||||||
AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string _name, ManaCost * _cost = NULL, bool undying = false, bool persist = false);
|
bool imprint;
|
||||||
|
AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string _name, ManaCost * _cost = NULL, bool undying = false, bool persist = false, bool imprint = false);
|
||||||
MTGGameZone * destinationZone(Targetable * target = NULL);
|
MTGGameZone * destinationZone(Targetable * target = NULL);
|
||||||
int resolve();
|
int resolve();
|
||||||
const string getMenuText();
|
const string getMenuText();
|
||||||
|
|||||||
@@ -257,6 +257,14 @@ public:
|
|||||||
int myconvertedcost;
|
int myconvertedcost;
|
||||||
ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost, ManaCost * refCost,bool noTrinisphere = false);
|
ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost, ManaCost * refCost,bool noTrinisphere = false);
|
||||||
int countTrini;
|
int countTrini;
|
||||||
|
vector<MTGCardInstance*>imprintedCards;
|
||||||
|
int imprintG;
|
||||||
|
int imprintU;
|
||||||
|
int imprintR;
|
||||||
|
int imprintB;
|
||||||
|
int imprintW;
|
||||||
|
string currentimprintName;
|
||||||
|
vector<string>imprintedNames;
|
||||||
|
|
||||||
void eventattacked();
|
void eventattacked();
|
||||||
void eventattackedAlone();
|
void eventattackedAlone();
|
||||||
|
|||||||
@@ -2927,8 +2927,8 @@ AInstantCastRestrictionUEOT::~AInstantCastRestrictionUEOT()
|
|||||||
|
|
||||||
|
|
||||||
//AAMover
|
//AAMover
|
||||||
AAMover::AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string newName, ManaCost * _cost, bool undying, bool persist) :
|
AAMover::AAMover(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target, string dest,string newName, ManaCost * _cost, bool undying, bool persist, bool imprint) :
|
||||||
ActivatedAbility(observer, _id, _source, _cost, 0), destination(dest),named(newName),undying(undying),persist(persist)
|
ActivatedAbility(observer, _id, _source, _cost, 0), destination(dest),named(newName),undying(undying),persist(persist),imprint(imprint)
|
||||||
{
|
{
|
||||||
if (_target)
|
if (_target)
|
||||||
target = _target;
|
target = _target;
|
||||||
@@ -2986,6 +2986,8 @@ int AAMover::resolve()
|
|||||||
p->game->putInZone(_target, fromZone, destZone);
|
p->game->putInZone(_target, fromZone, destZone);
|
||||||
while(_target->next)
|
while(_target->next)
|
||||||
_target = _target->next;
|
_target = _target->next;
|
||||||
|
if (imprint)
|
||||||
|
source->imprintedCards.push_back(_target);
|
||||||
if(andAbility)
|
if(andAbility)
|
||||||
{
|
{
|
||||||
MTGAbility * andAbilityClone = andAbility->clone();
|
MTGAbility * andAbilityClone = andAbility->clone();
|
||||||
@@ -3062,6 +3064,8 @@ const char* AAMover::getMenuText(TargetChooser * tc)
|
|||||||
// move card into exile
|
// move card into exile
|
||||||
else if (dest == game->players[i]->game->exile)
|
else if (dest == game->players[i]->game->exile)
|
||||||
{
|
{
|
||||||
|
if(imprint)
|
||||||
|
return "Imprint";
|
||||||
return "Exile";
|
return "Exile";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -687,6 +687,46 @@ void GameObserver::gameStateBasedEffects()
|
|||||||
card->myPair->myPair = NULL;
|
card->myPair->myPair = NULL;
|
||||||
card->myPair = NULL;
|
card->myPair = NULL;
|
||||||
}
|
}
|
||||||
|
///clear imprints
|
||||||
|
if(isInPlay(card) && card->imprintedCards.size())
|
||||||
|
{
|
||||||
|
for(size_t ic = 0; ic < card->imprintedCards.size(); ic++)
|
||||||
|
{
|
||||||
|
if(!isInExile(card->imprintedCards[ic]))
|
||||||
|
card->imprintedCards.erase(card->imprintedCards.begin() + ic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//reset imprints
|
||||||
|
if(isInPlay(card))
|
||||||
|
{
|
||||||
|
card->imprintG = 0;
|
||||||
|
card->imprintU = 0;
|
||||||
|
card->imprintR = 0;
|
||||||
|
card->imprintB = 0;
|
||||||
|
card->imprintW = 0;
|
||||||
|
card->currentimprintName = "";
|
||||||
|
if (card->imprintedCards.size())
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i < card->imprintedCards.size(); i++)
|
||||||
|
{
|
||||||
|
if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_GREEN))
|
||||||
|
card->imprintG += 1;
|
||||||
|
if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLUE))
|
||||||
|
card->imprintU += 1;
|
||||||
|
if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_RED))
|
||||||
|
card->imprintR += 1;
|
||||||
|
if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_BLACK))
|
||||||
|
card->imprintB += 1;
|
||||||
|
if (card->imprintedCards[i]->hasColor(Constants::MTG_COLOR_WHITE))
|
||||||
|
card->imprintW += 1;
|
||||||
|
if (card->imprintedCards[i]->getName().size())
|
||||||
|
{
|
||||||
|
card->currentimprintName = card->imprintedCards[i]->getName();
|
||||||
|
card->imprintedNames.push_back(card->imprintedCards[i]->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
card->bypassTC = false; //turn off bypass
|
card->bypassTC = false; //turn off bypass
|
||||||
////////////////////////////////////////////////////
|
////////////////////////////////////////////////////
|
||||||
//Unattach Equipments that dont have valid targets//
|
//Unattach Equipments that dont have valid targets//
|
||||||
|
|||||||
@@ -2361,6 +2361,15 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
|||||||
}
|
}
|
||||||
|
|
||||||
//imprint
|
//imprint
|
||||||
|
found = s.find("imprint");
|
||||||
|
if (found != string::npos)
|
||||||
|
{
|
||||||
|
MTGAbility * a = NEW AAMover(observer, id, card, target, "exile",newName,NULL,false,false,true);
|
||||||
|
a->oneShot = 1;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
//phaseout
|
||||||
found = s.find("phaseout");
|
found = s.find("phaseout");
|
||||||
if (found != string::npos)
|
if (found != string::npos)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -100,8 +100,10 @@ void MTGCardInstance::copy(MTGCardInstance * card)
|
|||||||
setText(""); //The text is retrieved from the data anyways
|
setText(""); //The text is retrieved from the data anyways
|
||||||
setName(data->name);
|
setName(data->name);
|
||||||
|
|
||||||
power = data->power;
|
power = data->power;//layer 7a
|
||||||
toughness = data->toughness;
|
toughness = data->toughness;//layer 7a
|
||||||
|
power += pbonus;//layer 7b
|
||||||
|
toughness += tbonus;//layer 7b
|
||||||
life = toughness;
|
life = toughness;
|
||||||
lifeOrig = life;
|
lifeOrig = life;
|
||||||
magicText = data->magicText;
|
magicText = data->magicText;
|
||||||
@@ -206,6 +208,14 @@ void MTGCardInstance::initMTGCI()
|
|||||||
myPair = NULL;
|
myPair = NULL;
|
||||||
miracle = false;
|
miracle = false;
|
||||||
countTrini = 0;
|
countTrini = 0;
|
||||||
|
imprintedCards.clear();
|
||||||
|
imprintG = 0;
|
||||||
|
imprintU = 0;
|
||||||
|
imprintR = 0;
|
||||||
|
imprintB = 0;
|
||||||
|
imprintW = 0;
|
||||||
|
currentimprintName = "";
|
||||||
|
imprintedNames.clear();
|
||||||
|
|
||||||
for (int i = 0; i < ManaCost::MANA_PAID_WITH_SUSPEND +1; i++)
|
for (int i = 0; i < ManaCost::MANA_PAID_WITH_SUSPEND +1; i++)
|
||||||
alternateCostPaid[i] = 0;
|
alternateCostPaid[i] = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user