diff --git a/apps/openmw/mwgui/spellwindow.cpp b/apps/openmw/mwgui/spellwindow.cpp index 1bbb19e83f..ce0700e505 100644 --- a/apps/openmw/mwgui/spellwindow.cpp +++ b/apps/openmw/mwgui/spellwindow.cpp @@ -152,13 +152,17 @@ namespace MWGui MWWorld::Ptr player = MWMechanics::getPlayer(); std::string raceId = player.get()->mBase->mRace; - const std::string& signId = - MWBase::Environment::get().getWorld()->getPlayer().getBirthSign(); const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get().find(raceId); - const ESM::BirthSign* birthsign = MWBase::Environment::get().getWorld()->getStore().get().find(signId); + // can't delete racial spells, birthsign spells or powers + bool isInherent = race->mPowers.exists(spell->mId) || spell->mData.mType == ESM::Spell::ST_Power; + const std::string& signId = MWBase::Environment::get().getWorld()->getPlayer().getBirthSign(); + if (!isInherent && !signId.empty()) + { + const ESM::BirthSign* sign = MWBase::Environment::get().getWorld()->getStore().get().find(signId); + isInherent = sign->mPowers.exists(spell->mId); + } - // can't delete racial spells, birthsign spells or powers - if (race->mPowers.exists(spell->mId) || birthsign->mPowers.exists(spell->mId) || spell->mData.mType == ESM::Spell::ST_Power) + if (isInherent) { MWBase::Environment::get().getWindowManager()->messageBox("#{sDeleteSpellError}"); }