revised fix for copier
This commit is contained in:
@@ -1470,17 +1470,40 @@ int AACopier::resolve()
|
|||||||
source->copy(_target->clone());
|
source->copy(_target->clone());
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!_target->isACopier)
|
source->copy(_target);
|
||||||
source->copy(_target);
|
}
|
||||||
else
|
//abilities
|
||||||
|
for(unsigned int i = 0;i < source->cardsAbilities.size();i++)
|
||||||
|
{
|
||||||
|
MTGAbility * a = dynamic_cast<MTGAbility *>(source->cardsAbilities[i]);
|
||||||
|
|
||||||
|
if(a) game->removeObserver(a);
|
||||||
|
}
|
||||||
|
source->cardsAbilities.clear();
|
||||||
|
af.getAbilities(¤tAbilities, NULL, source);
|
||||||
|
for (size_t i = 0; i < currentAbilities.size(); ++i)
|
||||||
|
{
|
||||||
|
MTGAbility * a = currentAbilities[i];
|
||||||
|
a->source = (MTGCardInstance *) source;
|
||||||
|
if (a)
|
||||||
{
|
{
|
||||||
source->copy(_target);
|
if (a->oneShot)
|
||||||
source->power -= _target->pbonus;
|
{
|
||||||
source->toughness -= _target->tbonus;
|
a->resolve();
|
||||||
source->life = source->toughness;
|
SAFE_DELETE(a);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
a->addToGame();
|
||||||
|
MayAbility * dontAdd = dynamic_cast<MayAbility*>(a);
|
||||||
|
if(!dontAdd)
|
||||||
|
{
|
||||||
|
source->cardsAbilities.push_back(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//
|
||||||
source->isACopier = true;
|
source->isACopier = true;
|
||||||
source->hasCopiedToken = tokencopied;
|
source->hasCopiedToken = tokencopied;
|
||||||
source->copiedID = _target->copiedID;
|
source->copiedID = _target->copiedID;
|
||||||
@@ -3213,6 +3236,12 @@ int AAFlip::resolve()
|
|||||||
MTGCardInstance * _target = (MTGCardInstance *) target;
|
MTGCardInstance * _target = (MTGCardInstance *) target;
|
||||||
if (_target)
|
if (_target)
|
||||||
{
|
{
|
||||||
|
if(((_target->isACopier||_target->isToken) && !isflipcard) || _target->has(Constants::CANTTRANSFORM))
|
||||||
|
{
|
||||||
|
game->removeObserver(this);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
while (_target->next)
|
while (_target->next)
|
||||||
_target = _target->next;
|
_target = _target->next;
|
||||||
|
|
||||||
|
|||||||
@@ -402,7 +402,8 @@ void CardGui::Render()
|
|||||||
mFont->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255));//white default
|
mFont->SetColor(ARGB(static_cast<unsigned char>(actA),255,255,255));//white default
|
||||||
mFont->SetScale(actZ);
|
mFont->SetScale(actZ);
|
||||||
mFont->SetScale(actZ);
|
mFont->SetScale(actZ);
|
||||||
mFont->DrawString(buffer, actX - 10 * actZ, actY + 7 * actZ);
|
float halfbufferW = (mFont->GetStringWidth(buffer))/2;
|
||||||
|
mFont->DrawString(buffer, actX - halfbufferW * actZ, actY + 7 * actZ);
|
||||||
mFont->SetScale(1);
|
mFont->SetScale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,10 +96,16 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to
|
|||||||
|
|
||||||
void MTGCardInstance::copy(MTGCardInstance * card)
|
void MTGCardInstance::copy(MTGCardInstance * card)
|
||||||
{
|
{
|
||||||
//MTGCard * source = card->model;
|
MTGCard * source = NULL;
|
||||||
MTGCard * source = card;
|
if(card->isToken || card->hasCopiedToken)
|
||||||
|
{
|
||||||
|
source = card;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
source = MTGCollection()->getCardById(card->copiedID);
|
||||||
|
|
||||||
CardPrimitive * data = source->data;
|
CardPrimitive * data = source->data;
|
||||||
basicAbilities = card->model->data->basicAbilities;
|
basicAbilities = data->basicAbilities;
|
||||||
for (size_t i = 0; i < data->types.size(); i++)
|
for (size_t i = 0; i < data->types.size(); i++)
|
||||||
{
|
{
|
||||||
types.push_back(data->types[i]);
|
types.push_back(data->types[i]);
|
||||||
@@ -121,17 +127,19 @@ void MTGCardInstance::copy(MTGCardInstance * card)
|
|||||||
magicText = data->magicText;
|
magicText = data->magicText;
|
||||||
spellTargetType = data->spellTargetType;
|
spellTargetType = data->spellTargetType;
|
||||||
alias = data->alias;
|
alias = data->alias;
|
||||||
|
copiedID = card->copiedID;
|
||||||
|
doubleFaced = data->doubleFaced;
|
||||||
|
|
||||||
//Now this is dirty...
|
//Now this is dirty...
|
||||||
int backupid = mtgid;
|
int backupid = mtgid;
|
||||||
int castMethodBackUP = this->castMethod;
|
int castMethodBackUP = this->castMethod;
|
||||||
mtgid = source->getId();
|
mtgid = source->getId();
|
||||||
MTGCardInstance * oldStored = this->storedSourceCard;
|
MTGCardInstance * oldStored = this->storedSourceCard;
|
||||||
Spell * spell = NEW Spell(observer, this);
|
/*Spell * spell = NEW Spell(observer, this);
|
||||||
observer = card->observer;
|
observer = card->observer;
|
||||||
AbilityFactory af(observer);
|
AbilityFactory af(observer);
|
||||||
af.addAbilities(observer->mLayers->actionLayer()->getMaxId(), spell);
|
af.addAbilities(observer->mLayers->actionLayer()->getMaxId(), spell);
|
||||||
delete spell;
|
delete spell;*/
|
||||||
if(observer->players[1]->playMode == Player::MODE_TEST_SUITE)
|
if(observer->players[1]->playMode == Player::MODE_TEST_SUITE)
|
||||||
mtgid = backupid; // there must be a way to get the token id...
|
mtgid = backupid; // there must be a way to get the token id...
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user