掃除人フォロワー用に、「持ち物全部売って来い」の指示を実装しました。
動作確認のため、3代目ドヴァキン(Lv:48)の養子、アレサンを連れ出します。
娘のソフィアと妻のシャーヴィーはお留守番。
前回のScriptをより一般化して、掃除人フォロワーになるNPCを選ばない所持品ゴールド換算処理にしてみました。NPCのデフォルトの装備や所持品も売ったものとして計算しています。高価な装備を身につけているNPCは高レベルの敵くらいなので、多少の誤差には目をつむります。
「所持品全部売って来い」を指示したら、その後の掃除人フォロワーの行動は"SweepFollowerGotoSell"という変数で制御することにしました。「0」は指示される前の状態。指示と同時に「1」に設定することで、目的地へ向かうAI PackageをONにします。今回はカジートキャラバンのアハカリさんを目的地にしました。彼女に拾った物を買い取ってもらうという設定です。彼女のところまで行ったら、処理開始。換算処理が済んだら、所持品を全て彼女の商売用宝箱に加えます。彼女の宝箱なら、万一クエストアイテムが紛れ込んでも簡単にアクセス可能ですから。
悩んだのは、"RemoveAllItems"で所持品を全て取り払っていること。Enableした時に初期装備は復活するようですが、武器などの初期所持品は全て取り除かれてしまいます。こちらで用意した掃除人達をフォロワーにしているなら初期装備(Outfit)と所持品が分かるので、私物かどうかひとつずつ確認しながらRemoveItemすることができます。しかしその他のNPCをコンソールでフォロワーにした場合は、どうすれば……。OutfitだけならSKSEの関数で取り出せるのでどうにかできそうですが、その他の所持品は簡単にはいきません。
試行錯誤の結果、ごくシンプルに"Reset()"を使うことにしました。死人も蘇る強力な関数です。"ResetInventory()"は、使用するとゲームが落ちてしまうので諦めるしかなかった。Resetしても友好度やファクションは維持されるし、クエストエイリアスには影響しないらしいので、しばらく経過観察するつもりです。諸々のActorValueがどうなるかが不安なところ。
換算処理の続きです。
売値は、NPCの話術スキルを反映できるようにしてみました。計算式は
こちらのページから。
総額を算出したら、「2:8」でプレイヤーの分け前をグローバル変数にセットして、フォロワーの懐に総額分のゴールドを突っ込みます。
最後に"SweepFollowerGotoSell"を「2」にセット。これでAI Packageを切り替えて、プレイヤーの元へ強制会話(ForceGreet)をするために戻らせます。配達人みたいに状況を読まずに話しかけてくるので、ちょっと不便かもしれませんが。
強制会話で、自分の懐からプレイヤーの分け前を差し出したら、通常のフォロー状態に戻ります。
アレサンに話しかけると、掃除人フォロワーの選択肢に加えて、養子用の選択肢も出ます。振る舞いはフォロワーの方が優先されていて、うまく共存できているみたい。
フォロワーのクエストはPriority50、ハースファイアのクエストはどれが該当するか分からなかったけど高くても50なので、後から追加されたフォロワーのエイリアスが有効になっていると考えればいいのかな。
まずは売る物を拾わせるため、イリナルタ湖周辺で狩りと採集を楽しみます。
恐れげもなく、クマから毛皮と爪を剥ぎ取るアレサン。
毛皮や植物だけでは金額にならなさそうなので、峠を抜けてホワイトランへ出ることにしました。
ここには変な魔術師が住み着いているので、魔法関係のアイテムが取得できます。
こういう暗い場所では、プレイヤーより掃除人フォロワーの方が目ざとく物を見つけますね。
平原に出たら、立て続けに二匹のドラゴンに出会いました。
一匹は遠くを飛んでいるだけで攻撃してこなかったので無視。鱗が赤かったからオダハヴィーングさんだったのかも。
もう一匹はこの通り、骨にしました。「本当に魂を吸い取っちゃったの?」とひとしきり驚いた後、黙々と戦利品を集めてくれたアレサン。ドラゴンの鱗と骨はいい値段になりそう。
カニを退治しつつ歩き回って日が暮れたら、掃除人達の宿へ向かいます。
この日はちょうど月のはじめの日だったので、掃除人達が宿に集合していました。
子供用のマーカーを幾つか置いているので、早速アレサンが我が家のようにくつろいでいます。
翌日。
平原ではなかなか高価な物が見つけられなかったので、プレイヤーの所持品から色々落としてみました。峠を通って来た時、魂石や巻物のサーチ感度があんまり良くないと感じていたのですが、他に何もなければちゃんと取ってくれるようです。ちなみにアズラの黒い星には見向きもしませんでした。
Scriptとの格闘が一段落したら、またProcedureTreeに取り組まなきゃ。同じAIPackageでも、フォロワーが子供だとどうも動きが悪いです。子供の処理は優先度が低いのでしょうか。
自作のポーションも拾わせて、「全部売ってきなさい」と指示。アハカリの元へ走らせます。この状態になると、持ち物交換と「やっぱりちょっと待って」の指示しかできなくなります。
で、アハカリの所在ですが、どうやら遠くにいすぎて現在地が定まらない様子。アレサンの後をついて行くと、イーストマーチの火山帯までは順調にリフテン方面へ走っていたのですが、そこで頻繁に道を行ったり戻ったりするようになってしまいました。埒が明かないので、追跡を断念。
ファストトラベルでドーンスターへ飛びました。アレサンはまだ戻りません。
どこまで処理が進んでいるのかな。無事に戻って来てくれるかな。
待っている間に、アハカリの宝箱を確認。どうやら売却処理は済んでいるようです。預けたアイテムが入っていました。
とすると、今頃こちらに向かって走っている頃だな。
一時間ずつ待機したり、宿を出たり入ったりするうちに、ようやくアレサンが戻ってきました!火山地帯で別れてから丸一日経ってます。
当然ながら、所持品はデフォルトに戻っていました。服ならまた買ってあげるし、以前プレゼントした自作のエルフのダガーは送り出す前に預かっておいたので、返してあげればよし。
プレイヤーへの分け前。アレサンの懐には彼自身の分け前633ゴールドがちゃんと入っています。
"Reset()"による影響は所持品以外には特に見られませんでした。養子用の選択肢もちゃんと出るし、自宅に戻って解雇すると、元の生活にかえります。
ActorValueへの影響を調べたところ、"Variable"関連、ゲームを再開すると初期値に戻る"Agrression"など、"Reset()"後も値は保持されているようでした。
まだまだ様子を見ないと大丈夫かどうか分かりませんが、とりあえず掃除人フォロワーの機能はこれで揃いました。
しかし売りに行かせたらすぐに戻ってくるわけではないので、フォロワーが最低二人は欲しいかも。二人いればローテーションが組めるから、一人をお使いに出している間にもう一人を連れてダンジョンを根こそぎにできる。
二人となると、それぞれの行動を制御する変数が必要になります。待機は
ActorValueの"WaitingForPlayer"が使えるとしても、「取得禁止」と「売ってこい」のON/OFFをどうするか。"Variable09"は宿屋の人くらいしか使ってないようですが、あまり触りたくはない。「二人以上は絶対に増やさない!」のであれば、どうにでもなりそうですが……。
MOD完成は程遠いです。
前へ |
次へ