diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index 65430c348..79b062bfd 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -11382,7 +11382,7 @@ toughness=2 [/card] [card] name=Bloodcrazed Goblin -auto=this(opponentdamagecount <1) cantattack +auto=this(variable{odnoncount}<1) cantattack text=Bloodcrazed Goblin can't attack unless an opponent was dealt noncombat damage this turn. mana={R} type=Creature diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 817267250..fde01edc7 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -690,6 +690,14 @@ private: { intValue = target->controller()->opponent()->damageCount; } + else if (s == "pdnoncount") + { + intValue = target->controller()->nonCombatDamage; + } + else if (s == "odnoncount") + { + intValue = target->controller()->opponent()->nonCombatDamage; + } else if (s == "playerpoisoncount") { intValue = target->controller()->poisonCount; diff --git a/projects/mtg/include/Damage.h b/projects/mtg/include/Damage.h index 5443f1b95..0cb6369d2 100644 --- a/projects/mtg/include/Damage.h +++ b/projects/mtg/include/Damage.h @@ -24,6 +24,7 @@ public: int handsize; int poisonCount; int damageCount; + int nonCombatDamage; int preventable; int thatmuch; int lifeLostThisTurn; diff --git a/projects/mtg/src/Damage.cpp b/projects/mtg/src/Damage.cpp index 17bd6b9bd..5536711bd 100644 --- a/projects/mtg/src/Damage.cpp +++ b/projects/mtg/src/Damage.cpp @@ -184,6 +184,8 @@ int Damage::resolve() if(!_target->inPlay()->hasAbility(Constants::POISONSHROUD)) _target->poisonCount += damage;//this will be changed to poison counters. _target->damageCount += damage; + if(typeOfDamage == 2) + target->nonCombatDamage += damage; if ( typeOfDamage == 1 && target == source->controller()->opponent() )//add vector prowledtypes. { vector values = MTGAllCards::getCreatureValuesById(); @@ -202,6 +204,8 @@ int Damage::resolve() if(!_target->inPlay()->hasAbility(Constants::CANTCHANGELIFE)) a = target->dealDamage(damage); target->damageCount += damage; + if(typeOfDamage == 2) + target->nonCombatDamage += damage; if ( typeOfDamage == 1 && target == source->controller()->opponent() )//add vector prowledtypes. { vector values = MTGAllCards::getCreatureValuesById(); @@ -237,6 +241,8 @@ int Damage::resolve() else a = target->dealDamage(damage); target->damageCount += damage;//the amount must be the actual damage so i changed this from 1 to damage, this fixes pdcount and odcount + if(typeOfDamage == 2) + target->nonCombatDamage += damage; if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE){ ((MTGCardInstance*)target)->wasDealtDamage = true; ((MTGCardInstance*)source)->damageToCreature = true; diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index bc212c5b8..3dae21c23 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -211,11 +211,13 @@ void GameObserver::nextGamePhase() { cleanupPhase(); currentPlayer->damageCount = 0; + currentPlayer->nonCombatDamage = 0; currentPlayer->drawCounter = 0; currentPlayer->raidcount = 0; currentPlayer->opponent()->raidcount = 0; currentPlayer->prowledTypes.clear(); currentPlayer->opponent()->damageCount = 0; //added to clear odcount + currentPlayer->opponent()->nonCombatDamage = 0; currentPlayer->preventable = 0; mLayers->actionLayer()->cleanGarbage(); //clean abilities history for this turn; mLayers->stackLayer()->garbageCollect(); //clean stack history for this turn; diff --git a/projects/mtg/src/Player.cpp b/projects/mtg/src/Player.cpp index 7623e32e0..6fcb9b0fd 100644 --- a/projects/mtg/src/Player.cpp +++ b/projects/mtg/src/Player.cpp @@ -26,6 +26,7 @@ Player::Player(GameObserver *observer, string file, string fileSmall, MTGDeck * nomaxhandsize = false; poisonCount = 0; damageCount = 0; + nonCombatDamage = 0; preventable = 0; mAvatarTex = NULL; type_as_damageable = DAMAGEABLE_PLAYER;