mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-04 04:45:35 +00:00
fixed spell list handling
This commit is contained in:
parent
6c928e93d3
commit
f17756712a
1 changed files with 13 additions and 16 deletions
|
@ -91,24 +91,21 @@ namespace MWGui
|
||||||
clearSpells();
|
clearSpells();
|
||||||
|
|
||||||
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer();
|
||||||
MWMechanics::CreatureStats& stats = MWWorld::Class::get(player).getCreatureStats(player);
|
|
||||||
MWMechanics::Spells& playerSpells = stats.getSpells();
|
|
||||||
/// \todo get spell list via MWWorld::Class interface
|
|
||||||
std::vector<std::string> spellList = actor.get<ESM::NPC>()->base->spells.list;
|
|
||||||
for (std::vector<std::string>::const_iterator it = spellList.begin(); it != spellList.end(); ++it)
|
|
||||||
{
|
|
||||||
bool alreadyHave = false;
|
|
||||||
for (std::vector<std::string>::const_iterator it2 = playerSpells.begin(); it2 != playerSpells.end(); ++it2)
|
|
||||||
{
|
|
||||||
if (*it==*it2)
|
|
||||||
{
|
|
||||||
alreadyHave = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (alreadyHave==false)
|
MWMechanics::Spells& playerSpells = MWWorld::Class::get (player).getCreatureStats (player).getSpells();
|
||||||
addSpell(*it);
|
MWMechanics::Spells& merchantSpells = MWWorld::Class::get (actor).getCreatureStats (actor).getSpells();
|
||||||
|
|
||||||
|
for (MWMechanics::Spells::TIterator iter = merchantSpells.begin(); iter!=merchantSpells.end(); ++iter)
|
||||||
|
{
|
||||||
|
const ESM::Spell* spell = MWBase::Environment::get().getWorld()->getStore().spells.find (*iter);
|
||||||
|
|
||||||
|
if (spell->data.type!=ESM::Spell::ST_Spell)
|
||||||
|
continue; // don't try to sell diseases, curses or powers
|
||||||
|
|
||||||
|
if (std::find (playerSpells.begin(), playerSpells.end(), *iter)!=playerSpells.end())
|
||||||
|
continue; // we have that spell already
|
||||||
|
|
||||||
|
addSpell (*iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLabels();
|
updateLabels();
|
||||||
|
|
Loading…
Reference in a new issue