diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index cefa5a5d4..1bd266b1b 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -168,6 +168,7 @@ public: MTGCardInstance * myPair; MTGCardInstance * createSnapShot(); MTGCardInstance * storedSourceCard; + MTGCardInstance * shackled; MTGCardInstance * isDefenser(); int initAttackersDefensers(); MTGCardInstance * getNextOpponent(MTGCardInstance * previous=NULL); diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index a5b673f3a..2516a18be 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -6531,6 +6531,8 @@ void AShackle::resolveShackle() previousController->game->putInZone(_target, _target->currentZone, source->controller()->game->inPlay); Shackled = _target; + source->shackled = Shackled; + Shackled->shackled = source; } } @@ -6538,14 +6540,19 @@ void AShackle::returntoOwner(MTGCardInstance* _target) { MTGCardInstance * cardToReturn = _target; if(!cardToReturn) { + if (source) + source->shackled = NULL; this->forceDestroy = 1; return; } if(previousController && cardToReturn->isInPlay(game)) { + cardToReturn->shackled = NULL; cardToReturn->controller()->game->putInZone(_target, _target->currentZone, previousController->game->inPlay); } + if (source) + source->shackled = NULL; this->forceDestroy = 1; Shackled = NULL; return; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 2b1c20dc7..389427db7 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -274,8 +274,32 @@ void CardGui::Render() { if(cv->mHasFocus) { - highlightborder->SetColor(ARGB(200,57,28,248)); + highlightborder->SetColor(ARGB(200,57,28,248)); + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); + } + } + } + if(card->shackled && card->shackled->isInPlay(game) && highlightborder) + { + if(mHasFocus) + { + if(card->has(Constants::SHACKLER)) + highlightborder->SetColor(ARGB(200,7,98,248)); + else + highlightborder->SetColor(ARGB(200,57,28,248)); + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); + } + if(CardView* cv = dynamic_cast(card->shackled->view)) + { + if(cv->mHasFocus) + { + if(!card->shackled->has(Constants::SHACKLER)) + highlightborder->SetColor(ARGB(200,7,98,248)); + else + highlightborder->SetColor(ARGB(200,57,28,248)); + + renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); } } } diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 1c89311f5..c8d800eec 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -211,6 +211,7 @@ void MTGCardInstance::initMTGCI() storedCard = NULL; storedSourceCard = NULL; myPair = NULL; + shackled = NULL; miracle = false; countTrini = 0; imprintedCards.clear();