忍者ブログ

方向音痴のSkyrim

PCゲーム「Skyrim」の雑多なCKいじり日記

スカイリムの掃除人14【RemoveFromAllFactions()とAliasの適用制限】

ファルクリース担当の掃除人ガエアを養子にできるようにしたいと思い、とりあえず会話から「BYOHRelationshipAdoptableFaction」のランク3に加入させる処理を追加してみました。
ランク3は、Hearthfireで新たに追加されたルシア達用の設定のひとつみたいです。「うちの子にならないか」という選択肢をONにします。
こうすることで、既存の養子クエストにガエアも参加することができるようになります。養子化の処理も滞りなく行われるのですが、この処理の中でちょっとした問題が。



これは養子にする際に行われる処理の冒頭ですが、これまで加入していたFactionを、CrimeFaction以外全消ししています。"RemoveFromAllFactions( )"は、Actorデータで設定しているFactionのみならず、現在適用中のクエストAlias側で設定しているFactionまで全部消すようです。
ガエアには商人用のFactionを設定しているので、養子になることで一切の商売ができなくなります。これはちょっとまずい。プレイヤーが彼女に大事なアイテムを売っていたら、買い直すことができなくなってしまいます。
おまけに掃除人フォロワーとして彼女を連れていた場合、フォロワーAliasで追加しているFactionを消されると、雇用関連のフラグが狂ってしまう……。



前者の解決法はシンプルで、養子になった後で消されたFactionを復活させるだけ。今回はプレイヤーとの会話から、元々ガエアに被せていたクエストAliasをつけ直すことでそれを行いました。このクエストAliasは掃除人達の月一の集会スケジュールを設定している物ですが、ガエアのAliasにだけ、復活させたいFactionも登録しています。ゲーム中このAliasを取り払うことはないから、この処理でもまあ問題ないでしょう。
"RemoveFromAllFactions( )"はActorに対して行われる処理なので、クエストAliasのFactionの情報まで書き換えてしまうわけじゃないみたいです。クエストAliasで追加していたFactionまでクリアされていたので、もしかして?! と焦っていましたが、そうでないと分かってよかった……。

後者のフォロワーとしての雇用フラグが狂うのは、フォロワークエストで実装した強制解雇処理(全Aliasクリア&使用変数のリセット)で対処できました。

なんとも説明しにくいんですが、Papyrusログに出てこないエラーもあるんですね。
ひとつのQuest内では、同一Referenceに複数のAliasを適用することはできません。したい場合は、「Allow Reuse in Quest」にチェックを入れないとだめです。
掃除人フォロワーではそういう設定をしていないので、雇用フラグが狂って既にフォロワーになっている人に雇用の処理ができてしまう状況になると、この制限に引っかかってしまいます。"ForceRefTo( )"で空いているAliasに入れようとしても、既に同Quest内の別Aliasに入っているので、どうやら処理に失敗し、そこで雇用処理のFunctionが終了しているようなのです。そしてそれがPapyrusのログにも出ない。
状況を理解するまでに時間がかかりましたが、こういうこともあるのかと勉強にもなりました。
Alias関連は慣れないと本当に難しいですね。


無事スカイリムの掃除人Modをリリースできたので、この作業日記はここでいったん終了です。
Modは今後も少しずつ修正をして、使いやすくバグりにくいものにできればと考えています。

前へ | 終了
PR

Author

UNI
Skyrimで遊ぶのも、CKで改造するのも好きなファンタジー好きです。
戦闘苦手で難易度は基本EASY、慣れてもNORMAL程度。 アンデッド恐怖症なので、ノルド遺跡探索が辛い……。

ブログ内検索

最新コメント

[10/20 放浪者]
[10/10 斥候]
[10/03 放浪者]
[10/02 放浪者]
[09/29 竜崎まりん]