diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 78df9b851..698eb8a58 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -4307,9 +4307,12 @@ public: string newpower; bool newpowerfound; + + int oldpower; int oldpowerbonus; string newtoughness; bool newtoughnessfound; + int oldtoughness; int oldtoughnessbonus; map > newAbilities; vector newAbilitiesList; diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 1d862ad99..cdff3bc9b 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -4183,17 +4183,22 @@ for (it = types.begin(); it != types.end(); it++) if(newpowerfound ) {//setting p/t only overrides base p/t as of M15 changes WParsedInt * val = NEW WParsedInt(newpower,NULL, source); - oldpowerbonus = _target->power - _target->basepower;//keep bonus if any + oldpower = _target->power; + oldpowerbonus = oldpower - _target->basepower; _target->setPower(oldpowerbonus + val->getValue()); _target->basepower = val->getValue(); + //?effects that change pt outside this? + //_target->power += reapplyCountersBonus(_target,false,true); delete val; } if(newtoughnessfound ) {//setting p/t only overrides base p/t as of M15 changes WParsedInt * val = NEW WParsedInt(newtoughness,NULL, source); - oldtoughnessbonus = _target->toughness - _target->basetoughness;// keep bonus if any + oldtoughness = _target->toughness; + oldtoughnessbonus = oldtoughness - _target->basetoughness; _target->setToughness(oldtoughnessbonus + val->getValue()); - _target->basetoughness = val->getValue(); + _target->basetoughness = val->getValue(); + //_target->addToToughness(reapplyCountersBonus(_target,true,false)); _target->life = _target->toughness; delete val; } @@ -4280,14 +4285,17 @@ int ATransformer::destroy() } if(newpowerfound ) - { - _target->setPower(oldpowerbonus + _target->basepower); - _target->power += reapplyCountersBonus(_target,false,true); + {//override since we changed tha base, the bonus must have changed + oldpowerbonus = (_target->power - _target->basepower);//math hurts my head...it's all over the place :P + _target->setPower(_target->origpower + oldpowerbonus); + _target->basepower = _target->origpower;//revert } if(newtoughnessfound ) - { - _target->setToughness(oldtoughnessbonus + _target->basetoughness); - _target->addToToughness(reapplyCountersBonus(_target,true,false)); + {//override since we changed tha base, the bonus must have changed + oldtoughnessbonus = (_target->toughness - _target->basetoughness); + _target->setToughness(_target->origtoughness + oldtoughnessbonus); + _target->basetoughness = _target->origtoughness;//revert + _target->life = _target->toughness;//update } if(newAbilityFound) {