忍者ブログ

方向音痴のSkyrim

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

スカイリムの掃除人09【オリジナルFollowerQuest作成】

既存のフォロワー枠とは別で、掃除人フォロワーを作りたいと思っていたのですが……。
いざフォロワーシステム(?)を調べてみると、むしろ別枠で作らないといけないことに気づきました。



フォロワー関連らしきクエスト。下3つはダンジョンを見つけた時や絶景を見た時などのセリフ用クエストです。
頼めばついて来てくれる私兵や友人や動物と、お金で雇う傭兵は、仲間に誘う時のクエストが別々に用意されていますが、フォロワーになると「DialogueFollower」というクエストで管理されることになります。



このクエストにはフォロワーのAliasと動物フォロワーのAliasが存在し、それぞれのAiliasで挙動が管理されます。仲間になるとプレイヤーに追従してくるのは、このAliasのAI Package Dataに「Procedure: Follow」を含んだパッケージが登録されているため。
AliasはActorの情報の上に被せられる物なので、Aliasで設定されたAI Package DataがActorのAI Package Dataの上に追加されることになります。
なので、既存のフォロワーと異なる振る舞いをさせたい場合は、少なくとも新しいAliasを用意して、そこにオリジナルのAIPackageを登録してあげなくてはいけません。
しかし既存のクエストに手を加えるのは、極力避けたい。下手に手を入れて既存のフォロワーがおかしくなったら嫌だ。そもそも既存のクエストに新規Aliasを追加する必要性が全くない。
というわけで、新しいフォロワークエストを作るところからはじめました。

掃除人フォロワーの仕様
・連れて行けるのは一人まで
・プレイヤーに追従しながら拾い物
・「ここで待て」に加えて、「拾わないで」の命令もいる
・インベントリを開ける
・「SetPlayerTeammate」でチームメイト化(Outfitと同じ防具を拾った際の脱衣対策)
・チームメイトにするんなら、FavorModeもあってもいいかもしれない
・プレイヤーや既存のフォロワーから誤爆を受けても敵対しない
・所持品の一括売却

採取に関しては他のフォロワーMODが色々あるので、それらと差別化するために、使い勝手が悪いけど単純で分かりやすい、「インベントリがカオスになっても構わない」フォロワーにするつもりです。「使い勝手の悪さ」=「取得するアイテムの細かい指示ができない」ですが、その辺は掃除人も生活がかかっているわけですし、雰囲気でごまかす。なにより持ち物の管理をしなくていい、足のついたガラクタ箱(アイテム吸引&売却機能付き)って便利じゃないですか。



とりあえず「DialogueFollower」の骨格をそのまま真似てクエストを作成しました。
フォロワー用のセリフについては、CurrentFollowerFactionに加入させれば、既存フォロワーのコメント用クエストに寄生できそうです。ですが、既存フォロワー関連のファクションを使うと他のフォロワーMODと競合が起きそうな気がするので却下。おしゃべりさせるのはあきらめます。

AI Package Dataには、根こそぎ採取用Packageを突っ込みました。「拾わないで」と頼んだ時&居住エリア滞在時用に、SandBox Packageも追加。
それから、プレイヤーの体力が少なくなった時に回復魔法を使うPackageもおまけでトッピングしておきます。掃除人はプレイヤーの冒険のおこぼれにあずかっているくせに、戦闘にはほとんど協力できないので、せめてものご機嫌取りです。戦闘中も状況が許せば回復に回れるよう、CombatOverrideも手を入れました。



Scriptも大部分が同じですが、あまり複雑なScriptは書けないのでだいぶ単純化しました。
「仲間にする処理」「ここで待てのON/OFF」「拾うなのON/OFF」「別れる時の処理」。
現在、掃除人フォロワーを連れているかどうかの判定は、「CurrentSweepFollowerCount」というグローバル変数の設定で行うようにしました。既存のフォロワーと同じやり方です。

