From 0c053c713a92fbded941fd832dd1d0588f5a6d20 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 3 Aug 2017 18:27:45 +0800 Subject: [PATCH 1/2] fix morbid also added zerodead restriction - returns true if you dont have any creature that died this turn --- projects/mtg/bin/Res/sets/primitives/mtg.txt | 3 +- projects/mtg/src/MTGAbility.cpp | 29 ++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index c11da5943..7fd989400 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -106336,7 +106336,8 @@ toughness=6 [/card] [card] name=Simoon -auto=damage:1 all(creature|opponentBattlefield) +target=opponent +auto=damage:1 all(creature|targetedpersonsbattlefield) text=Simoon deals 1 damage to each creature target opponent controls. mana={R}{G} type=Instant diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 91b885f41..12e11e87e 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -386,7 +386,10 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++) { MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy]; - if(checkCard->isCreature()) + if(checkCard->isCreature() && + ((checkCard->previousZone == checkCurrent->game->battlefield)|| + (checkCard->previousZone == checkCurrent->opponent()->game->battlefield))//died from battlefield + ) { isMorbid = true; break; @@ -398,7 +401,29 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe if(!isMorbid) return 0; } - + check = restriction[i].find("zerodead"); + if(check != string::npos)//returns true if zero + { + bool hasDeadCreature = false; + for(int cp = 0;cp < 2;cp++) + { + Player * checkCurrent = observer->players[cp]; + MTGGameZone * grave = checkCurrent->game->graveyard; + for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++) + { + MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy]; + if(checkCard->isCreature() && + ((checkCard->previousZone == checkCurrent->game->battlefield))//died from your battlefield + ) + { + hasDeadCreature = true; + break; + } + } + if(hasDeadCreature) + return 0; + } + } //Ensnaring Bridge check = restriction[i].find("powermorethanopponenthand"); if (check != string::npos)//for opponent creatures From c5a33101039804bfb77590d7ef354ab761993df1 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 3 Aug 2017 18:32:16 +0800 Subject: [PATCH 2/2] quick Fix for zerodead --- projects/mtg/src/MTGAbility.cpp | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 12e11e87e..1eb729b85 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -405,24 +405,21 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe if(check != string::npos)//returns true if zero { bool hasDeadCreature = false; - for(int cp = 0;cp < 2;cp++) + Player * checkCurrent = card->controller(); + MTGGameZone * grave = checkCurrent->game->graveyard; + for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++) { - Player * checkCurrent = observer->players[cp]; - MTGGameZone * grave = checkCurrent->game->graveyard; - for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++) + MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy]; + if(checkCard->isCreature() && + ((checkCard->previousZone == checkCurrent->game->battlefield))//died from your battlefield + ) { - MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy]; - if(checkCard->isCreature() && - ((checkCard->previousZone == checkCurrent->game->battlefield))//died from your battlefield - ) - { - hasDeadCreature = true; - break; - } + hasDeadCreature = true; + break; } - if(hasDeadCreature) - return 0; } + if(hasDeadCreature) + return 0; } //Ensnaring Bridge check = restriction[i].find("powermorethanopponenthand");