2014/07/13

iNeedでいただきます!~Initクエストの作り方

ソルスセイム上陸からかれこれ一週間が経過しました。実はまだ、ブリークフォール墓地にすら行っていない未ドヴァキンであるため、お目当てのDragonbornのメインクエストは一向に始まる気配がないのですが、ソルスセイム産の素材を根こそぎ伐採しながら、島の観光をのんびり楽しんでいます。
そんな中、フォロワーのメルセル氏が急にご飯の支給を「受け取り拒否」しやがるようになりました。
まったく何が気に入らないんだか。もともとイヤそうな顔をしながら、渋々ついてきているようなフォロワーでしたが、さらに態度まで反抗的になって、実に腹立たしい限りです。
これをあげよう、と言ってもインベントリを開いてくれなくなりました。
こっちがしゃがんで隠密スタイルをとっても、知らん顔して突っ立ったまま…といった様子を見るに、どうやらチームメイト状態(PlayerTeammate)が突然解除されてしまったようです。
なんでチームメイト状態が解除されたのかはわかりませんが、まー、おばちゃんが30分くらいでテキトーに作った即席の下僕化Modですから、そういう事故のひとつやふたつは起きても不思議じゃないです。
もしかすると、ソルスセイムに着いてから連日ご飯はアッシュヤムしかあげていなかったので、「もう芋はイヤだ!」とストライキを始めたのかもしれません。
まったく、顔に似合わずグルメな奴め。
まあ、でもこのお方は、非常に頼りになる男なんですよねえ。
体力吸収の剣を持ってるおかげで、こちらがあげた回復薬なんか使う機会が全くないくらい絶倫wだし、おまけに戦闘AIも直情的で迷いがないので、敵を見つけ次第、オラオラァッと斬り込んでくれる。
この超キレやすい絶倫男が敵の注意を率先して引いてくれるからこそ、おばちゃんのハイエルフ女史は強敵の多いソルスセイムを闊歩できるのです。今、こいつにヤル気をなくされたら非常に困ります。
よし、メシで釣って、なんとかモチベーションあげてもらおう。
…というわけで、この舌の肥えたダンナのために、何か美味しそうな食べ物Modを見繕ってきてあげることにしました。


ちなみに食べ物を追加するModを探すのに、最初はNEXUSで「Food」や「Recipe」といったワードで検索してたんですが、意外にも街や村などの集落に追加・変更を加えるModに、素敵な食品群が追加されているのを見つけました。
Nernie's City and Village Expansion」という、各街にちょっとしたお店や施設を追加するModなんですが、そのModで使われているパンやお菓子がものすごく素敵で!実に美味しそうなんです!
手作り感溢れる素朴なビスケットや色艶の素晴らしいパイなどの焼き菓子。
すべてがスカイリムの世界としっくり馴染む、公式アイテムのようなクオリティです。
このパン屋さんのディスプレイを見た時、思わず「うわーっ」と声を上げてしまいました。
もううっとり。リアルでもこういう黒い酸っぱい系のパン大好きなんですv
鶏卵やバターといった材料の類も、公式より本物っぽいので、いっそ差し替えてしまいたいくらいです。
パン作りの過程の描写も凝ってます。ボウルで発酵中のパン種とか↓

こちらはパン釜で焼成されているところ。
もうね……この光景を見た瞬間、パン作りModを作りたい!って心底思いました。

こういう飲み物の容器もかわいくて素敵です。駅弁と一緒に売ってるお茶みたい。
リアルでこんなん売ってたら、集めまくっちゃうと思います。

