2014/07/27

ダンマーと甘い蜜の部屋

隙あらば強制労働に拉致ろうとするミラークランド建設の魔の手をかわしながら、フィールドをくまなく歩き回って、ソルスセイムの地理もだいぶ掴めてきました。
ちなみに先輩のハタ迷惑なコルホーズ送りは、ソルスセイムの野外でうっかり寝てしまった時、もしくは「LocTypeDwelling」というキーワード指定のある居住区画で就寝した時に発動するしくみのようでして(まあ、拉致されるかどうかはランダムですが)、DBのメインクエストを進めずにソルスセイムの観光をゆっくり楽しみたいという時は、寝る時はダンジョン内に退避して休むのが快眠の秘訣のようです。

それにしても以前ウルフリック首長としてこちらに滞在してた時は、最後まで旅行者気分が抜けなかったものですが、今回は始めから人の話が日本語で聞けた、というのが大きいのでしょうか、こちらの住人の皆さんにもだいぶ親しみが沸いてきて、今ではすっかりレイヴン・ロックがホワイトラン並みに馴染みの深いホームタウンになってきました。
始終誰かが鼻を啜っているような埃っぽい空気も、黄昏みたいな薄暗い空の色も、今はそんなに嫌いじゃありません。ダンマーの顔も見慣れてくると、わりと美男美女がいるものだなぁ、と思えてきました。
ヴェレス隊長とか。この人、かなりイケメンじゃないですか……?
今回はHearthfireのウィンドスタッド邸を本拠地にするつもりで、実は土地は既に購入済みだったりするのですが、セヴェリン邸を手に入れたら、なんだかもうここに骨を埋めるのもいいかもなあ…という気分になってきました。
レドラン家の衛兵さんたちは頼りになるし、市場のお店は全部露天なので便利だし、街はこじんまりとしているものの住人達の会話も多くて、へたなスカイリムの小都市などよりも活気があるように思います。
セヴェリン邸もひととおり生産器具は揃っているし、スペースにも随分余裕があって一人で住むにはちょっと贅沢すぎるくらいの広さです。
ちなみにあの家、自宅として使えるようになっても「LocTypePlayerHouse」の指定がないので「十分な休息」の効果がつかないんですね。(しかもミラーク建設に拉致られる)
結婚してもマイホームとして指定できないばかりか、睡眠ボーナスも無いなんて、あくまでソルスセイムにいる間だけの「別荘」としてお使いください、というスタンスなんだな、と思いました。
しかし最近はもう、レイヴン・ロックに郷愁すら感じてきたので、セヴェリン邸をちょろっと改造して、もうこちらに本格的に居住してしまおうかなあと思っています。
周囲に強敵が多くて(CTDも多いです)毎回落ち武者のようにズタボロになりながら戻ってくるせいもあるんですが、ブルワークの内側まで戻ってきた時の安心感がハンパないんですよね。
ああ、安全なところまでやっと戻ってこれた……って。
あとはもうセヴェリン邸に「おかえり」って待っていてくれる人がいてくれたら……言うことないです。
ブルワークというのは崩れ落ちる灰から町を守るための防壁として作られたんだとか。
てっきり要塞の城壁みたいなものかと思ってました。
そういえばセヴェリン邸では「十分な休息」の効果はつかないけれど、伴侶と一緒なら「恋人の癒し」の効果はばっちりつきますね。
今まではスキル上昇速度アップの効果にそれほど魅力を感じたことはなかったんですが(レベルが上がるとプレイヤーが強くなりすぎてつまんなくなっちゃうので)、今回は「黒檀の戦士」とやらにぜひ会ってみたい!と思ってるので、スキル上昇速度15%アップの「恋人の癒し」はぜひとも活用してレベルをばんばん上げていこうと思います。
「恋人の癒し」は配偶者と同じロケーションで寝さえすればどこでも発動しますので、ボーナス狙いなら旅のお供をするフォロワーにもなりうるようなNPCをダーリンにするのがおトク?です。
そんなわけで手近なところで相棒のメルセル氏で手を打って、奴をマーラの聖堂にひきずっていこうか、などと考えたりもしたのですが、今まで奴と一緒にいて、癒されたことなどただの一度もなかったことを思い出してやめました。
あの根性の曲がったブレトン男は、いつも小姑みたいにイヤミなことしか言わないので、一緒にいると癒されるどころか、むしろ首を絞めたくなってくるんですよね。
少しはデレるセリフでもあれば、結婚可能なように改造するのもやぶさかではないんですが。


