From 6cd0474eca4b4f100e17d2516d9934ff7f7ddf33 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 18 Sep 2015 19:56:02 +0800 Subject: [PATCH 1/7] Bug Fix on Cloning Tokens --- projects/mtg/include/AllAbilities.h | 1 + projects/mtg/include/MTGCardInstance.h | 1 + projects/mtg/src/AllAbilities.cpp | 25 ++++++++++++++++++------- projects/mtg/src/MTGCardInstance.cpp | 1 + 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 17f62efe8..ef0b8b31a 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -2456,6 +2456,7 @@ public: if(cda) {//Characteristic-defining abilities _target->cdaPT(wppt->power.getValue(),wppt->toughness.getValue()); + _target->isCDA = true; } else { diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 45dd49439..723013148 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -234,6 +234,7 @@ public: void revertbaseP(); void revertbaseT(); void cdaPT(int p = 0, int t = 0); + bool isCDA; void eventattacked(); void eventattackedAlone(); diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 7265690c7..434f5ad4a 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -2536,16 +2536,27 @@ int AACloner::resolve() spell->source->fresh = 1; spell->source->model = spell->source; spell->source->model->data = spell->source; - //commenting this out fixes some problems when duplicating tokens 9/16/2015 - /*if(_target->isToken) + //if the token doesn't have cda/dynamic pt then allow this... + if((_target->isToken) && (!_target->isCDA)) { - spell->source->power = _target->origpower; - spell->source->toughness = _target->origtoughness; - spell->source->life = _target->origtoughness; - }*/ + if(_target->pbonus > 0) + spell->source->power = _target->power - _target->pbonus; + else + spell->source->power = _target->power + _target->pbonus; + if(_target->tbonus > 0) + { + spell->source->toughness = _target->toughness - _target->tbonus; + spell->source->life = _target->toughness - _target->tbonus; + } + else + { + spell->source->toughness = _target->toughness + _target->tbonus; + spell->source->life = _target->toughness + _target->tbonus; + } + } list::iterator it; for (it = awith.begin(); it != awith.end(); it++) - { + {//there must be a layer of temporary abilities and original abilities spell->source->basicAbilities[*it] = 1; } for (it = colors.begin(); it != colors.end(); it++) diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index b64305392..88458bcb1 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -54,6 +54,7 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to flanked = 0; castMethod = Constants::NOT_CAST; isSettingBase = 0; + isCDA = false; } MTGCardInstance * MTGCardInstance::createSnapShot() From 11124205e51e38ed6632b0be851e3b3ed17d8361 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Fri, 18 Sep 2015 20:16:28 +0800 Subject: [PATCH 2/7] basic color code on PT if a creature was damaged or has a negative toughness bonus, the pt changes to crimson red, if the creature was not damaged and has power buff, the color changes to spring green, normal was default white. --- projects/mtg/src/AllAbilities.cpp | 2 +- projects/mtg/src/CardGui.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 434f5ad4a..8f46e5728 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -2541,7 +2541,7 @@ int AACloner::resolve() { if(_target->pbonus > 0) spell->source->power = _target->power - _target->pbonus; - else + else spell->source->power = _target->power + _target->pbonus; if(_target->tbonus > 0) { diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index de5efb003..8c49bb260 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -285,7 +285,12 @@ void CardGui::Render() sprintf(buffer, "%i/%i", card->power, card->life); renderer->FillRect(actX - (12 * actZ), actY + 6 * actZ, 25 * actZ, 12 * actZ, ARGB(((static_cast(actA))/2),0,0,0)); - mFont->SetColor(ARGB(static_cast(actA),255,255,255)); + if(card->wasDealtDamage || card->tbonus < 0) + mFont->SetColor(ARGB(static_cast(actA),220,20,60));//crimson + else if(!card->wasDealtDamage && card->pbonus > 0) + mFont->SetColor(ARGB(static_cast(actA),0,255,127));//spring green + else + mFont->SetColor(ARGB(static_cast(actA),255,255,255));//white mFont->SetScale(actZ); mFont->DrawString(buffer, actX - 10 * actZ, actY + 8 * actZ); mFont->SetScale(1); From ef690f6438a430a9739f6b1b7bd445a9cb1cb78a Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 19 Sep 2015 07:50:04 +0800 Subject: [PATCH 3/7] update pt colors --- projects/mtg/src/CardGui.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 8c49bb260..dc78f226f 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -285,10 +285,18 @@ void CardGui::Render() sprintf(buffer, "%i/%i", card->power, card->life); renderer->FillRect(actX - (12 * actZ), actY + 6 * actZ, 25 * actZ, 12 * actZ, ARGB(((static_cast(actA))/2),0,0,0)); - if(card->wasDealtDamage || card->tbonus < 0) - mFont->SetColor(ARGB(static_cast(actA),220,20,60));//crimson + if(card->wasDealtDamage && card->life <= 2) + mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red else if(!card->wasDealtDamage && card->pbonus > 0) - mFont->SetColor(ARGB(static_cast(actA),0,255,127));//spring green + mFont->SetColor(ARGB(static_cast(actA),152,251,152));//pale green + else if(card->getRarity() == Constants::RARITY_M) + mFont->SetColor(ARGB(static_cast(actA),255,165,0));//orange + else if(card->getRarity() == Constants::RARITY_R) + mFont->SetColor(ARGB(static_cast(actA),255,215,0));//gold + else if(card->getRarity() == Constants::RARITY_T) + mFont->SetColor(ARGB(static_cast(actA),245,245,245));//smoke + else if(card->hasType("legendary") && card->hasType("eldrazi")) + mFont->SetColor(ARGB(static_cast(actA),238,130,238));//violet else mFont->SetColor(ARGB(static_cast(actA),255,255,255));//white mFont->SetScale(actZ); From 81f0c916f5c26fd282f927abe3b4c96f78fd1481 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 19 Sep 2015 08:04:26 +0800 Subject: [PATCH 4/7] readjustment --- projects/mtg/src/CardGui.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index dc78f226f..a37941143 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -285,11 +285,7 @@ void CardGui::Render() sprintf(buffer, "%i/%i", card->power, card->life); renderer->FillRect(actX - (12 * actZ), actY + 6 * actZ, 25 * actZ, 12 * actZ, ARGB(((static_cast(actA))/2),0,0,0)); - if(card->wasDealtDamage && card->life <= 2) - mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red - else if(!card->wasDealtDamage && card->pbonus > 0) - mFont->SetColor(ARGB(static_cast(actA),152,251,152));//pale green - else if(card->getRarity() == Constants::RARITY_M) + if(card->getRarity() == Constants::RARITY_M) mFont->SetColor(ARGB(static_cast(actA),255,165,0));//orange else if(card->getRarity() == Constants::RARITY_R) mFont->SetColor(ARGB(static_cast(actA),255,215,0));//gold @@ -299,6 +295,14 @@ void CardGui::Render() mFont->SetColor(ARGB(static_cast(actA),238,130,238));//violet else mFont->SetColor(ARGB(static_cast(actA),255,255,255));//white + //damaged or buffed or powered down + if(card->wasDealtDamage && card->life <= 2) + mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red + else if(!card->wasDealtDamage && card->pbonus > 0) + mFont->SetColor(ARGB(static_cast(actA),152,251,152));//pale green + else if(!card->wasDealtDamage && card->pbonus < 0) + mFont->SetColor(ARGB(static_cast(actA),216,191,216));//thistle + mFont->SetScale(actZ); mFont->SetScale(actZ); mFont->DrawString(buffer, actX - 10 * actZ, actY + 8 * actZ); mFont->SetScale(1); From e25b78953c0ea057627f5b82b73c905254a86869 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 19 Sep 2015 10:29:02 +0800 Subject: [PATCH 5/7] other indicators must be somewhere else --- projects/mtg/src/CardGui.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index a37941143..29291784f 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -285,23 +285,17 @@ void CardGui::Render() sprintf(buffer, "%i/%i", card->power, card->life); renderer->FillRect(actX - (12 * actZ), actY + 6 * actZ, 25 * actZ, 12 * actZ, ARGB(((static_cast(actA))/2),0,0,0)); - if(card->getRarity() == Constants::RARITY_M) - mFont->SetColor(ARGB(static_cast(actA),255,165,0));//orange - else if(card->getRarity() == Constants::RARITY_R) - mFont->SetColor(ARGB(static_cast(actA),255,215,0));//gold + //damaged or buffed or powered down + if(card->wasDealtDamage && card->life <= 2) + mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red + else if(!card->wasDealtDamage && card->pbonus < 0) + mFont->SetColor(ARGB(static_cast(actA),216,191,216));//thistle else if(card->getRarity() == Constants::RARITY_T) mFont->SetColor(ARGB(static_cast(actA),245,245,245));//smoke else if(card->hasType("legendary") && card->hasType("eldrazi")) mFont->SetColor(ARGB(static_cast(actA),238,130,238));//violet else mFont->SetColor(ARGB(static_cast(actA),255,255,255));//white - //damaged or buffed or powered down - if(card->wasDealtDamage && card->life <= 2) - mFont->SetColor(ARGB(static_cast(actA),255,0,0));//red - else if(!card->wasDealtDamage && card->pbonus > 0) - mFont->SetColor(ARGB(static_cast(actA),152,251,152));//pale green - else if(!card->wasDealtDamage && card->pbonus < 0) - mFont->SetColor(ARGB(static_cast(actA),216,191,216));//thistle mFont->SetScale(actZ); mFont->SetScale(actZ); mFont->DrawString(buffer, actX - 10 * actZ, actY + 8 * actZ); From c9d9d3d4d3c7b48a11688a1f2c5d9e7b2bebaf12 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 19 Sep 2015 13:05:16 +0800 Subject: [PATCH 6/7] Random I have a profile with 100+ decks and it seems with the previous code, the random deck seems not random. --- projects/mtg/src/DeckMenu.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/projects/mtg/src/DeckMenu.cpp b/projects/mtg/src/DeckMenu.cpp index 7c2e060f5..961bc8332 100644 --- a/projects/mtg/src/DeckMenu.cpp +++ b/projects/mtg/src/DeckMenu.cpp @@ -215,7 +215,10 @@ void DeckMenu::selectRandomDeck(bool isAi) { DeckManager *deckManager = DeckManager::GetInstance(); vector *deckList = isAi ? deckManager->getAIDeckOrderList() : deckManager->getPlayerDeckOrderList(); - int random = (WRand() * 1000) % deckList->size(); + //int random = (WRand() * 1000) % deckList->size(); + int lowest=0, highest = deckList->size(); + int range=(highest-lowest)+1; + int random = lowest+int(range*rand()/(RAND_MAX + 1.0)); selectDeck( random, isAi ); } From 64c6d19ae7eddfaca25ac0baec809b855902d69f Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 19 Sep 2015 13:28:14 +0800 Subject: [PATCH 7/7] lowest is 0, typo... --- projects/mtg/src/DeckMenu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/mtg/src/DeckMenu.cpp b/projects/mtg/src/DeckMenu.cpp index 961bc8332..9c544a535 100644 --- a/projects/mtg/src/DeckMenu.cpp +++ b/projects/mtg/src/DeckMenu.cpp @@ -217,7 +217,7 @@ void DeckMenu::selectRandomDeck(bool isAi) vector *deckList = isAi ? deckManager->getAIDeckOrderList() : deckManager->getPlayerDeckOrderList(); //int random = (WRand() * 1000) % deckList->size(); int lowest=0, highest = deckList->size(); - int range=(highest-lowest)+1; + int range=(highest-lowest); int random = lowest+int(range*rand()/(RAND_MAX + 1.0)); selectDeck( random, isAi ); }