ところでこちらのModは、すべての地域に変更を加える完全版の「NerniesCityandVillageExpansion.esp」の方でしたら、食事系Modの「iNeed」では最初からシステムに組み込んで対応してくださっています。
なのでModを普通に導入するだけで、iNeed対応の食品としてゲーム中で使うことができます。
しかし、残念ながら今回おばちゃんが導入したいなあと思ったのは、このModのオプションのソリチュード版の方なんですよね。
こちらの方はソリチュードのみに変更を加える「NerniesSolitudeExpansion.esp」という別名のファイルになるんですが、どうやらこちらは完全版のespとは食品類のIDやファイル名などが変わってしまっているので、iNeedは対応していないようなんです。
ですから、自分でiNeedのシステムに対応させてやる必要があります。
iNeedの食品として認識させるためには、前記事でもちらっと触れましたように、iNeedのFormListにその食品を登録してやらなくてはなりません。
今回はそういった「他のModのアイテムを別のModのリストに追加する」手順というものを、備忘録代わりにまとめておこうかな、と思います。
このModのアイテム、とっても素敵なんだけど、○○用のアイテムとしては認識されなくてちょっと残念…だとか、Modのアイテムが別のModのシステムに対応していないせいで、がっかりしたり、導入を見送ったりすることが、誰でも少なからずあるのではないかと思いますが、今からご紹介する手順はそういった時に、Mod間のアイテムを互換させる方法として、少しは参考になるかもしれません。
まあ、良かったらお付き合いください。



さて、他のModのアイテムを別のModのリストに追加する……みたいなことを、具体的にどのようにやるのか、ということなんですが。
通常でしたら、他のModの何かを別のModで使用したり変更したりする場合には、どちらかのModをマスターファイルにして読み込み、相手側のリストやアイテムを自分の側に取り込んで使用したり変更したりする…ということをします。
しかし、今回はそういったやり方ではなく、スクリプトを使って、相手側のリストに自分の食品を追加するという変更をゲームの稼働中にダイレクトに行いたいと思います。
なぜわざわざスクリプトなんかを使うのかというと……ひとつは、今回互換させたい二つのファイルがどちらもマスターファイル形式(esm)ではない、ただのesp(プラグインファイル)だからです。
まー個人で使う分にはどちらかをesmに変更しちゃえばいいだけなんですが、面倒なので却下。
スクリプトを使えば、GetFormFromFile」という関数を使って別ファイルのModのオブジェクトを取得することができますんで、マスター化しなくても相手側のリストを読み込めるのです。
それにマスター指定して作ると、途中でそのModを外したくなってしまった時にも困りますからね。
スクリプトでなんとかなる処理なら、ヘタにマスター化しない方向で作る方が何かと使い勝手がよいのではないかと思います。

そしてスクリプトを使うもうひとつの理由……それはCK上でFormListなどを編集すると、そのFormListに他のModが同じような追加修正をしている場合に競合してしまう可能性があるからです。
ご存知の通り、このゲームでは「同じオブジェクトに変更を加えるModが複数あった場合、ロード順が一番後方にあるものが優先される」という大原則があります。
まー、今のところ、iNeedのFormListに他のModが変更を加えるような心配はほとんどないのですが、実は今回、おばちゃんは追加したパンやお菓子を、Modのソリチュードのお店だけではなくて、各宿屋や食品を取り扱うバニラのお店でも販売するように改造したいんですよね。
そのためにはゲームのデフォルトの「LeveledItem」というアイテムリストにModのパンやお菓子を追加する必要があるのですが、こういったゲームに元からあるリストは他のModも変更を行う可能性が非常に高いので、CK上で直接編集するのはできるだけ避けたいのです。

たとえば上の図のように、ホワイトランのカルロッタさんなど食品を扱っているお店の商品リストに、それぞれのModで変更を加えてしまっている場合、一番最後にロードした「ModC.esp」で追加されたハニーナッツのおやつしか販売はされません。
しかし、最初にロードした「ModA.esp」に、ロングタフィーのおやつをリストに追加するスクリプトを新たに追加してみると……なんとその変更は「ModC.esp」のハニーナッツのおやつと共に有効になって、お店でしっかり販売されるようになるのです。