さてそんなわけで、誰かこのハイエルフ大女の癒しになってくれるような「いい人」はいないかしら……とクエスト消化の合間に物色してたわけなんですが、さっそく近場で癒し系の人を見つけました(早)
雑貨商のフェシス・アロールさんです。東帝都社ラブの人。
フードを被った店主ルックは冴えないチョビ髭おやじ…って感じなんですが、鎧着せてあげるとなかなか凛々しいダンマーのおっちゃんです。
この人、改めて日本語音声を聞いてびっくりしたんですが、ハイエルフ男性の声だったんですね。
普段はちょっと横柄なのに、意外に天然ぽいところがあったり、東帝都社を自慢しぃしてくるところとか、あのハイエルフ男性のイケボとのギャップに余計にグっときてしまいました。
鉱山の再開後は、客足が戻ってきたことに嬉しさを隠し切れない様子で声を弾ませていたりするのも、可愛げがあって微笑ましいです。お買い物に行くたびにめちゃくちゃ癒されます。
それにしてもこの人、今日はあんたが初めての客だとか言いながら、東帝都社のペンダントをもっていくと毎回金に糸目をつけずに全部買い取ってしまわれるんですが、いったいペンダント買取のお金はどこから出ているんでしょうか。
まあ、売りつけてる私が心配することではないんですが……大丈夫なのかこの人、とはらはらします。

ちなみにこのフェシスさんには、ドレイラ嬢という年頃?の娘さんがいらっしゃいます。
奥さまはモロウィンドにアルゴニアンが攻めてきた際にお亡くなりになったそうです。
アルゴニアン達の侵攻があったのは、はっきりとした年代はわかりませんが、レッドマウンテンが噴火した第四紀5年の後のようですから、かれこれ200年近く前ですかね。
(200年も経ってれば、そろそろ再婚してもいいですよね…)
アロール親子がソルスセイムにやってきたのはいつ頃なんだろう、と思ってちょっと調べてみたんですが、クレシウス・カエレリウス氏の曾祖父、グラディアンの日記(レイヴン・ロック鉱山で見つける奴です)の「第四紀10年 栽培の月8日」の日の記録にこんな記述があります。
「途中で懐かしのスウィング・アンド・スクープに寄って、物資をいくらか仕入れて行こうと思う」
この「スウィング・アンド・スクープ」という店の名前は、ゲーム中では他に目にすることはないのですが、CKで見てみると、アロール親子が自宅で会話するシーンのクエスト名に同じ名称がついてるんですね。
つまりアロールさんちの雑貨屋のお店の名前は「スウィング・アンド・スクープ」という名前で、そして「第四紀10年」以前にはもう営業していたんじゃないかと思われます。
まあ、別の人が同じ店で商売をやってた(そしてアロール親子が引き継いだ?)という可能性もなくはないですけども、アロール親子がソルスセイム入りしたのは、アルゴニアンの襲撃で故郷を失った後すぐ、第四紀の5~10年あたりと考えても良さそうです。
「レイヴン・ロックの歴史」によると、この街の支配権がレドラン家に移ったのは第四紀の16年ということですから、第四紀の5~10年頃というと、ソルスセイムではまだ東帝都社が実権を握っていて、レドラン家も有力者ではあるものの、単なる一移民にしかすぎなかったような時代です。
なるほど……だからフェシスさんは、エイドリル・アラーノさんに対しても横柄な態度を取るし、娘がレドラン家の衛兵隊長と付き合ってると、奴は東帝都社の人脈が目当てなんだ!とか言うわけですね。
きっと東帝都社のバブリーな時代の思い出がいつまでも忘れられないんでしょうねえ……
哀れなオヤジだなあ。
ドレイラ嬢とヴェレス隊長。
ヴェレス隊長は勤務態度も真面目だし腕っ節も強いし、申し分のない彼氏だと思うんですけど。
それにしても、フェシスさんのドレイラ嬢に対する愛情は、ちょっと異様に思えるほど過保護ですよね。
まあ、奥さんを殺されて、残された娘だけは絶対に自分が守ってやらなきゃ、と思いつめてしまう気持はわかりますし、それにレイヴン・ロックは圧倒的に独身女性の数が少ないですから、娘さんの周囲を必要以上に警戒してしまうのもしょうがないかな、とは思います。
でも、グローヴァー・マロリーさんからちょっと娘さんのことを聞かれただけでキレたり、ドレイラ嬢に「家に鍵をかけて閉じ込めるぞ!」とか言ったりしてるのは、どうかと思うんですよね……
だいたいドレイラ嬢がハタチ前の小娘ならともかく、彼女は200歳くらいか、それ以上なわけでしょう?
いくらダークエルフが長命でも、200年も生きてたらそんなに若いってわけでもないじゃないですか。
変な虫がつくのを心配するより、どっちかっていうと嫁き遅れになることを心配するべきなんじゃないかと思うんですが……まあ、ダンマーの適齢期は何歳くらいなのかは謎ですが、とにかくフェシスさんの会話を聞いてると、やたら娘さんに執着してるセリフが多くて、ちょっと面食らっていたんです。
……で、CKで見て、さらにびっくりしたのがコレです。
この父娘、思いっきり夫婦関係に設定されてますがな……
まあ、でも、Relationshipはわりといい加減な設定で、あきらかに間違ってるのも珍しくはないんで、最初は単なる設定ミスなんだろうと思って、気にしてなかったんですよね。
(ドレイラ嬢とヴェレス隊長との関係が何も設定されていなかったことの方が気になりました)
しかしこの父娘は同じベッドで一緒に休むというAIパッケージまで指定されてたりするのです。
アロールさん家にベッドがひとつしかないんならわかりますが、ドレイラ嬢の部屋らしき個室には、ちゃんとシングルベッドがあるのに……それなのになぜ父親のベッドで寝るように指定されているのか。
CKで見ただけでは信じられなくて、様子を見に行ったら、本当に同衾してたんでドン引きしました。
今のプレイデータだと夜中はみんな強制労働中なので、
ミラーク卿死亡後のウルフリック首長のデータで見に行ってみました。

