revised copier copied abilities
the clone should copy original abilities only
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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(¤tAbilities, NULL, source);
|
||||
for (size_t i = 0; i < currentAbilities.size(); ++i)
|
||||
//af.getAbilities(¤tAbilities, 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)
|
||||
{
|
||||
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user