revised copier copied abilities

the clone should copy original abilities only
This commit is contained in:
Anthony Calosa
2017-02-03 10:31:10 +08:00
parent dc696a0f45
commit 942c95e736
3 changed files with 17 additions and 4 deletions

View File

@@ -48,6 +48,7 @@ public:
vector<MTGCardInstance*>parentCards;
vector<MTGCardInstance*>childrenCards;
vector<MTGAbility *>cardsAbilities;
vector<MTGAbility *>cardsAbilitiesFilter;
int setAttacker(int value);
int setDefenser(MTGCardInstance * c);

View File

@@ -1610,7 +1610,7 @@ int AACopier::resolve()
if(source->isACopier)
{
source->GrantedAndAbility = andAbility;
AbilityFactory af(game);
//AbilityFactory af(game);
for(unsigned int i = 0;i < source->cardsAbilities.size();i++)
{
MTGAbility * a = dynamic_cast<MTGAbility *>(source->cardsAbilities[i]);
@@ -1620,10 +1620,10 @@ int AACopier::resolve()
source->cardsAbilities.clear();
source->magicText = _target->magicText;
af.getAbilities(&currentAbilities, NULL, source);
for (size_t i = 0; i < currentAbilities.size(); ++i)
//af.getAbilities(&currentAbilities, NULL, source);
for (size_t i = 0; i < source->cardsAbilitiesFilter.size(); ++i)
{
MTGAbility * a = currentAbilities[i];
MTGAbility * a = source->cardsAbilitiesFilter[i];
a->source = (MTGCardInstance *) source;
if (a)
{

View File

@@ -141,6 +141,17 @@ void MTGCardInstance::copy(MTGCardInstance * card)
int castMethodBackUP = this->castMethod;
mtgid = source->getId();
MTGCardInstance * oldStored = this->storedSourceCard;
//test copy filtered
cardsAbilitiesFilter.clear();
for(unsigned int i = 0;i < card->cardsAbilities.size();i++)
{
MTGAbility * a = dynamic_cast<MTGAbility *>(card->cardsAbilities[i]);
if(a && a->source == card)
{
cardsAbilitiesFilter.push_back(a);
}
}
//
/*if(!isPhased)
{
Spell * spell = NEW Spell(observer, this);
@@ -297,6 +308,7 @@ void MTGCardInstance::initMTGCI()
exileEffects = false;
currentZone = NULL;
cardsAbilities = vector<MTGAbility *>();
cardsAbilitiesFilter = vector<MTGAbility *>();
data = this; //an MTGCardInstance point to itself for data, allows to update it without killing the underlying database item
if (observer && basicAbilities[(int)Constants::CHANGELING])