2018/05/11

なんわば

こないだの記事(墓86)でNPCがワバジャックを使っても特殊効果が発動しないことが発覚したのですが、それだと寂しいのでNPCが使ってもPCと同様に作動するように改造してみました。忘れないように書いとく!

DA15WabbajackEffectSCRIPT

①Actor Caster を追加
②EVENT onEffectStart に Caster = akCaster を追加
③IF(akCaster == game.getPlayer()) と対応するENDIFをコメントアウト
④game.getPlayer() をすべて Caster に置換

これでスーさんがワバジャックを使ってもスウィートロールを召喚できるようになりました!やったね!ただし、PC限定になってたのは何か訳があっての事かもしれないのでご利用は計画的に。バックアップをお忘れなく!

完璧に理解したとは口が裂けても言えませんが、ワバジャックの中身を見た事でランダム効果発生の仕組みが何となく解ったのでこれを転用すれば色々と変な事ができそうですね。ぐへへ。それもこれもコメントでの素朴な疑問のおかげです。何かきっかけがないと調べてみようって気になりませんので。動画やっててよかったなぁ。本当にありがとうございます!

あとワバジャックの件でちょっと気になったのが、ターゲットの生霊を召喚してPCと供に戦わせるって効果(だと思う)が没になってる点。

幽霊形態ってシャウト (碑文のあれこれをご参照ください)もPCのコピーを召喚するって効果(になる予定だったはず)ですが没になっています。ハイフロスガーでのフスロダ試験の際にアイナース師がこのシャウトを使用しますが、この時はアイナース師のデータを取得してコピーを生成している訳ではなく予め用意されたアクターを召喚しているだけです。

その場にいるアクターのコピーを生成するっていうのが何か問題あるのかな?気になったので試してみました。ワバジャックのランダム要素を消し、spawnGhostFriend だけが起こるようにしてゲーム内で確認してみます。

スーさんにワバジャックを当ててみたら生霊にめっちゃ朗らかに挨拶されました。10秒で消えちゃうけど戦闘になったら一緒に戦ってくれます。なにこれおもろいやーん!でも装備は初めてキャンドルハースホールで会った時のやつですね。ターゲットのBaseObjectを参照するのでCKでプレビューできる姿で出てくるみたいです。

ゲラちゃんは初期装備がMODの物ですがちゃんと着てくれてました。なんか暴言吐かれたけど。

敵に使った場合も一応戦ってはくれるんですが…

ターゲットがレベルドアクターだと正確にコピーできないみたいです。装備が全然違ったり、男性に当てたのに女性が出て来たり…。獣のレベルドアクターだと熊に当てたのに狼が出たりしそう。GetBaseObjectじゃなくてGetLeveledActorBaseを使えばその辺りは解決するかな?って思ってやってみたけど、そっくりそのまま同じ人を確実に出すのは無理そうでした。

敵に使用した場合の懸案事項がもうひとつ。

生霊が敵じゃなくてこちらに襲い掛かってくる事が多々ありましてな…。生霊のベースアクターが所属していたFaction(山賊とか帝国兵とかの派閥)を全部消して新たにPlayerFaction(PC自身やリディアさんとかが所属してる派閥)に加入させるって処理をしてるので、必ずこちらの味方になってくれると思ったんですが…。

例えばNecromancerFactionの場合だと、DraugrFactionとSkeletonFactionはFriend、同じNecromancerFactionに所属してる人はAllyって感じに相互関係が設定されていて、仲間同士で戦わないようになっています。そこでPlayerFactionの詳細を確認してみたところ、このFactionは構成員間の相互関係が設定されておりませんでした。同じPlayerFactionとはいえFriendでもAllyでも何でもないので、ベースアクターのAI設定が好戦的な性格だと見境なく襲い掛かって来るって事態になっちゃうのかな?それならPlayerFactionがAllyになるFaction、たとえばDunPlayerAllyFaction(メルカやアンスカさんが所属する、ダンジョンクエスト中の非敵対アクター用Faction)辺りに入れてやれば上手くいくかもしれないですね。ただ、そこを変更するとesp作らないといけないような気が…。スクリプトの編集だけで済ませたかったので、試しに SetPlayerTeammate(Faction関係なくPlayerのAllyになる)を使ってみました。

フォースウォーンやハグレイヴンで何度か試し撃ちしてみたところ、これならPCに襲い掛かる事なく敵とだけ戦ってくれました。やったね!但しこのSetPlayerTeammate、CKwiki曰く「戦闘中にこの関数を呼び出すと確実に動作しないことがあります」との事。それでもデフォよりは期待通りの動作をしてくれるので、spawnGhostFriendについてはもうこれでいいかなって。

あとはランダムの値でspawnGhostFriendが発動する範囲を作って完成!わぁい!


さて、お次はPCのコピーを生成する実験です。上手くいけば自分の理想の幽霊形態を再現できるかも!わくわく。

誰だお前!幽霊形態はPCの幻影を召喚したいんですけど!

というわけでまたワバジャックを改造して、spawnGhostFriendの効果を「ターゲットの生霊を召喚する」から「杖使用者の生霊を召喚する」に変更してみました。これをPCが使えばPCのコピーが出てくるはずです。さっそくやってみよう!


出てくるなり涙目敗走する角兜のモミアゲが現れました。


逃げ惑うばかりで何の役にも立ちゃしねぇ!まぁファレンガーのコピーなので残当ですね…。


透明だとよく判らないので幽霊エフェクトを削除してみました。


このPrisonerさん、見かけによらず臆病者で誰が襲われていようと助太刀しないっていう主人公らしからぬ性格をしています。

出てくるなり逃げ惑っていたのはこの性格のせいだったんですね。それならAggressionをAggressiveに、ConfidenceをFoolhardyに、AssistanceをHelps Friends and Alliesにした上で召喚時に適切なFactionに入れてやれば一緒に戦ってくれそうです。あとレベルが1固定になってるので同期させて、戦闘スタイルやパークやスペル、装備も予め設定しておけば…と思ったんですが、PrisonerさんはPlayerそのものなので彼に変更を加えるのはものすごーーーーく不安です。自分の幻影を召喚するにはワバジャックみたいにアクターのベースを生成する方法じゃなくて、アイナース師みたいに予め用意されたアクターを召喚するって方法が無難かと思われます。

というわけで召喚用のアクターを作成しました。

Player(Prisonerさん)の容姿をテンプレートにして、装備はローブに変更しました。CKのプレビューではPrisonerさんと同じ見た目ですが、ゲーム内ではちゃんとファレンガーと同じ見た目になってくれるでしょうか…。なってくれるといいな…。あと召喚するために Summonable にチェック、幽霊だからダメージ無効にするために Is Ghost にチェックを入れてます。


レベルは10~100でPC同期、クラスをCombatMageDestructionにして破壊スキルとマジカを伸びやすくします。レベル30時にはこんな感じになります。

あとはAI設定を前述のようにAggressionをAggressive、ConfidenceをFoolhardy、AssistanceをHelps Friends and Alliesにした上でPlayerがAllyになる適当なFactionにぶち込みます。とどめにファレンガーが覚えてるスペルとパークを片っ端からぶち込みます。

ひとまずこれで召喚用アクターは完成です。シャウトにすると使うのに面倒なので召喚魔法にしてテストします。

が、長くなってきたしワバジャック関係なくなってきたのでとりあえず今回はここまで。お付き合いいただきありがとうございました。

0 件のコメント: