From b836c97a1bac750038e106b340330dc4a5e8192c Mon Sep 17 00:00:00 2001 From: "techdragon.nguyen@gmail.com" Date: Fri, 21 Jan 2011 18:46:13 +0000 Subject: [PATCH] fix to previous checkin. adding new parameter to specify originating zone of card --- projects/mtg/include/MTGRules.h | 2 +- projects/mtg/src/MTGRules.cpp | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/projects/mtg/include/MTGRules.h b/projects/mtg/include/MTGRules.h index ebb770a37..61967e082 100644 --- a/projects/mtg/include/MTGRules.h +++ b/projects/mtg/include/MTGRules.h @@ -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(); diff --git a/projects/mtg/src/MTGRules.cpp b/projects/mtg/src/MTGRules.cpp index 32b7cf68a..ec6df5cfb 100644 --- a/projects/mtg/src/MTGRules.cpp +++ b/projects/mtg/src/MTGRules.cpp @@ -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); }