diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index 31ca54591..2d4f24ed6 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -3003,7 +3003,7 @@ int IfThenAbility::resolve() } else if(delayedElseAbility) { - delayedElseAbility->clone(); + a1 = delayedElseAbility->clone(); } if (!a1) return 0; @@ -3039,6 +3039,7 @@ IfThenAbility * IfThenAbility::clone() const IfThenAbility::~IfThenAbility() { SAFE_DELETE(delayedAbility); + SAFE_DELETE(delayedElseAbility); } // diff --git a/projects/mtg/src/MTGAbility.cpp b/projects/mtg/src/MTGAbility.cpp index 5c01cbd36..5b6db92f7 100644 --- a/projects/mtg/src/MTGAbility.cpp +++ b/projects/mtg/src/MTGAbility.cpp @@ -1208,11 +1208,13 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG { string s2 = s.substr(foundElse+6); if(s2.size()) + { s.erase(s.find(" else ")+1); - a2 = parseMagicLine(s2, id, spell, card); + a2 = parseMagicLine(s2, id, spell, card); + } } - string s1 = s.substr(foundElse+6); - MTGAbility * a1 = parseMagicLine(s1, id, spell, card); + string s1 = s; + MTGAbility * a1 = parseMagicLine(s1.substr(s1.find(" then "+1)), id, spell, card); if(!a1) return NULL; MTGAbility * a = NEW IfThenAbility(observer, id, a1,a2, card,(Targetable*)target,checkIf[i],cond);