フォロワーに魔力の弓を使わせる

CK(とSKSE)を使用してフォロワーに魔力の弓を使わせるためのTipsです。

魔力の剣はSpellListに追加するだけで使ってくれますが、魔力の弓は内部処理がちょっと特殊なので工夫が必要です。 そのままでは唱えないし、どうにかしてvanillaの魔力の弓を詠唱させることはできても、なぜか正常に装備されず素手の構えで弓を握ってパンチを繰り返すだけになってしまいます。

拙作Artemionにはこれらの問題を回避して魔力の弓を使わせる仕組みがございますので、その方法をご紹介します。
(もっとも、あまりスマートなやり方ではないのですが……)


 

手順1:前準備

 
必要なもの
CreationKit
SKSE v1.7.1以上
配布Script(後述)
 
SKSEは予めインストールしておいてください。

それとは別に、SKSEの.7z Archiveを改めてダウンロードし、解凍して中のScriptsフォルダをData直下に上書きします。
これでSKSEの追加関数がCKで扱えるようになります。
 

手順2:Scriptの導入

 
Scriptをこちらからダウンロードし、解凍して中のScriptsフォルダをData直下に置きます。
これはArtemionで使用しているものと同じで、以下の処理を行うためのものです。

効果発動時の処理(一番上のはやらなくても動きそうですが念のため)

  • vanillaのフォロワー管理システムが勝手にフォロワーに追加する狩猟弓と鉄の矢を没収
  • 両手に装備している武器や魔法を外して素手の状態にする
  • インベントリに魔力の弓と矢(100本)を追加し、スロットを指定して強制装備

効果終了時の処理

  • 持っている魔力の弓を外す
  • 魔力の弓と矢を没収

一応動作テストは行っていますが、何分素人なので予期せぬ不具合があるかもしれません。
申し訳ありませんが使用は自己責任でお願いいたします。

こんなものでよければ改良や配布フォロワーへの同梱はご自由にどうぞ。
(ただしこのScriptそのものを単品で再配布することは禁止といたします)
配布の際にはSKSEv1.7.1以上が必須になること、およびこのScript(pexファイル)を同梱する必要があることにご注意ください。

ソース

magiceffect property BoundBowFFSelf auto
weapon property boundweapon auto
ammo property boundArrow auto
weapon property FollowerBow auto
ammo property FollowerArrow auto function onLoad()

if !self.getCasterActor().hasMagicEffect(BoundBowFFSelf)
self.dispel()
endIf
endFunction

function OnEffectStart(Actor Target, Actor Caster)
Caster.additem(boundArrow as form, 100, true)
Caster.additem(boundweapon as form, 1, true)
Caster.removeitem(FollowerArrow as form, Caster.getItemCount(FollowerArrow as form), true, none)
Caster.removeitem(FollowerBow as form, Caster.getItemCount(FollowerBow as form), true, none)
Caster.UnEquipItemslot(1)
Caster.UnEquipItemslot(2)
Caster.equipItemEX(boundArrow as form, 0, true, true)
Caster.equipItemEX(boundweapon as form, 2, false, true)
endFunction

function OnEffectFinish(Actor Target, Actor Caster) Caster.UnEquipItemslot(1)
Caster.UnEquipItemslot(2)
Caster.removeitem(boundArrow as form, Caster.getItemCount(boundArrow as form), true, none)
Caster.removeitem(boundweapon as form, Caster.getItemCount(boundweapon as form), true, none)
endFunction

[collapse]

余談ですが、EquipItemEXってのがSKSEの追加関数にあたります。
vanillaのEquipItem関数は装備するスロット(右手/左手)を指定できない/エンチャント武器が正しく扱えない等の問題があります。
vanillaの魔力の弓も内部的にはエンチャ武器ですし、強制使用させた時の挙動からしてうまく手のスロットに装備できていない感じなので、それでこのEquipItemEXの出番ってわけです。
参考:CreatinKitWiki
 

