fix to previous checkin. adding new parameter to specify originating zone of card
This commit is contained in:
@@ -40,7 +40,7 @@ public:
|
||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL);
|
||||
int isReactingToClick(MTGCardInstance * card, ManaCost * mana, ManaCost *alternateManaCost);
|
||||
|
||||
int reactToClick(MTGCardInstance * card, ManaCost * alternateManaCost, int paymentType = ManaCost::MANA_PAID);
|
||||
int reactToClick(MTGCardInstance * card, ManaCost * alternateManaCost, MTGGameZone * originatingZone, int paymentType = ManaCost::MANA_PAID);
|
||||
int reactToClick(MTGCardInstance * card);
|
||||
|
||||
int testDestroy();
|
||||
|
||||
@@ -317,10 +317,10 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card)
|
||||
if (playerMana->canAfford( alternateCost ) )
|
||||
card->paymenttype = MTGAbility::ALTERNATIVE_COST;
|
||||
|
||||
return reactToClick(card, card->getManaCost()->alternative, ManaCost::MANA_PAID_WITH_ALTERNATIVE);
|
||||
return reactToClick(card, card->getManaCost()->alternative, player->game->hand, ManaCost::MANA_PAID_WITH_ALTERNATIVE);
|
||||
}
|
||||
|
||||
int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alternateCost, int alternateCostType){
|
||||
int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alternateCost, MTGGameZone * originatingZone, int alternateCostType){
|
||||
|
||||
Player * player = game->currentlyActing();
|
||||
ManaCost * playerMana = player->getManaPool();
|
||||
@@ -368,7 +368,7 @@ int MTGAlternativeCostRule::reactToClick(MTGCardInstance * card, ManaCost *alter
|
||||
else
|
||||
{
|
||||
ManaCost *spellCost = previousManaPool->Diff(player->getManaPool());
|
||||
MTGCardInstance * copy = player->game->putInZone(card, player->game->graveyard, player->game->stack);
|
||||
MTGCardInstance * copy = player->game->putInZone(card, originatingZone, player->game->stack);
|
||||
copy->alternateCostPaid[alternateCostType] = 1;
|
||||
spell = game->mLayers->stackLayer()->addSpell(copy, game->targetChooser, spellCost, payResult, 0);
|
||||
game->targetChooser = NULL;
|
||||
@@ -441,14 +441,15 @@ int MTGBuyBackRule::reactToClick(MTGCardInstance * card)
|
||||
if (!isReactingToClick(card))
|
||||
return 0;
|
||||
|
||||
ManaCost * playerMana = game->currentlyActing()->getManaPool();
|
||||
Player *player = game->currentlyActing();
|
||||
ManaCost * playerMana = player->getManaPool();
|
||||
ManaCost * alternateCost = card->getManaCost()->BuyBack;
|
||||
|
||||
//this handles extra cost payments at the moment a card is played.
|
||||
if (playerMana->canAfford(alternateCost))
|
||||
card->paymenttype = MTGAbility::BUYBACK_COST;
|
||||
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, ManaCost::MANA_PAID_WITH_BUYBACK);
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, player->game->hand, ManaCost::MANA_PAID_WITH_BUYBACK);
|
||||
|
||||
}
|
||||
|
||||
@@ -491,6 +492,7 @@ int MTGFlashBackRule::isReactingToClick(MTGCardInstance * card, ManaCost * mana)
|
||||
|
||||
int MTGFlashBackRule::reactToClick(MTGCardInstance * card)
|
||||
{
|
||||
Player *player = game->currentlyActing();
|
||||
ManaCost * alternateCost = card->getManaCost()->FlashBack;
|
||||
ManaCost * playerMana = game->currentlyActing()->getManaPool();
|
||||
if (!isReactingToClick(card))
|
||||
@@ -499,7 +501,7 @@ int MTGFlashBackRule::reactToClick(MTGCardInstance * card)
|
||||
if ( playerMana->canAfford(alternateCost) )
|
||||
card->paymenttype = MTGAbility::FLASHBACK_COST;
|
||||
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, ManaCost::MANA_PAID_WITH_FLASHBACK);
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, player->game->graveyard, ManaCost::MANA_PAID_WITH_FLASHBACK);
|
||||
|
||||
}
|
||||
|
||||
@@ -549,15 +551,15 @@ int MTGRetraceRule::reactToClick(MTGCardInstance * card)
|
||||
{
|
||||
if (!isReactingToClick(card))
|
||||
return 0;
|
||||
|
||||
ManaCost * playerMana = game->currentlyActing()->getManaPool();
|
||||
Player *player = game->currentlyActing();
|
||||
ManaCost * playerMana = player->getManaPool();
|
||||
ManaCost * alternateCost = card->getManaCost()->Retrace;
|
||||
|
||||
//this handles extra cost payments at the moment a card is played.
|
||||
if (playerMana->canAfford(alternateCost))
|
||||
card->paymenttype = MTGAbility::RETRACE_COST;
|
||||
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, ManaCost::MANA_PAID_WITH_RETRACE);
|
||||
return MTGAlternativeCostRule::reactToClick(card, alternateCost, player->game->graveyard, ManaCost::MANA_PAID_WITH_RETRACE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user