まあ、これもたぶん、単なる設定ミスなんだろうな……と思います。
ベセスダ様はこの手のことにはかなりいい加減で、NPCの眠るベッドがないとか、設定ミスで寝られないとかチェックしている様子はまったく皆無ですから……
でもやたら娘を束縛する親父の執着心が強調されているエピソードといい、アロール家に「毒の歌」が全巻揃ってるということといい、妙に符号が合いすぎてて、ついよからぬ妄想をしちゃうんですよねえ。
「本物のバレンジア」のダークエルフは淫○だ…とかいうくだりを、ふと思い出したりなんかして。
………………………………。
うう~ん……偏見なのは百も承知だけれど、この父娘の甘い蜜の部屋に乱入する勇気は……ちょっと出ないなああ。
そういえばセヴェリン邸の元のあるじ、ヴェンディル・セヴェリン(ウレン)氏と娘のミッリさんも愛人関係になっていますね。(こちらは一緒に寝てはいませんが)
まあ、彼らは本当の親子ではないということがゲーム中でも匂わされていましたので、さもありなん…という感じだったのですが、うわべは紳士淑女然とした顔をしていても、一皮剥けば情欲渦巻く禁断の世界……みたいなのって、ダンマーのお国柄(?)なのかしら、と思ったりしました。
なんかもう癒し…どころか、ただの色魔にしか見えなくなってきました。
思い返せばレイヴン・ロックの人たちは、クエストを片付けても友好度が上がらず、家や店の中の物が取り放題にならないので「あれ?」と思ってたんですが、口では感謝の言葉を言いつつも、裏では全くこちらを信用してなかった……ということなんでしょうかね。
単純なノルドの田舎っぺ達なんかと比べると、ダンマー社会は複雑怪奇です……。
そういえばこの人も魔性のダンマーに人生狂わされてましたっけ。
先代ナイチンゲール三人衆
メルセル氏が25年前に犯行に及んだ動機……あの人格の歪みっぷりからして、よほどのことがあったんじゃないかと思うんですが、その元凶は魔性の女カーリアさんにあったように思われてなりません。
彼女、あのバレンジア女王の孫だったんですね。

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を開いて、にらめっこしてるんですよね。困ったものです。