つまり「ModA」に付けられたスクリプトは、たとえ「ModA」のハチミツを追加するという変更点が無効になってしまっていても、ゲーム稼働中にLeveledItemのリストにダイレクトにロングタフィーのおやつを追加しているので、どんなにロード順が前の方にいても決して打ち消されることがないのです。
そしてそのスクリプトによる変更は、ロード順FF(255番目)のセーブデータの中に記録され、大元の「ModA」を外してアンインストールした後も、ロングタフィーのおやつは店の商品として並びつづけます。
このしつこさが、スクリプトが嫌われるゆえん(笑)ですね。
しかし逆に言えば、このジョーカー的な強さを持つスクリプトを自在に使いこなせるようになれば、Modのロード順に頭を悩ませられることなく、変更したい箇所をゲーム上に反映させられるのです。
スクリプトを使うと、いろいろ取り返しの付かないことが起こりそうでイヤだ…と思われる方もいらっしゃるかもしれませんが、たとえスクリプトでセーブデータにのちのちまで祟るような変更を残してしまったとしても、その変更をまたスクリプトで直せばいいんですよ。
ゲームの稼動前にロードされるだけのModには決してできないこと……変更をセーブデータの中にまで残すことができる、というのがスクリプトの最大の欠点にして最大の強みなんですから。


さて、前書きはこのくらいにして、実際の手順の説明にまいりましょう。
他のModのリストにアイテムを追加する、というようなスクリプトの処理は、そのModを導入した後の、ゲームがロードされた直後のタイミングで行うのが一番確実です。
ゲームがロードされた直後というタイミングをつかまえて処理をさせるためには、「クエスト」(※CK上のQuestというオブジェクトのことです)を使います。
ちなみにこのような、Modを導入した直後のロード時に行う、初期化的な処理を担当するクエストのことを、おばちゃんは「Initクエスト」と呼んでおります。
公式DLCの「Dragonborn」のInitクエストでは、スコール村のアエタちゃんを「Hearthfire」の孤児のリストに追加する処理や、養子がプレゼントしてくれる品物のリストの中にDragonbornのアイテムを追加する処理などが行われていました。
このInitクエストの処理は、Mod間のアイテムを互換させるサンプルとして大変参考になりますので、Dragonbornをお持ちの方はぜひ、「DLC2Init」クエストの「Player」エイリアスに付いている「DLC2InitCrossDLCScript.psc」スクリプトをご覧になってみてください。
実のところ、おばちゃんはこの本家のDLCのやり方をそっくり真似してるだけなんです。

Initクエストの作り方

まずは新規でQuestを作成します。ID名は適当に、Priorityは「0」でもそれ以上でもOK。
このクエストはゲーム起動時に必ず稼動していなくてはなりませんので、「Start Game Enabled」に必ずチェックを入れます。

クエストを作成しおえたら、一旦ウィンドウを閉じて、Modを保存します。
クエストウィンドウでの作業はしつこいくらい、何か入力したら「ウィンドウを閉じる→保存」という行程を繰り返すのが吉です。
なぜだかよくわかりませんけど、そうしないとうまく反映されない箇所がいろいろあるのです。
まあ、CKの「クセ」みたいなものですね。

次に「Quest Aliases」タブに移って、「Player」というエイリアスを作成します。
その名の通り、これはプレイヤーキャラに適用されるエイリアスです。
前述した「ゲームがロードされた直後」というタイミングは、実は「プレイヤーがゲーム中にロードされた瞬間」というイベントを捕まえて処理を行うのですが、このイベントのスクリプトはプレイヤー自身につけなくてはなりません。
しかし、スクリプトをプレイヤーの元のActorのデータに直接付けるなんていう恐ろしいことはできませんので、プレイヤーに適用されるエイリアス上にスクリプトをつけて、一連の処理が終わったら、そのエイリアスをプレイヤーから取り去る、ということをします。そのための「Player」エイリアスです。