クエスト「Dialogue Follower」では、PlayerFollowerCountというグローバル変数を使って、フォロワーの人数を数えています。通常この値は「0」か「1」のどちらかしか取りません。この値を参照することで、プレイヤーがフォロワーを連れているかどうかを判断しています。何らかの理由で意図せずフォロワーのAliasが空っぽになってしまうと、この値が「1」のままフォロワーが存在しない状態になってしまいます。

掃除人フォロワーでもこの状態になったら困るので、「別れる時の処理」にAliasが空になった時の対処を組み込み、フォロワー以外の人(掃除人の元締め)に話すことで強制解雇ができるようにしました。
既存のフォロワーと一緒に連れ歩くこともできるので、雇用中は「PlayerFollowerFaction」と友達以上の関係になるようにもしています。これで多少誤爆を食らっても、喧嘩しないでしょう。多分……。



AliasにくっつけたScript。こちらも既存のフォロワーを参考に。
「ここで待て」をされてそのまま忘れ去られたら、72時間後に自力で「待て」フラグを解除してプレイヤーの元へ戻ります。



ダイアログ。機械翻訳を通したような英語を書いています……。
一部は無声ですが、その他はボイスタイプを限定しない「SharedInfo」を探して、使いまくってます。
「拾うのやめろ」と言うと、友人を殺されでもしたかのように嘆きつつ従います。



Scriptが正常に動くのを確認後(ここまでが長かった)、掃除人フォロワーを軽く使用してみます。
収集のAI Packageが重いのか、他のフォロワーを連れていたら掃除人フォロワーの動きが悪くなったので、泣く泣く二人旅。
こちらは一箇所にぼーっと突っ立っているだけで、掃除人が周りにあるものをほぼ根こそぎにしてくれます。
山賊の死体の山で「待て」したら、自分はその場を離れて椅子で寛いでいても、仕事を続けてくれます。
サーチをONのまま「待て」すると、自分の周囲「700」を検索して取得するのですが、取得した先でまた「700」以内に取れるものがったら、さらに移動します。なので「待て」した場所から離れてしまうこともありうる。転々とアイテムを置いて、罠に誘い込むなんてイタズラもできちゃいます。



フォロワーに誘える判定が「PotentialSweepFollower」ファクションに入っているか否かなので、コンソールでファクションに入れてやればいろんな人が誘えます。
たとえば道端で会うアリクルの戦士。アリクルの戦士は戦ってくれるから、普通のフォロワーみたいに使えますね。
彼らに絡まれている女性は、ファクションに入れても誘えませんでした。囚人を護送中の兵隊さん達もだめだった。クエストの優先度とかが関係しているのかな。



意外とムアイクさんも誘えました。
ただ、自分が着ているのと同じ防具を入手したら、セル移動などのタイミングで防具を脱いでしまう現象は健在です。何で脱いじゃうんだろう。
この対策のためだけにチームメイト化しているので、プレイヤー側から防具を渡せばそのタイミングで何かを着てくれるようにはなっています。


 
ちょうちょを追いかけるムアイクさん、可愛い。
しかし場所移動で消えてしまう設定のNPCは、仲間に誘っちゃいけませんね。カースワステンにいたシルバーブラッド家の傭兵達が新しい仕事探さなきゃと言ってたので仲間にしてみたら、エリアチェンジで消えるタイプの人でした。強制解雇会話を用意しといてよかった。

これで掃除人フォロワークエストの主要部分は、ある程度できました。
あとは「持ち物を全部売って来い」の指示の追加。
ひとつのダンジョンに潜るだけで相当数のアイテムを取得することが予想されるので、それらの処分を一括して行わせる指示です。重量オーバーしててもAcquireはできてしまうので、インベントリが恐ろしいことになりそう。プレイヤー側で整理してあげるのは、面倒すぎますから。
ふう……。Scriptとまた格闘か。


前へ | 次へ
PR

Author

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

ブログ内検索

最新コメント

[07/16 chomechome-X]
[07/16 ブレトン魔術師]
[07/15 amo]
[07/10 初心者シセロ]
[07/10 ソウルケルンのエレンウェン]