diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index 90c9a29b7..01536f659 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -211,8 +211,9 @@ class Constants CANATTACK = 91, HYDRA = 92, UNDYING = 93, + POISONSHROUD = 94, - NB_BASIC_ABILITIES = 94, + NB_BASIC_ABILITIES = 95, RARITY_S = 'S', //Special Rarity diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index f3a96245d..da0d94608 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -85,7 +85,9 @@ int AAAlterPoison::resolve() Damageable * _target = (Damageable *) getTarget(); if (_target) { - _target->poisonCount += poison; + Player * pTarget = (Player*)_target; + if(!pTarget->inPlay()->hasAbility(Constants::POISONSHROUD) || poison < 0) + _target->poisonCount += poison; } return 0; } diff --git a/projects/mtg/src/Damage.cpp b/projects/mtg/src/Damage.cpp index 6cdbb9262..253116aa8 100644 --- a/projects/mtg/src/Damage.cpp +++ b/projects/mtg/src/Damage.cpp @@ -150,7 +150,8 @@ int Damage::resolve() { // Poison on player Player * _target = (Player *) target; - _target->poisonCount += damage;//this will be changed to poison counters. + if(!_target->inPlay()->hasAbility(Constants::POISONSHROUD)) + _target->poisonCount += damage;//this will be changed to poison counters. _target->damageCount += damage; } else if (target->type_as_damageable == DAMAGEABLE_PLAYER && (source->has(Constants::POISONTOXIC) || @@ -160,17 +161,20 @@ int Damage::resolve() Player * _target = (Player *) target; a = target->dealDamage(damage); target->damageCount += damage; - if (source->has(Constants::POISONTOXIC)) + if(!_target->inPlay()->hasAbility(Constants::POISONSHROUD)) { - _target->poisonCount += 1; - } - else if (source->has(Constants::POISONTWOTOXIC)) - { - _target->poisonCount += 2; - } - else - { - _target->poisonCount += 3; + if (source->has(Constants::POISONTOXIC)) + { + _target->poisonCount += 1; + } + else if (source->has(Constants::POISONTWOTOXIC)) + { + _target->poisonCount += 2; + } + else + { + _target->poisonCount += 3; + } } } diff --git a/projects/mtg/src/MTGDefinitions.cpp b/projects/mtg/src/MTGDefinitions.cpp index e243b49b5..167db21b3 100644 --- a/projects/mtg/src/MTGDefinitions.cpp +++ b/projects/mtg/src/MTGDefinitions.cpp @@ -122,7 +122,8 @@ const char* Constants::MTGBasicAbilities[] = { "snowswamplandwalk", "canattack", "hydra", - "undying" + "undying", + "poisonshroud" }; map Constants::MTGBasicAbilitiesMap;