設定はこんな感じ。エイリアスを満たすFill Typeは「Specific Reference」を選んで、「Choose Reference」ウィンドウで「Cell:(any)」の「PlayerRef('Player')」を選びます。
これでプレイヤーが世界のどこにいても、Playerエイリアスに入ってくれます。
またウィンドウの右上の方に並んでいる、さまざまなフラグ(Reserves ReferenceやOptionalなど)は、全部チェック無しの状態でOKです。今回は、特別な役を演じるというわけではない、ただのスクリプト処理をするためだけのエイリアスですので、余計なフラグは立てなくても大丈夫です。

Playerエイリアスを作成できたら、そのエイリアスにスクリプトを追加します。
InitクエストのPlayerエイリアスのスクリプトはパターンが決まっているので、おばちゃんは下記のようなスクリプトをスニペット(テンプレのようなもの)に登録して使っています。
スクリプトのファイル名を変更し、使用するプロパティなどを追加したら、後はコメントの「Mod初回導入時に行いたい処理をここに書く」という部分に、やりたい処理を書くだけです。
Scriptname xxxInitAlias extends ReferenceAlias
Bool Property InitOnce Auto Hidden

Event OnPlayerLoadGame()
If !InitOnce
; Mod初回導入時に行いたい処理をここに書く
; ……
InitOnce = true
endIf
If InitOnce
GetOwningQuest().stop() ; 処理が済んだらクエスト終了
endIf
endEvent
「InitOnce」という値は、初期化の処理を一回行ったら後は二度と行わないようにするために使います。
「プレイヤーがゲーム中にロードされた瞬間」である「OnPlayerLoadGame」イベントは、プレイヤーがゲーム中にロードされるたびに発生するものなので、何度も実行されてしまうからです。
ちなみに上記のテンプレでは、処理が済んで「InitOnce」がtrueになったらクエストを終了させてますが、たとえば「iNeed」だけでなく、他の食事系Modに追加する処理などを並列して書く時は、それらの処理が済むまではクエストを終了させないようにフラグをそれぞれに用意して、全部のフラグがtrueになったらクエスト終了、となるように変更する必要があります。

iNeedの食べ物リストを取得して、そこにパンやお菓子を追加する処理はこんな感じです。
; Mod初回導入時に行いたい処理をここに書く
FormList _SNFood_LightList = Game.GetFormFromFile(0x00000D6B, "iNeed.esp") as FormList
If _SNFood_LightList ; iNeedが存在する場合に処理を行う
FormList _SNFood_HeavyList = Game.GetFormFromFile(0x00000D69, "iNeed.esp") as FormList
FormList _SNFood_MedList = Game.GetFormFromFile(0x00000D6C, "iNeed.esp") as FormList
_SNFood_LightList.AddForm(BiscuitFruit); レーズンビスケットを軽食リストに追加
_SNFood_MedList.AddForm(BreadDark); ライ麦パンを中食リストに追加
_SNFood_HeavyList.AddForm(PieGameB); 牛肉とエールのパイを重食リストに追加
InitOnce = true
endIf
「GetFormFromFile」でiNeedのファイル名と、オブジェクトのIDを直接指定して、FormListを取得します。
IDというのは、オブジェクトの一覧の中にある「FromID」という欄の8ケタの英数字のことです。
GetFormFromFileで指定する場合、IDの先頭の2ケタは、「00」にして、さらにその前に「0x」をつけます。
前記事でもご紹介しましたが、これがiNeedの関連FormListです。

