簡単に取得する方法はどうやらないみたいです。まず、所持しているSpellを片っ端から見ていきます。次に、そのSpellに割り当てられているPerkを見て、Spellが装備可能なのかを調べます。
Spellは装備して詠唱できるもの、アクティブな効果として出てくるもの、内部的に見えないところで仕事をしているものがあります。Perkが割り当てられていると、装備して詠唱できるもの、つまり習得しているSpellとなるようです。
636 (papyrus)
Function RefreshSpellList()
PlayerSpellFormList = new Spell[100]
PlayerSpellNameList = new String[100]
Actor kPlayer = Game.GetPlayer()
Int iIndex = kPlayer.GetSpellCount()
Int iCounter = 0
while iIndex > 0 && iCounter < 100
iIndex -= 1
Spell kSpell = kPlayer.GetNthSpell(iIndex)
if kSpell
Perk kPerk = kSpell.GetPerk()
if kPerk
Debug.Trace(kSpell + " " + kSpell.GetName() + " " + kPerk + " " + kPerk.GetName())
PlayerSpellFormList[iCounter] = kSpell
PlayerSpellNameList[iCounter] = kPerk.GetName() + " " + kSpell.GetName()
iCounter += 1
endif
endif
endwhile
EndFunction