IgnoreFriendlyFireDamage v2.0 (要OBSEv0019b以降)

仲間同士の誤爆ダメージ無効化MOD

アップロード先:
http://www.4shared.com/file/6VzYd2Ds/IgnoreFriendlyFireDamage_v20.html

大幅な仕様変更を加えv2.0として手元の環境で一ヶ月以上セルフ人柱しましたが、エラーや.obseファイル肥大化などは起きることがなく安定動作を確認できたので再公開する運びとなりました。



★概要
仲間同士の誤爆攻撃により発生してしまったダメージを無効化して
誤爆により減ってしまった友好度の修復も行われるようになります。
 
仲間としての判定は二通りあり、
どちらかひとつでも満たしていれば「仲間への誤爆」として判定されます。

ひとつは「両者が同じFactionに所属していること」です。
例えば「山賊の弓士」が「山賊」の背中へブスブスと矢を誤爆していたとしても
両者は同じ「Bandit Faction」に所属しているのでダメージは無効化されます。
「プレイヤーが防御し続けているだけで敵同士の誤爆によって死体が増えていく」
というオブリ名物はもう見られません(多分

もうひとつはプレイヤーとその仲間に対してだけ行われる判定で
「プレイヤーを追尾中でプレイヤーへの友好度が50以上」のアクターであれば
「プレイヤーを含めたグループの仲間」として判定されます。
これによりコンパニオンからプレイヤーへの矢・魔法の誤爆ダメージや
その逆のプレイヤーからコンパニオンへの誤爆ダメージも無効化されます。

※召喚生物について
プレイヤーが召喚した生物に関しては
「プレイヤーを含めたグループの仲間」として扱われるので誤爆から保護されます。
しかしプレイヤー以外のNPCが召喚した生物に関しては誤爆保護の処理は発生しません。
また召喚された生物は同じFaction同士であっても互いに仲間としては識別されません。
なぜかというと、例えばプレイヤーが召喚したドレモラロードと
敵が召喚したドレモラロードは同じ「MQ13 Daedra faction」に所属しています。
Factionが同じ=仲間=ダメージ無効と判断してしまうと不都合が生じる為です。

★更新履歴
v2.0
・OBSEの仕様で「一度登録したイベントハンドラは別のセーブデータをロードしても
 そのまま残って動作し続けてしまう」かつ「ロード途中で各種変数が不定要素のまま
 イベントハンドラが呼び出されてしまう」というのが不具合の原因となっていたので
 MOD側で出来る限りの対応策として…
 1) MenuModeになったら即座にイベントハンドラを解除する
 2) クイックロードキーが押されたら即座にイベントハンドラを解除する
 3) 配列の確保は初回起動時のみ行う
 という策を実装しました。
v1.3
・セーブデータをロードしている途中なのにOBSEのイベント関数がコールされてしまう
 という困った動作仕様が発覚したので不具合が起きないように対策を実装しました
→一部状況で対策を行うことができないことが判明したのでMODの公開を中止
v1.2
・iniファイルを導入
・誤爆により減った友好度も修復されるようになりました(iniで変更可能)
・同じFactionに所属している者同士の誤爆も処理の対象となりました(iniで変更可能)
・プレイヤーに対して必要な友好度はデフォルトで50になりました(iniで変更可能)
・アクター以外のオブジェクトに攻撃や魔法を当てた場合でも
 処理が行われていたというひどいバグを修正しました (つД`;
v1.1
・プレイヤーに対して必要な友好度を65以上に変更
・自分自身への自爆ダメージは無効化されなくなりました
v1.0
・初版
 TES NEXUSにひっそりとUPしたら予想外にもコメントを頂いたものの
 英文がさっぱり理解できずにひっそりと削除した幻のバージョン(つД`;

★インストール方法
IgnoreFriendlyFireDamage.espをアクティベートしてください。
マスターファイルの指定はないのでMOD並び位置はどこでも構いません。
IgnoreFriendlyFireDamage.iniは「Data\ini」フォルダに入れてください。
(Dataフォルダの中にiniフォルダを作ってそこに置く、という意味です)
設定の確認や変更は上記iniファイルをテキストエディタで開いて行ってください。

★バージョンアップ時の注意
旧バージョンのIgnoreFriendlyFireDamageを使用していた場合には
【!必ず!】以下の手順でデータのクリーンナップを行ってください。
1)IgnoreFriendlyFireDamage.espを外す(非アクティベートする)
2)オブリを起動してセーブデータをロードする
3)しばらくしたらセーブしてオブリを終了する
4)IgnoreFriendlyFireDamage.espを上書き更新してバージョンアップする
(この際MODの並び位置が変わってしまうはずなので調整してください)
5)IgnoreFriendlyFireDamage.espをアクティベートしてオブリを起動する
※これら手順を行わずにいきなり上書き更新バージョンアップだけを行った場合
 セーブデータにゴミデータが残ったままになったり正常の動作しない場合があります