FormListに食品を追加する処理は、「iNeed」がゲーム中に一緒にロードされて存在している場合じゃないと、無駄にエラーが出るだけになりますので、最初に適当なリスト(上記の場合、軽食のリストの_SNFood_LightList)をひとつ取得してみて、それが存在している場合にのみ処理を行わせるようにします。
iNeedが存在することを確かめたら、追加したいFormListを取得して、それぞれにパンやお菓子をAddFormして追加します。もちろんこの追加するパンやお菓子のアイテムは、プロパティとしてあらかじめ定義されていないとスクリプト内で使用することはできません。
Potion Property BiscuitFruit auto ; レーズンビスケット
Potion Property BreadDark auto ; ライ麦パン
Potion Property PieGameB auto ; 牛肉とエールのパイ
LeveledItem Property LItemFoodRawNoMeat auto ; 食品屋さんの商品リスト
ちなみにプロパティの定義は、CKの「Add Property」ボタンで追加するだけでなく、スクリプトに直接自分で書いてしまっても、コンパイルさえできていればちゃんと認識されます。
おばちゃんはMod Organizerを使ってますんで、プロパティはエディタで直打ちして入力する派です。
(MO使ってるとCKからはスクリプトのコンパイルが通らないんでエラーになっちゃうんですよねえ)
また、パンやお菓子をカルロッタさんのお店などで販売させたい場合には、プロパティに、その商品リストのLeveledItem(上記の場合はLItemFoodRawNoMeat)を定義してやってから、こんな風に書きます。
LItemFoodRawNoMeat.AddForm(BiscuitFruit,1,5)
これで、レーズンビスケットはカルロッタさんのお店で5個くらい販売されるようになります。

……とまあ、かなり端折っておりますが、こんな風に実行させたい処理を全部書いたら、スクリプトをコンパイルして、CK上できちんとプロパティを指定してやります。
Playerエイリアスの設定はそれで完了です。


Playerエイリアスの準備が済んだら、お次は「Quest Stages」のタブをクリックして、クエストのステージに開始時の処理を付け加えます。

まずは「Index」の欄をクリックして「New」して、新しいIndex値の「0」を追加します。
そしてそれをクエスト開始時のステージにするため、「Start Up Stage」にチェック。
さらに「Log Entry」の欄をクリックして「New」します。Entryの内容は、特に何もせずEMPTYのままでOK。 それができたら、「Papyrus Fragment」というスクリプト入力欄に下記のようなスクリプトを入力します。

上記の(Alias_Player as _NSInitAlias)の「_NSInitAlias」の部分は、さきほどPlayerエイリアスにつけたスクリプトのファイル名に変更します。
「Alias_Player」というのは、このクエスト上の「Player」エイリアスのことです。
その「Player」エイリアスにくっつけたさきほどのスクリプトの「OnPlayerLoadGame」イベントをクエスト開始時に実行させるために、上記のような一文を書くわけです。
(※おばちゃんはスクリプトのファイル名を_NSInitAlias.pscという名前にしましたんで、上の画像では_NSInitAliasになってます)
まー、この辺はあまり深く考えず、お決まりの構文として覚えるより他ありません。
以上、この一行だけのスクリプトが無事にコンパイルできたら、Initクエストの作成は完了です。

余談ですが、このInitクエストは、Mod導入時にアイテムを入手させたり、魔法を覚えさせたり…なんていう、Mod導入時のナビゲーション的な処理をさせるためにも使える、Mod制作の「定番」ともいうべき便利なクエストです。
おばちゃんはこのInitクエストではよく新規ダイアログを含むクエストを開始させたりなどしています。
このゲームではバージョン1.6くらいの頃から、Modで追加されたNPCのセリフなどのダイアログは初回は表示されないという困った仕様になってるのですが、このInitクエストの処理中にダイアログのクエストを直接スタートさせれば、初回からダイアログが表示されるのです。
公式DLCのように、新規のダイアログクエストが仰山あるような超大作Modの場合は、SEQファイルを作って一括で処理してしまった方がいいのでしょうが、ちょっとしたセリフの追加などは、Initクエストで開始するようにする方が断然ラクなのでそうしております。

さて、そんなわけで、iNeed対応させたNernie's~のModをゲームに導入してみました。
フフ、食べてる食べてる……