手順3:MagicEffectの作成

 
Vanillaの魔力の弓からコピーして作ります。
CKでespを作成し、検索フォームにBoundBowFFSelfと入力。
ヒットした”BoundBowFFSelf”を右クリックで複製します。IDと名前は適当に変更してください。

複製したデータを開き、右下のPapyrus Scripts欄にある”BoundBowEffectSctript”を消します。
また、今回は魔力の収束(Mystic Binding)に対応させるつもりはないので、上方にあるTarget Conditionsの1行も削除して空欄にします。

Artemionは彼固有の召喚弓(Soul Banisher)を呼び出すため、上の画像ではAssoc. Item 1にそのIDを指定し直しています。
このあたりはいろいろ応用がききますが、vanillaの魔力の弓を使う場合はそのままでよいです。
 

手順4:Scriptの設定

 
手順1でダウンロードしたScriptを設定します。
Papyrus Scriptsの横にあるAddをクリック→”aaaBoundBowCustom”を選択。
Papyrus Scriptsに同名のScriptが追加されたら、右クリックしてEdit Propatiesを選択。
小窓が開くので、右のEdit Valueをクリックして1行ずつ編集していきます。

vanillaの魔力の弓を呼び出す場合、”BoundBowFFself”のところ以外はこの画像の通りになれば大丈夫です。
“BoundBowFFself”のところでは先程手順3で複製したデータを選択します。



固有の弓と矢を呼び出す場合は”boundarrow”と”boundweapon”の項も変更します。
Artemionの例です。

すべて設定したらOKを押して次へ。
 

手順5:トリガーの作成

 
手順3で作成したMagic Effectを発動させるためのトリガーを作ります。
魔法でもシャウトでもいいんですが、今回はArtemionを例にアビリティに設定(戦闘が始まると自動発動するように)してみます。詠唱がいらない分高速かつ確実に発動しますので、とにかく魔力の弓だけ使ってほしいならアビリティにするのがおすすめです。

左メニューからMagic→Spellとツリーを展開し、右から適当な項目を右クリックして”New”を選択。
↓の画面が出ます。

右の”Effects”のリスト上で右クリックして”New”を選択。

Effectは手順3の項で作成したMagic Effectを指定します。
Durationは効果時間。魔法やシャウトなら数分が無難ですが、今回はアビリティなので長すぎるくらい長めにしています。
Conditionsには戦闘中のみ効果を発揮するよう条件式を入れました。
IsinCombat =1で戦闘中のみ。ちなみに=0にすると非戦闘時のみになります。
設定が終わったらOKを選択。

元の画面に戻るのでいろいろ入力していきます。

IDとNameを入力します。適当で大丈夫ですが、強いて言うなら管理しやすい名前がいいと思います。
Typeは今回はAbilityを選択。魔法にしたいならSpell、シャウトにしたいならVoice Powerになります。

Equip Typeはアビリティの場合は無関係なのでデフォルトで大丈夫です。
魔法の場合はEitherhand(どちらの手でも可)、Left/Righthand(左右の指定した方限定)、Bothhands(両手)から選びます。
特にこだわりがなければデフォルトで問題ありません。
シャウトの場合はVoiceにします。

また、Auto-Calculateの項で詠唱時間と消費マジカが自動計算されるので、
編集したい時はチェックを外して手入力します。アビリティの場合は詠唱がないので外しても外さなくてもいいです。
(画像では試験的に両方0に設定しています)
設定が終わったらOKを選択。トリガー完成です。
 

手順6:フォロワーのSpellListへの追加

 
アビリティに設定した場合はこのトリガーをフォロワーのSpellListに追加して完了になります。
魔法の場合はこのままSpellListに追加しても使ってくれないので、okame28様の講座を参考に呼び水となるオークフレッシュを作成してEffectsに追加します。
シャウトの場合は呼び水の他にさらにシャウトを作る手順が必要です。上記のリンクを参考にしてください。

いずれにしても最後はSpellListへの追加をお忘れなきよう。


というわけで、以上になります。
お疲れ様でした。

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。

*