diff --git a/client/windows/CSpellWindow.cpp b/client/windows/CSpellWindow.cpp index a21692e06..94d288119 100644 --- a/client/windows/CSpellWindow.cpp +++ b/client/windows/CSpellWindow.cpp @@ -829,6 +829,6 @@ void CSpellWindow::SpellArea::setSpell(const CSpell * spell) image->setFrame(mySpell->id); image->visible = true; - schoolBorder = owner->schoolBorders[whichSchool]->getImage(schoolLevel,0); + schoolBorder = owner->schoolBorders[owner->selectedTab >= 4 ? whichSchool : owner->selectedTab]->getImage(schoolLevel,0); } } diff --git a/lib/spells/CSpellHandler.cpp b/lib/spells/CSpellHandler.cpp index 8df5cf07b..7066e1a3e 100644 --- a/lib/spells/CSpellHandler.cpp +++ b/lib/spells/CSpellHandler.cpp @@ -69,6 +69,15 @@ namespace SpellConfig Bonus::EARTH_SPELLS } }; + + //order as described in http://bugs.vcmi.eu/view.php?id=91 + static const ESpellSchool SCHOOL_ORDER[4] = + { + ESpellSchool::AIR, //=0 + ESpellSchool::FIRE, //=1 + ESpellSchool::EARTH,//=3(!) + ESpellSchool::WATER //=2(!) + }; } ///CSpell::LevelInfo @@ -226,8 +235,9 @@ CSpell::ETargetType CSpell::getTargetType() const void CSpell::forEachSchool(const std::function& cb) const { bool stop = false; - for(const SpellSchoolInfo & cnf : SpellConfig::SCHOOL) + for(ESpellSchool iter : SpellConfig::SCHOOL_ORDER) { + const SpellSchoolInfo & cnf = SpellConfig::SCHOOL[(ui8)iter]; if(school.at(cnf.id)) { cb(cnf, stop);