それにしても、食べるモーションが、デフォルトのパンだけというのはちょっと寂しいですね。
食べたモノによって、手にしているAnimObjectが変わるとよいのになあ。
まあ、そういった改造はやれなくもないのですが、そんなことをしているとまた遊ぶ時間がなくなってしまうという……このジレンマ。
今回はできるだけCKは触らずにプレイすることに集中しよう、と思ってるのに、なんか気が付くとCKを開いて、にらめっこしてるんですよね。困ったものです。

2014/07/07

そうだ ソルスセイム、行こう。

アンタほんとによく飽きないね……と自分でも呆れてるんですが、実は最近、また新たなドヴァキンさんを作って遊んでいます。
まあでも、発売当初から遊んでいるとはいえ、おばちゃんのプレイ時間は700時間程度なのです。
ずっとCKとばかりにらめっこしてましたから。意外に遊んでいないものでしょう?
それにDragonbornなんてほとんど内容覚えてないんですよね。しかもミラーク卿の日本語版吹き替えの声、ゲーム中で一度も聞いたことがない!(日本語版の配信前にお亡くなりになってたもんで)
だからもう一度先輩に会いにいこうと思います。

ちなみに今回のドヴァキンさんはNPCの誰かの外見をコピったりせずに適当にこさえました。
13人目にして初のハイエルフです。会う人会う人がことごとく電柱でも見上げるみたいな角度でこちらを仰ぎ見てくるのがたまりません。ガタイのいいノルド男性も、ハイエルフ女の目から見ると妙にずんぐりむっくりして見えます。あの筋肉ダルマ達に長体90%してやりたい。
アルトマーの皆さんが高飛車になる気持ちが少しだけわかったような気がしました。
同族以外は常に見下ろしてるんだもの。そりゃあ大上段にもなるわ。
ホワイトランに私より背の高い男子はいません。
今回は「T3nd0s Skyrim Redone」というゲームのいろんな箇所を総合的に変更するオーバーホールModと、「Skyrim Immersive Creatures」といういろんな敵追加Modと、「Revenge Of the Enemies(Enemy AI OverHaul)」という敵を強化するModを導入してみました。
この手の戦闘に変化をつけるようなModには、今までてんでご縁がなかったのですが、いざ導入してみると、実に新鮮で面白いものですね。
ホワイトランのすぐ近くの崖下に住んでいる山賊さん達の中に、破壊魔法大好きなえげつないダンマーが一人混じっていて、しょっぱなから泣きそうになりました。
なんであんなホワイトランから徒歩5分のところに、サボス・アレンみたいな奴がいるのさ!
まあでも、そんなアークメイジ級の凄腕がいたるところにいる新世界がめちゃくちゃ楽しいです。
レベルが30代40代に上がっても、この緊張感が続くとよいなあ。
鷹だと思って射落としたら、こんなん落ちてきて、ギョっとしました。

ソルスセイムに行ったら、うじゃうじゃ飛んでて、もっとビックリしましたが。
クリフレーサーって、意外に可愛い顔してるんですね。
それから、「Skyrim Flora Overhaul 」という、木々や草花などの見た目を変更したり種類を追加したりするModも導入してみましたので、目新しいものがいっぱいで、フィールドを散策するだけで胸が躍ります。
なんか見たことのない変な生き物がうろちょろしてるわ、面白そうなPerkが色々あって、レベルアップのたびに何を取得しようか悩んでしまうわ……
スカイリムでこんなにわくわくするのは本当に久しぶりです。
こういうキノコ、シロディールにもよく生えてたような……
見慣れない植物が沢山あって楽しいんですが、素材として採取できないのが残念です。

それにしてもModを物色してると、「これも入れてみたい」「あれも面白そう」と目移りしてしまって、本当にキリがありませんね。面白そうと思ったModをすべて入れてみようと思ったら、あと5回くらいはニューゲームしないと全然追いつかないような気がします。


