diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 40207411c..bc455e7c5 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -58,10 +58,6 @@ private: return; MTGCardInstance * target = card->target; intValue = 0; - if(s.find("stored") != string::npos) - { - return init(s.substr(+6),spell,card->storedCard); - } bool halfup = false; bool halfdown = false; if (!target) target = card; @@ -70,12 +66,22 @@ private: { s = s.substr(1); multiplier = -1; + if(s.find("stored") != string::npos) + { + string altered ="-"; + altered.append(s.substr(+6)); + return init(altered,spell,card->storedCard); + } } if(s[0] == '+') { //ignore "+" signs.... s = s.substr(1); } + if(s.find("stored") != string::npos) + { + return init(s.substr(+6),spell,card->storedCard); + } //rounding values, the words can be written anywhere in the line, //they are erased after parsing. if(s.find("halfup") != string::npos) diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index 4fca005df..759a3ab41 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -292,6 +292,7 @@ Spell::~Spell() int Spell::resolve() { + MTGCardInstance * oldStored = source->storedCard; if (!source->hasType(Subtypes::TYPE_INSTANT) && !source->hasType(Subtypes::TYPE_SORCERY) && source->name.size()) { Player * p = source->controller(); @@ -305,7 +306,7 @@ int Spell::resolve() source->backupTargets = backupTgt; from = p->game->battlefield; } - + source->storedCard = oldStored; //Play SFX if (options[Options::SFXVOLUME].number > 0) { diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 15261cad2..e41ffd72b 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -81,6 +81,7 @@ void MTGCardInstance::copy(MTGCardInstance * card) int backupid = mtgid; int castMethodBackUP = this->castMethod; mtgid = source->getId(); + MTGCardInstance * oldStored = this->storedCard; Spell * spell = NEW Spell(observer, this); observer = card->observer; AbilityFactory af(observer); @@ -89,6 +90,7 @@ void MTGCardInstance::copy(MTGCardInstance * card) mtgid = backupid; castMethod = castMethodBackUP; backupTargets = this->backupTargets; + storedCard = oldStored; } MTGCardInstance::~MTGCardInstance() diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index 9e3c0ef48..73c25253f 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -474,6 +474,7 @@ MTGCardInstance * MTGGameZone::removeCard(MTGCardInstance * card, int createCopy copy->X = card->X; copy->castX = card->castX; copy->kicked = card->kicked; + copy->storedCard = card->storedCard; //stupid bug with tokens... if (card->model == card)