changed a previous fix a bit, also, altho this is not the "layers system" and we don't really support it, i thought i could atleast support the reapply of p/t bonuses from counters for atransformer...

and while messing around i found out that i forgot an important check in the new kicker with menu, to check if the card was still in the hand :P
This commit is contained in:
omegablast2002@yahoo.com
2011-04-28 15:17:49 +00:00
parent 59a8afb745
commit 669f8744b6
3 changed files with 33 additions and 1 deletions

View File

@@ -3652,6 +3652,7 @@ public:
ATransformer(int id, MTGCardInstance * source, MTGCardInstance * target, string stypes, string sabilities,string newpower,bool newpowerfound,string newtoughness,bool newtoughnessfound,vector<string> newAbilitiesList,bool newAbilityFound = false,bool aForever = false);
int addToGame();
int reapplyCountersBonus(MTGCardInstance * rtarget= NULL,bool powerapplied=false,bool toughnessapplied=false);
int destroy();
const char * getMenuText();
ATransformer * clone() const;

View File

@@ -1920,6 +1920,9 @@ int MayAbility::testDestroy()
return 0;
if (game->mLayers->actionLayer()->getIndexOf(mClone) != -1)
return 0;
if(game->currentPlayer == source->controller() && game->isInterrupting == source->controller() && dynamic_cast<AManaProducer*>(AbilityFactory::getCoreAbility(ability)))
//if its my turn, and im interrupting myself(why?) then set interrupting to previous interrupter if the ability was a manaability
//special case since they don't use the stack.
game->mLayers->stackLayer()->setIsInterrupting(previousInterrupter);
return 1;
}
@@ -2465,6 +2468,7 @@ ATransformer::ATransformer(int id, MTGCardInstance * source, MTGCardInstance * t
oldpower = _target->power;
_target->power += val->getValue();
_target->power -= oldpower;
_target->power += reapplyCountersBonus(_target,false,true);
delete val;
}
if(newtoughnessfound )
@@ -2473,13 +2477,38 @@ ATransformer::ATransformer(int id, MTGCardInstance * source, MTGCardInstance * t
oldtoughness = _target->toughness;
_target->addToToughness(val->getValue());
_target->addToToughness(-oldtoughness);
_target->addToToughness(reapplyCountersBonus(_target,true,false));
_target->life = _target->toughness;
delete val;
}
}
return MTGAbility::addToGame();
}
int ATransformer::reapplyCountersBonus(MTGCardInstance * rtarget,bool powerapplied,bool toughnessapplied)
{
if(!rtarget->counters)
return 0;
Counter * c = NULL;
c = rtarget->counters->counters[0];
int rNewPower = 0;
int rNewToughness = 0;
for (int t = 0; t < rtarget->counters->mCount; t++)
{
if (c)
{
for(int i = 0;i < c->nb;i++)
{
rNewPower += c->power;
rNewToughness += c->toughness;
}
}
c = rtarget->counters->getNext(c);
}
if(toughnessapplied)
return rNewToughness;
return rNewPower;
}
int ATransformer::destroy()
{
if(aForever)

View File

@@ -485,6 +485,8 @@ int MTGKickerRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
if(OptionKicker::KICKER_ALWAYS == options[Options::KICKERPAYMENT].number)
return 0;
Player * player = game->currentlyActing();
if(!player->game->hand->hasCard(card))
return 0;
ManaCost * kicker = card->getManaCost()->kicker;
if(!kicker)
{