あらかじめPerkを持たせておく
espのレコード内でActorに直接Perkを割り当てる方法です。この場合、Rankは1以上にしないといけないようです。
やり方はいくつかあります。
- CKやSSEEditを用いてレコードを編集する。
- zEditを用いてパッチを作る。(Know Your Enemy - Trait-based resistances and weaknessesはこの方式)
- Spell Perk Item Distributorを用いてゲーム起動時に反映する。
ゲーム内で割り当てる
Papyrusで割り当てたり、Reference Aliasでフォロワーに一時的に割り当てたいといった場合ですが、Skyrimの仕様により不可能のようです。AddPerk関数はPlayerにしか効果がありません。
powerofthree’s Papyrus Extender for SSEにAddBasePerkという関数があります。これで無理やり実現することもできますが、不具合もあるようです。
;Adds perks to the actorbase, works on leveled actors/unique NPCs
;vanilla AddPerk is called if used on the player.
;Function serializes data to skse cosave, so perks are applied correctly on loading/reloading saves.
bool Function AddBasePerk(Actor akActor, Perk akPerk) global native
ベストは何か
Perkはあらかじめ持たせておくようにします。SPIDがお手軽です。
ゲーム内で効果を動的に切り替えるには、Perkの条件を工夫して切り替えます。