diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index d5ffd6511..453d544ff 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -881,7 +881,7 @@ private: for (int j = card->controller()->game->battlefield->nb_cards - 1; j >= 0; --j) { MTGCardInstance * crew = card->controller()->game->battlefield->cards[j]; - if (crew != card && crew->isCreature() && !crew->isTapped() && !crew->has(Constants::CANTCREW)) + if (crew != card && crew->isCreature() && !crew->isTapped() && !crew->isPhased && !crew->has(Constants::CANTCREW)) intValue += crew->power; } } diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 5fad65b81..35801dff9 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -1547,8 +1547,6 @@ int AACopier::resolve() MTGCardInstance * _target = (MTGCardInstance *) target; if (_target) { - if(isactivated) - source->isPhased = true; bool tokencopied = false; if(_target->isToken || (_target->isACopier && _target->hasCopiedToken)) tokencopied = true; @@ -1609,8 +1607,8 @@ int AACopier::resolve() TokenandAbilityClone->addToGame(); } } - if(isactivated) - {//activated version grant + if(source->isACopier) + { source->GrantedAndAbility = andAbility; AbilityFactory af(game); for(unsigned int i = 0;i < source->cardsAbilities.size();i++) @@ -1631,6 +1629,8 @@ int AACopier::resolve() { if (a->oneShot) { + if(a->source->entersBattlefield) + a->resolve(); SAFE_DELETE(a); } else @@ -1658,7 +1658,6 @@ int AACopier::resolve() andAbilityClone->addToGame(); } } - source->isPhased = false; } return 1; } diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 25759ae01..1f0e7962d 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -141,14 +141,14 @@ void MTGCardInstance::copy(MTGCardInstance * card) int castMethodBackUP = this->castMethod; mtgid = source->getId(); MTGCardInstance * oldStored = this->storedSourceCard; - if(!isPhased) + /*if(!isPhased) { Spell * spell = NEW Spell(observer, this); observer = card->observer; AbilityFactory af(observer); af.addAbilities(observer->mLayers->actionLayer()->getMaxId(), spell); delete spell; - } + }*/ if(observer->players[1]->playMode == Player::MODE_TEST_SUITE) mtgid = backupid; // there must be a way to get the token id... diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index 3fa301614..0ab307b21 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -3232,7 +3232,7 @@ int MTGLegendRule::receiveEvent(WEvent * event) { vectorselection; TargetChooserFactory tfL(game); - tcL = tfL.createTargetChooser("*[share!name!]|mybattlefield",card->clone()); + tcL = tfL.createTargetChooser("*[share!name!]|mybattlefield",card); tcL->targetter = NULL; tcL->maxtargets = card->countDuplicateCardNames()-1; Legendrule = NEW AAMover(game, game->mLayers->actionLayer()->getMaxId(), card, NULL,"ownergraveyard","Put in Graveyard");