前回は、山賊Aの装備がプレイヤーのレベル次第で変化していくようなLeveled Listの概略と、Skyrim内での変化の様子を説明しました。今回は、装備品のLeveled Listである「Leveled Item」の中身について具体的に説明します。TES5Editで覗いていきます。
※参照したい項目が一目で確認できるので、CK使うより楽です。
前回の記事はこちら
- 山賊AのMODの概略
- Leveled List(leveled Item)の中身を見る
- Leveled Listの追加と削除
- 山賊Aの中身を見る
- Outfitの中身を見る
- Outfitの中にLeveled Listと、固定枠の装備を同時に追加
- 装備品以外のLeveled List
- スクリプトによるLeveled Listの追加
山賊AのMODの概略
前回の例に使った山賊AのMODです。実験用なので既存の山賊1名を書き換えて使っています。
Leveled Item 01000D64 LitemArmorHelmetHeavy1
これがまさしくアイテムのLeveled List、「Leveled Item」です。上にもう1個ありますが使ってませんので無視します。適当なLeveled Listをコピーして使っているので、名前がヘルメットになってますが、中身は鎧です。ここにもベセスダの命名規則が生きています。
Non-Player Character 000E962B SanzokuA
前回の主人公。20人スポーンのSSも、これがx20沸いてます。
Outfit 01000D65 ChefOutfit1
NPCの装備品リストです。ここに書かれた装備をNPCが着ます。これも使いまわしています。ChiefのOutfitからパクってます。
SanzokuAのMOD作るのに、書き換えた項目はこの3つだけです。それぞれ中身をみていけば、Leveled ListがどうNPCに紐付けされているのか分かります。1個づつ見ていくことにします。
Leveled List(leveled Item)の中身を見る
まさに前回の記事で説明した通りのリストが書いてあります。それだけです。簡単なもんでしょ?Leveled List Entryの中の「Count」は、所持する員数です。これが0だとマッパですし、2以上だと複数個所持になります。毎回倒した山賊が同じ鎧2個持ってるよ!?なんてことがあったら、多分ここのCountが2になってます。
Leveled Listの追加と削除
例えば、このリストに「LV10でSteelArmor1個」のエントリを追加すれば、LV10以降でSteelArmorが装備候補に入ります。逆にリストにあるエントリを削除すれば、その装備は選択候補から消えます。
Leveled ListのツリーのTOPで、「Remove」や「Add」ができます。ここでRemoveするとこのLeveled List丸ごと消えますので注意してください。
Addして、LV10に「Steel Armor」を追加してみました。
個別装備のツリーから「Remove」すれば、Leveled Listから消えます。
「LLCT」のところのCountは、このLeveled List(LL)に登録してある装備の個数です。直接書き換えなくてもアイテム数に応じて自動で変わってくれますが、一応チェックしときましょう。
こうした作業をすることで、MODで追加した装備をLeveled Listに組み込むことが可能になります。
では、次にこのリストがどこに紐付けされているか見てみます。リストの読み書きが分かっても、NPCに渡す手段が分からないと、使えません。このリスト一体誰が使ってるのよ?って話です。
山賊Aの中身を見る
山賊A(Form ID 000E962B)の中身です。項目が膨大なので変更してない所は非表示にフィルタしてます。上の方はLVをプレイヤーと同期、SS撮影のために武器を没収、名前変更、スキル0化。SS撮影の都合で変更した項目です。
一番下のDefault outfitの項目、最初に説明した通り、山賊Aの装備品になります。なんか怪しいですよね?これ。だって「装備品」のLeveled Listを触ってる訳ですし。こんなかんじで横に書いてあるアドレスを探っていくと、目的にたどり着けたりします。(そんなこんなで色々解析しました)
という訳でOutfitに行きます。
Outfitの中身を見る
ChefOutfit1 (Form ID 01000D65)の中身です。赤枠の所に装備品が書かれています。先ほど見ていたLeveled Listそのものを着ていますね。このOutfitが指定されたNPCは、赤枠内のLeveled Listに従って、装備が決まります。
Leveled Listではなく、Outfitに直接装備を書くことも可能です。ぼくの大好きなSteelArmorとかね。勿論その場合は、レベルに関係なく書いた装備しか着てくれません。
頭装備だけはレベル無関係で同じ装備をしてほしい、なんて時は、頭装備だけ直接書けばOKです。
Outfitの中にLeveled Listと、固定枠の装備を同時に追加
もう2つほどOutfitに追加してみたのが下のSSです。軽装篭手装備のLeveled Listと、レベルに関係無く固定枠としてHide Bootsが追加されています。
TES5Editはアドレス(Form ID)の前の4文字で、そのアドレスが何のデータなのかを識別できます。上のSSでは「OTFT」はOutfit、「LVLI」はLeveled List、固定枠のHide Bootsは「ARMO」になってます。Armorですね。これを使って、一目で何のデータか判断することが出来るわけです。
また、ややこしいですがLeveled Listの中にLeveled Listを登録することも可能です。使いまわしたかったり更なる細分化したかったりする時にどうぞ。
ツリー化したLeveled Listについては、別記事で紹介しています。
装備品以外のLeveled List
Leveled Item以外には、Leveled NPC、Leveled Spellといったものもあります。また、Leveled ItemをOutfitに設定した場合は「Leveled Listの中身を着る」という形になりましたが、MerchantFactionのNPCが持つコンテナの中に入れれば、「Leveled Listの中身を売る」といった形で、商品一覧になります。使い方色々です。
基本的なLeveled Listとしてのフォーマットはどれも同じなので、ひとつ分かれば応用できると思います。
スクリプトによるLeveled Listの追加
espによるLeveled List変更の場合、常に競合リスクが発生します。Wrye BashでBashed Patchを作れば別に問題有りませんが、スクリプトを使うと競合の心配無くスマートに追加できると思います。
欠点は、どのみちBashed Patchが必要な環境だった場合、変更作業が二度手間になることです。Bashed Patchによる最終的なLeveled Listに対して、更にスクリプトで追加が発生する為。
Dragonbornでは、追加されるノルド刻印装備をスクリプトによってLeveled Listに追加しています。別記事で軽くソースを紹介してますので、参考にしてみてください。
今回はここいらで切ります。まだ続く予定です。Leveled Listの競合の話、なにもしてませんしね!
続きはこちら。
Leveled Listの具体的な追加例の記事。