From 039be43c2bfbfe52bf88009275848c2980216264 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 23 Feb 2017 14:04:16 +0800 Subject: [PATCH] set the current controller to do action let the controller of the action do the abilty, also fix casted cards that's been casted using castcard and be put into its owner's graveyard --- projects/mtg/src/ActionStack.cpp | 4 ++-- projects/mtg/src/AllAbilities.cpp | 4 ++-- projects/mtg/src/MTGAbility.cpp | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index 827769701..5799c089a 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -567,12 +567,12 @@ int PutInGraveyard::resolve() MTGGameZone * zone = card->getCurrentZone(); if (card->basicAbilities[(int)Constants::EXILEDEATH]) { - card->owner->game->putInZone(card, zone, card->owner->game->exile); + card->controller()->game->putInZone(card, zone, card->owner->game->exile); return 1; } if (zone == observer->players[0]->game->inPlay || zone == observer->players[1]->game->inPlay) { - card->owner->game->putInZone(card, zone, card->owner->game->graveyard); + card->controller()->game->putInZone(card, zone, card->owner->game->graveyard); return 1; } return 0; diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 270840733..72edd24f1 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -8153,7 +8153,7 @@ int AACastCard::resolveSpell() if (putinplay && (_target->hasType(Subtypes::TYPE_ARTIFACT)||_target->hasType(Subtypes::TYPE_CREATURE)||_target->hasType(Subtypes::TYPE_ENCHANTMENT)||_target->hasType(Subtypes::TYPE_PLANESWALKER))) copy =_target->controller()->game->putInZone(_target, _target->currentZone, source->controller()->game->battlefield,noEvent); else - copy =_target->controller()->game->putInZone(_target, _target->currentZone, _target->controller()->game->stack,noEvent); + copy =_target->controller()->game->putInZone(_target, _target->currentZone, source->controller()->game->stack,noEvent); copy->changeController(source->controller(),true); if(asNormalMadness) copy->MadnessPlay = true; @@ -8163,7 +8163,7 @@ int AACastCard::resolveSpell() if (putinplay && (_target->hasType(Subtypes::TYPE_ARTIFACT)||_target->hasType(Subtypes::TYPE_CREATURE)||_target->hasType(Subtypes::TYPE_ENCHANTMENT)||_target->hasType(Subtypes::TYPE_PLANESWALKER))) copy =_target->controller()->game->putInZone(_target, _target->currentZone, source->controller()->game->battlefield,noEvent); else - copy =_target->controller()->game->putInZone(_target, _target->currentZone, _target->controller()->game->stack,noEvent); + copy =_target->controller()->game->putInZone(_target, _target->currentZone, source->controller()->game->stack,noEvent); copy->changeController(source->controller(),true); } if (game->targetChooser) diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 12f38ac78..46f0767f5 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -5250,11 +5250,11 @@ void AbilityFactory::addAbilities(int _id, Spell * spell) if (card->hasType(Subtypes::TYPE_INSTANT) || card->hasType(Subtypes::TYPE_SORCERY)) { - MTGPlayerCards * zones = card->owner->game; + MTGPlayerCards * zones = card->controller()->game; MTGPlayerCards * Endzones = card->owner->game;//put them in thier owners respective zones as per rules. if (card->basicAbilities[(int)Constants::EXILEDEATH]) { - card->owner->game->putInZone(card, card->getCurrentZone(), card->owner->game->exile); + card->controller()->game->putInZone(card, card->getCurrentZone(), card->owner->game->exile); } else if (card->alternateCostPaid[ManaCost::MANA_PAID_WITH_BUYBACK] > 0)