diff --git a/projects/mtg/bin/daily_build/template.exe b/projects/mtg/bin/daily_build/template.exe index efc526403..0ab0f54c6 100644 Binary files a/projects/mtg/bin/daily_build/template.exe and b/projects/mtg/bin/daily_build/template.exe differ diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 367003827..84851ed7e 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -400,14 +400,28 @@ class GenericActivatedAbility:public ActivatedAbility, public NestedAbility{ int resolve(){ counters++; - SAFE_DELETE(ability->cost); - ability->cost = abilityCost->Diff(cost); + setAbilityCost(ability); SAFE_DELETE(abilityCost); ability->target = target; //may have been updated... if (ability) return ability->resolve(); return 0; } + + void setAbilityCost(MTGAbility * _ability){ + SAFE_DELETE(_ability->cost); + _ability->cost = abilityCost->Diff(cost); + + NestedAbility * na = dynamic_cast(_ability); + if (na) setAbilityCost(na->ability); + + MultiAbility * ma = dynamic_cast(_ability); + if (ma) { + for (size_t i = 0; i < ma->abilities.size(); i++) { + setAbilityCost(ma->abilities[i]); + } + } + } const char * getMenuText(){ if (ability) return ability->getMenuText(); return "Error";