★注意
・実際には「食らったダメージを即座に回復させている」ので
 その攻撃のダメージで死亡してしまった場合にはダメージを無効化できません
・誤差により1ダメージが発生する場合があります
・本MODに仲間同士の戦闘行為を停止させる機能はありません
・アクターが「自分の攻撃目標(CombatTarget)」としている
 相手に与えたダメージ or 相手から受けたダメージは
 誤爆ではなく意図的な攻撃として扱われダメージが無効化されることはありません
※例えば「人間の支配」の魔法を使って敵と敵との同士討ちを開始させた場合
 両者が同じFactionに所属していたとしても意図的な攻撃目標への攻撃なので
 ダメージが無効化されることなく本来通りに戦闘が行われます
※例えば「プレイヤーが召喚した生物」はプレイヤーの仲間グループに所属しており
 誤爆ダメージから保護されますが、プレイヤーが攻撃を4回直撃させると
 召喚生物は怒ってプレイヤーに襲いかかってきます
 この時点で「召喚生物にとってプレイヤーが正式な攻撃目標」となったので
 両者は仲間として判定されなくなり、ダメージ無効化処理は行われなくなります
・「攻撃した/攻撃された」という行為自体が消えるわけではないので
 犯罪行為であれば犯罪になり、状況によっては懸賞金がかかることもあります
 もし犯罪行為だった場合には目撃していたアクターの友好度が下がります
 (これはオブリ自体の仕様であり、本MODが行っている処理ではありません)
※例えばコンパニオンが2人以上いる場合にプレイヤーが1人のコンパニオンへ誤爆を
 何度も何度も繰り返した場合、直接誤爆した相手の友好度は修復されていますが
 その行為を近くで何度も何度も目撃していたもう1人のコンパニオンの友好度が
 下がっている場合があります
