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*>parentCards;
|
||||||
vector<MTGCardInstance*>childrenCards;
|
vector<MTGCardInstance*>childrenCards;
|
||||||
vector<MTGAbility *>cardsAbilities;
|
vector<MTGAbility *>cardsAbilities;
|
||||||
|
vector<MTGAbility *>cardsAbilitiesFilter;
|
||||||
|
|
||||||
int setAttacker(int value);
|
int setAttacker(int value);
|
||||||
int setDefenser(MTGCardInstance * c);
|
int setDefenser(MTGCardInstance * c);
|
||||||
|
|||||||
@@ -1610,7 +1610,7 @@ int AACopier::resolve()
|
|||||||
if(source->isACopier)
|
if(source->isACopier)
|
||||||
{
|
{
|
||||||
source->GrantedAndAbility = andAbility;
|
source->GrantedAndAbility = andAbility;
|
||||||
AbilityFactory af(game);
|
//AbilityFactory af(game);
|
||||||
for(unsigned int i = 0;i < source->cardsAbilities.size();i++)
|
for(unsigned int i = 0;i < source->cardsAbilities.size();i++)
|
||||||
{
|
{
|
||||||
MTGAbility * a = dynamic_cast<MTGAbility *>(source->cardsAbilities[i]);
|
MTGAbility * a = dynamic_cast<MTGAbility *>(source->cardsAbilities[i]);
|
||||||
@@ -1620,10 +1620,10 @@ int AACopier::resolve()
|
|||||||
source->cardsAbilities.clear();
|
source->cardsAbilities.clear();
|
||||||
source->magicText = _target->magicText;
|
source->magicText = _target->magicText;
|
||||||
|
|
||||||
af.getAbilities(¤tAbilities, NULL, source);
|
//af.getAbilities(¤tAbilities, NULL, source);
|
||||||
for (size_t i = 0; i < currentAbilities.size(); ++i)
|
for (size_t i = 0; i < source->cardsAbilitiesFilter.size(); ++i)
|
||||||
{
|
{
|
||||||
MTGAbility * a = currentAbilities[i];
|
MTGAbility * a = source->cardsAbilitiesFilter[i];
|
||||||
a->source = (MTGCardInstance *) source;
|
a->source = (MTGCardInstance *) source;
|
||||||
if (a)
|
if (a)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -141,6 +141,17 @@ void MTGCardInstance::copy(MTGCardInstance * card)
|
|||||||
int castMethodBackUP = this->castMethod;
|
int castMethodBackUP = this->castMethod;
|
||||||
mtgid = source->getId();
|
mtgid = source->getId();
|
||||||
MTGCardInstance * oldStored = this->storedSourceCard;
|
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)
|
/*if(!isPhased)
|
||||||
{
|
{
|
||||||
Spell * spell = NEW Spell(observer, this);
|
Spell * spell = NEW Spell(observer, this);
|
||||||
@@ -297,6 +308,7 @@ void MTGCardInstance::initMTGCI()
|
|||||||
exileEffects = false;
|
exileEffects = false;
|
||||||
currentZone = NULL;
|
currentZone = NULL;
|
||||||
cardsAbilities = vector<MTGAbility *>();
|
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
|
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])
|
if (observer && basicAbilities[(int)Constants::CHANGELING])
|
||||||
|
|||||||
Reference in New Issue
Block a user