ところで先日作ったBBQのお料理Modも楽しく使ってるんですが、せっかくお肉を焼いて食べても何も恩恵がないとつまりませんので、飲食にボーナスやペナルティを与えるModも導入しました。
食事系のModというのも、いろいろ選択肢があって、選ぶのが悩ましいジャンルの一つですよね。
前のドヴァキンさんの時は、「Realistic Needs and Diseases」というハードコアModを使わせていただいていたんですが、今回は「iNeed - Food Water and Sleep」というModを使わせていただくことに。
おばちゃんは上記の二つと、あとだいぶ前のことになりますが「Total Realism - Basic Needs」というModも遊ばせていただいたことがあります。
どのModも単に食事や睡眠にボーナスやペナルティを課すだけじゃなくて、いろんな追加機能やレシピの追加などがあったりして、食う・寝る・遊ぶのロールプレイをおおいに満喫させていただきました。
今回使わせていただいている「iNeed」もかなり多機能でして、食べ物を所持していると少しずつ腐っていったりする機能や、フォロワーがお腹が空くと勝手にごはんを食べてくれる機能などがあります。
それから空腹や疲労の度合いが、画面のHUD上のアイコンで分かるというウィジェット機能も、目玉のひとつでしょうか。これは自分が今どのくらいお腹が減ってるのかというのが、ひと目で分かるのでとっても便利です。

ちなみにこのiNeedのアイコン表示、空腹の状態は色や透明度で一目瞭然なんですが、その空腹値のステータスがどのくらい変動したのか、ということまではわからないんですよね。
オブリビオンの時の「HTSC light」で表示されていたHUDのように、何を食べたらどのくらい空腹度が満たされたか、というのがバー表示で確認できるともっと「食べ甲斐」があるんだけどなあ……
…と思ったので、iNeedのアイコンにHUDメーターをくっつけてみました。

Frostfall」や「A Matter of Time」といった独自のHUD表示があるModも入れさせていただいているので、画面がやたらメーターだらけになってしまうんですが、やっぱり、何かを食べたら空腹バーの表示が即時に目に見える形で変動する、というのはいいものです。
鹿肉のチョップなどを食べると、グーンと空腹バーが回復するので「食べた」という満足感があります。
ついでにiNeedの食べ物リストに、自作の食べ物を追加してみました。
一瞬で剥き身の貝肉を取り出すことができるフィンガーテクをお持ちのドヴァキンさんですが、
やっぱり貝は殻付きで調理したいんですよね……

ちなみにiNeedの飲食システムに他のModの食べ物を対応させるには、iNeedのFormListにその食べ物を追加してあげるだけで良いみたいです。
「_SNFood」から始まるリストのうち、それぞれ「HeavyList」「MedList」「LightList」が空腹を満たす食べ物で、Heavyが最も多く空腹を満たす重量のある食べ物、Lightが一番軽いもの、Medがその中間、といった感じで登録されています。
「RawList」は生肉のリストで、ここに登録されている食べ物を食べると、HPやマジカやスタミナなどにダメージをくらうようです。
「DrinkList」が飲料で、「DrinkNoAlcList」がノンアルコールの飲み物。
もちろん、リストにちゃんと登録すればプレイヤーだけでなくフォロワーも食べてくれるようになります。

ちなみにiNeedが認識するフォロワーは3人までのようですね。
「CurrentFollowerFaction(一般的なフォロワーのファクション)」もしくは「CurrentHireling(傭兵さん達が所属するファクション)」もしくはチームメイト状態にある同行者……というきわめて汎用性が高い条件で取得しているので、どんなフォロワーModを使っていても幅広く認識してくれそうです。

ついでに……私が今お世話になってるフォロワーは無敵わんこのバルバス君とこの方↓です。
ブレトン男子、小っさ!