最近Music Type Distributorを使ってバニラレコードに触れない形でのBGMのリプレイス作業をしているのですが、特定のEditorIDを含む敵を相手にしている時に専用の戦闘BGMを流せそうな気がしたので、それを無理矢理気味に実装した時のメモを残しておきます。今回の方法はスクリプトを使わないだけに実装方法としてはかなり雑だと思うので、ゲームにかかる負荷の程はさっぱり分からない事にご注意ください。
やる事をざっと過剰書きすると…
・SPIDで配布する為のボス識別用Keywordレコードを作成する
・SPIDの設定ファイルでキーワード配布対象となるアクターを*Boss等で指定する
(SPIDで対象となるアクターを増やす程、ボス戦をボス戦らしく出来ます)
・通常戦闘曲とボス戦闘曲をMusic Trackレコードとして作る
・通常戦闘側のコンディションをGetCombatTargetHasKeywordでSPID配布キーワードが無い場合に設定
・ボス戦側のコンディションをGetCombatTargetHasKeywordでSPID配布キーワードを持つ場合に設定
・どちらの戦闘曲もGetCombatTargetHasKeywordでドラゴンを相手にしていない場合の設定を追加
・Music Type Distributorで上記のレコードをMusic TypeのMUSCombatの中に差し替え方式で放り込む
例:MUSCombat! = 0x800~KimachuuBGM.esp,0x801~KimachuuBGM.esp
といった感じでEditorID内にBossが含まれるアクターを相手にした時に専用BGMが流れるようになりました。
スカイリムはDefault Object Managerと呼ばれるレコードに初期設定らしきものが大量に記述されており、その中で戦闘BGMとして指定されているMusic TypeがMUSCombatレコードのようです(一見それっぽく見えるMUSCombatBossは没レコードかもしれない)。そこでバニラレコードをいじらずにBGMを差し替え出来るMusic Type Distributorを使えば、通常戦闘曲とボス戦曲を自由に設定出来ると思ったわけですが、LocationRefTypeBossをGetCombatTargetHasKeywordで検出する方法が存在しないので、SPIDを使ってボスっぽいアクターに新しいキーワードを配布して、それをMusic Trackコンディションに設定するという酷い力技で解決するに至りました。
いくらバニラレコードを改変しないとはいえ途中でのアンインストールには一切配慮していないので、もし同様の作業をする場合は自己責任でお願いします。にしてもBGM管理まで比較的楽に出来るようになるとは、SKSEプラグインの力は恐ろしい…
コメント