Transform Trigger, Turnlimit for TrCardAddedtoZone

Cleaned primitives, and fix SOI cards (remove workarounds) todo(recheck
BFZ and OGW)
This commit is contained in:
Anthony Calosa
2016-08-10 01:54:24 +08:00
parent ab49ea07e8
commit 151905c5f3
12 changed files with 481 additions and 336 deletions
+15 -7
View File
@@ -1653,6 +1653,11 @@ AACounter::AACounter(GameObserver* observer, int id, MTGCardInstance * source, M
if (target)
{
MTGCardInstance * _target = (MTGCardInstance *) target;
if(_target->isFlipped && _target->hasType(Subtypes::TYPE_PLANESWALKER))//is flipping pw
{
this->forceDestroy = 1;
return 0;
}
AbilityFactory af(game);
if(counterstring.size())
{
@@ -3223,7 +3228,7 @@ int AAFlip::resolve()
MTGCardInstance * _target = (MTGCardInstance *) target;
if (_target)
{
if((_target->isACopier||_target->isToken) && !isflipcard && !forcedcopy)
if((_target->isACopier||_target->isToken||_target->has(Constants::CANTTRANSFORM)) && !isflipcard && !forcedcopy)
{
game->removeObserver(this);
return 0;
@@ -3240,6 +3245,9 @@ int AAFlip::resolve()
MTGCard * fcard = MTGCollection()->getCardByName(flipStats);
if(!fcard) return 0;
MTGCardInstance * myFlip = NEW MTGCardInstance(fcard, _target->controller()->game);
MTGCardInstance * myParent = NULL;
if(_target->target)
myParent = _target->target;
_target->name = myFlip->name;
_target->setName(myFlip->name);
if(!isflipcard)//transform card
@@ -3252,12 +3260,7 @@ int AAFlip::resolve()
_target->types = myFlip->types;
_target->text = myFlip->text;
_target->formattedText = myFlip->formattedText;
//_target->basicAbilities = myFlip->basicAbilities;
for(int k = 0; k < Constants::NB_BASIC_ABILITIES; k++)
{
if(myFlip->model->data->basicAbilities[k])
_target->basicAbilities[k] = myFlip->model->data->basicAbilities[k];
}
_target->basicAbilities = myFlip->model->data->basicAbilities;
_target->modbasicAbilities = myFlip->modbasicAbilities;
cdaDamage = _target->damageCount;
_target->copiedID = myFlip->getMTGId();//for copier
@@ -3333,6 +3336,11 @@ int AAFlip::resolve()
{//pbonus & tbonus are already computed except damage taken...
_target->life -= cdaDamage;
}
if(_target->hasSubtype(Subtypes::TYPE_EQUIPMENT))
{
if(myParent)
_target->target = myParent;
}
SAFE_DELETE(myFlip);
_target->mPropertiesChangedSinceLastUpdate = true;
if(!isflipcard)