・SupremeMagickaのRapidfireで追加発射される魔法のダメージは無効化できません
※バージョン0.90bで確認する限り、Rapidfireで追加発射される魔法は
 プレイヤーが発射したものとしては設定されていないのが原因のようです
 修正パッチを作りましたが配布を行っていいのかわからないので保留中 (´・ω・`;

★その他
作者 : r_basilico
TwitterID : r_basilico
Blog記事 : http://rbasilico.blog86.fc2.com/blog-entry-40.html
スポンサーサイト

コメント

非公開コメント

No title

設定で75%軽減とか50%軽減のように軽減量も選べたらいいんですが。この場合は回復量か。
こう、当ててしまったのは事実でそれについては結果を伴ってほしく、
瞬間の判断で威力を散らした結果みたいなダメージ量が発生するみたいな・・・!

あと遠隔の場合はoffにする設定もあるとイイナーなんて・・・

コメントありがとうございます

ゆうひいろさん、ご意見ありがとうございます。
なるほど、無効化ではなく軽減化という表現もできると良さそうですね!
「遠隔の場合OFF」というのは、矢や魔法の誤爆はそのまま放置
(プレイヤーの近接攻撃の誤爆のみが対象)ということですかね?

No title

手元から離れた魔法や矢の威力が変えられるのはおかしい・・・と思っていたが、おお、シロディールには便利な魔法スキルがアル!という事に気がつきましたよ!
Alteration(変成魔法)スキルを参照して停止の場合はマジカを消費するようにすれば良いかも?
ああ、でもコレはゲーム世界はリアルな雰囲気にできるけど不便になるか。

No title

また便利なものを!さっそくDLさせていただきました
最近ポキポキが荒ぶりすぎてちょうど困っていたところでした

TES NEXUSに
「NPC Friendly Fire」http://www.tesnexus.com/downloads/file.php?id=35257
っていうのもありました、これはギルドとか所属によってNPC同士の争いをやめさせる感じなのかな?
一緒に使えたらさらに便利かなぁなんて思ったのですがどうでしょう
一応改変再配布可ぽいかな?

コメントありがとうございます

ゆうひいろさんコメントありがとうございます。
そうですねぇ、そこまでやってしまうと変成魔法スキル持ちキャラ専用のMODになってしまうので
現状ではそちら方面には行かないかもです(´Д`; スイマセン

ねるねさん、ダウンロードして下さってありがとうございます!
最近HumantouchNPCの機能でコンパニオンから自分への誤爆は減ったのですが
現在魔法使いプレイをしているので自分がコンパニオンを誤爆死させてしまう(つД`;
…という事実に耐えられなくなってしまい、本MODが生まれましたw

このMODを作る前、すでに同じ機能を持つMODが存在していないか調べた際に
「NPC Friendly Fire」は発見&確認していたのですが
あちらのMODは「同じFaction同士」or「攻撃性と互いの友好度の計算結果」によって
アクター対アクターの戦闘を中止させているようです。

IgnoreFriendlyFireDamage:
 攻撃がヒットした時に初めて処理する
 対象はプレイヤーの仲間アクターのみ
NPC Friendly Fire:
 定期的にプレイヤー周辺の全アクターを処理する
 対象は全てのアクター

という感じで作りが全く違うので同じ機能を実現させるのはちょっと無理そうです(´;ω;`)

No title

統合できたらすごそうだな~と思ったんですが、なかなか難しいんですね><
でも一緒に使うことで街がカオス化するのは少し避けれるかもしれませんねw

ダメージ軽減率について

ダメージ軽減率を変更する方法について検討してみたのですが
持続性魔法の場合に威力や持続時間を半分にすることが不可能だったので
もし実装できたとしても矢かプレイヤーの物理攻撃だけに適用されるという
中途半端な状態になってしまうので断念することにしました (´・ω・`)

No title

その手の魔法も何とかしてくれそうなレジスト魔法は、
当たってから付加しても無意味っぽいですしね。

「これから範囲魔法の~を使うから防御準備してくれ!」
「おうけい」
みたいなイメージで魔法に先行して発動させるなら前衛後衛の
連携に見えそうだけどこれは使用魔法の判定が難しいかな・・・

近日中にバージョンアップ予定です

ねるねさんから頂いたコメントを参考にして
「同じFactionに所属している者同士のダメージも無効化させる」ようにしたら
敵側グループの誤爆も防げるようになって、とっても良い感じになりました!
現在動作確認中なので近日中にUPできると思います m(_ _)m ありがとうございます

ゆうひいろさん、コメントありがとうございます。
その辺の処理は当たる前にさかのぼって何かしなければならないので
当たった瞬間に処理が開始されるこのMODで実現するのは無理そうです (つД`;

No title

こんにちは、またまた質問お願いします
そろそろmodが多くなって管理が大変になってきたrebkkaなのですが
MCS extensionとIgnoreFriendlyFireDamageはマージしても大丈夫でしょうか?
装備系は大丈夫だったのてすが、システム系はどうなんでしょうか?

コメントありがとうございます

Rebkkaさん、コメントありがとうございます。
MODのマージに関しては理論上互いのMODで全ての内部IDが重複していないのであれば
何系MODということなくどのMODとどのMODでもマージ自体はできると思います。
ただしマージしてMODのファイル名や内部構造が変わったことによって起きる不具合や
互いのMODの全ての内部IDが重複していないかを調べる作業などに関しては
私の方ではサポートできかねますのでご容赦下さい (´・ω・`)

No title

むむむ?今回のupでもしや「ガードが鹿を取り合って殺しあう」が回避可能に・・・?
とは言えオブリ名物が完全になくなるのも残念だなー・・・と思ったりw

そういえばConfidenceやResponsibilityもうまい具合に判定に組み込めたらと面白いかもしれないですね。

Confidence(攻撃的<->逃げ腰)の値が70~30の間以外はそれぞれの理由で回避に失敗し被弾してしまう。
Responsibility(正義感<->犯罪嗜好)の値が70~30の間以外は被弾時に友好度が修復されずに下がってしまう。

のような使い方で・・・

コメントありがとうございます

ゆうひいろさん、コメントありがとうございます。

オブリ名物ガード同士の殺し合いについてですがw、
NPCが「攻撃目標(CombatTarget)」と決めて攻撃を行っている相手に関しては
誤爆ではなく正規の攻撃として判断するのでダメージ無効化は行われません。
例え同じFactionに所属していてお互いがガード職でお互いの友好度が100だったとしても
「攻撃目標」として決めて攻撃を行っている場合には本MODは関与しなくなります。

またConfidenceやResponsibility等のパラメータに関してですが、
「戦闘を開始させる/中止させるMOD」であれば参照すべきパラメータだと思いますが
本MODは単に「仲間グループに対する誤爆ダメージを無効化するMOD」なので
その辺のパラメータを解釈してこれ以上複雑化させる予定はありません。
以前ねるねさんがコメントで紹介してくださった「NPC Friendly Fire」という
Factionや攻撃性や友好度などで判定して「戦闘を中止させるMOD」が
ゆうひいろさんのイメージに該当するMODかもしれないですね。

No title

修正版upおつかれさまです。

> またConfidenceやResponsibility等のパラメータに関してですが、
> 「戦闘を開始させる/中止させるMOD」であれば参照すべきパラメータだと思いますが
あいやこれは失敬。戦闘中断とかでは無く、戦術操作のようなイメージだったんですよ。
mod魔法とかだと敵も範囲魔法を使うことが出来たりすると思うんですが、
たぶんその場合でもターゲット判定はこちらのPCのみ?だと思うのでこれを導入すると敵側にはダメージが通らないですよね。
そこでこちらが激昂や戦意喪失の魔法をかけるとアラフシギ、という感じで考えてました。

Responsibilityの方はあんまり誤爆してると裏切ってくるみたいな動作に・・・なるのか・・・?
プロフィール

r_basilico

バジリコ風味 (r_basilico)
Twitter: r_basilico
Steam: r_basilico
艦これ: 嫁艦は祥鳳

リンク
最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム