2015-10-20

りりり。回避調査

つぶさにコードを調べてる。

#case 01 : 命中判定式が間違い?

| | |■回数付きループ [ CSelf54[f.命中判定する?] ]回
 | | | |■イベントの挿入[名]: CSelf41[攻側命中] = ["◇BTL.命中能力"] <コモンEv 84>  / CSelf18[使用者(c10)] / CSelf12[技個別ID]
 | | | |■DB読込(ユーザ): CSelf42[攻側属性] = ユーザDB[技.個別:CSelf12[技個別ID]:属性]
 | | | |■DB読込(ユーザ): CSelf44[技回避効率] = ユーザDB[技.個別:CSelf12[技個別ID]:回避効率(100%)]
 | | | |■イベントの挿入[名]: CSelf40[受側回避] = ["◇BTL.回避能力"] <コモンEv 83>  / CSelf10[戦キャラ(c10)] / CSelf42[攻側属性] / CSelf44[技回避効率] << 回避値を求めている箇所
 | | | |■条件分岐(変数): 【1】CSelf57[f.確定命中(GS)] が 0以上
 | | | |-◇分岐: 【1】 [ CSelf57[f.確定命中(GS)] が 0以上 ]の場合↓
 | | | | |■変数操作: CSelf40[受側回避] = 0 + 0 
 | | | | |■
 | | | |◇分岐終了◇
 | | | |■変数操作: CSelf46[乱数.max] = CSelf40[受側回避] + CSelf41[攻側命中] 
 | | | |■変数操作: CSelf45[判定乱数] = 0 ~ CSelf46[乱数.max] 
 | | | |▼ [命中判定]
 | | | |▼ 攻め.hit = \cself[41] : 受け.avd = \cself[40] , rnd( \cself[45] )
 | | | |■条件分岐(変数): 【1】CSelf45[判定乱数] が CSelf41[攻側命中]以下 
 | | | |-◇分岐: 【1】 [ CSelf45[判定乱数] が CSelf41[攻側命中]以下 ]の場合↓
 | | | | |▼ Hit
 | | | | |■変数操作: CSelf48[f.今回命中] = 1 + 0 
 | | | | |■
 | | | |-◇上記以外
 | | | | |▼ miss!
 | | | | |■変数操作: CSelf48[f.今回命中] = 0 + 0 
 | | | | |■
 | | | |◇分岐終了◇
 | | | |▼ ――――――――― @ ――――――――― @ ――――――――― @ ――――――――― @ 
 | | | |■
 | | |◇ループここまで◇◇


以下・未満の指定間違いではない(回避0の場合の乱数上限==命中値なので、未満指定では 回避0 でもミスが出る)

#case 02 回避値算出の間違い?

commonEv ◇BTL.回避能力
プレイヤーキャラ側の算出部分抜粋

 |■DB読込(可変): CSelf11[補正値読出位置] = 可変DB[タイプキャラごとの持ち物 項目斬撃/技[0]の項目番号]
 |■変数操作: CSelf11[補正値読出位置] += 0 + CSelf1[属性] 
 |■変数操作: CSelf14[item.offset] = CSelf13[元ID] * 8 
 |■変数操作: CSelf15[item.マント] = CSelf14[item.offset] + 1 
 |■DB読込(可変): CSelf12[基礎回避] += 可変DB[Btlr.キャラ:CSelf0[cdb10.btlr]:基礎回避]
 |■DB読込(可変): CSelf17[r補正値] = 可変DB[キャラごとの持ち物:CSelf15[item.マント]:CSelf11[補正値読出位置]]
 |▼  
 |▼ 装備要求の体格が足りていない場合、合計値で割る
 |■イベントの挿入[名]: CSelf21[不足値] = ["[!]get.要求値マイナス"] <コモンEv 182>  / CSelf0[cdb10.btlr] / 2:体格
 |■変数操作: CSelf21[不足値] += 1 + 0 
 |■変数操作: CSelf12[基礎回避] /= CSelf21[不足値] + 0 
 |■変数操作: CSelf17[r補正値] /= CSelf21[不足値] + 0 
~~ ~~ ~~
 <敵部分 省略>
~~ ~~ ~~
▼   GS読み出し
■DB読込(可変): CSelf18[回避GS.Lv] = 可変DB[計算用tmp.GS:回避判定時:CSelf0[cdb10.btlr]]回避判定時
■変数操作: CSelf19[追加回避] = CSelf18[回避GS.Lv] * 3 
▼   基礎に補正値を掛ける
>■変数操作: CSelf17[r補正値] += CSelf2[回避効率] + 0 
>■変数操作: CSelf4[[戻]回避] = CSelf12[基礎回避] * CSelf17[r補正値] 
>■変数操作: CSelf4[[戻]回避] /= 100 + 0 
■変数操作: CSelf4[[戻]回避] += CSelf19[追加回避] + 0 

ここか。

正しくは
変数操作: CSelf17[r補正値] *= CSelf2[回避効率] + 0 
変数操作: CSelf4[[戻]回避] = CSelf12[基礎回避] * CSelf17[r補正値] 
■変数操作: CSelf4[[戻]回避] /= 10000 + 0 
■変数操作: CSelf4[[戻]回避] += CSelf19[追加回避] + 0 


こうならないといけないはず。
技の構成部分毎に、相手の回避力にどの程度影響されるか、という値が設定されている。それがこの[回避効率]で、百分率の値を取る。
基本的に100を中心に前後する値を"対応していなきゃ0"の値に足してちゃいかんわな。


なお、防御効率に係るはずのGS『鉄壁』ですが、参照スべき場所・可能性のある場所をいくら探しても見つからず。
実装することを忘れていた可能性が浮上しております。

4 件のコメント:

匿名 さんのコメント...

コードの精査お疲れ様です
こりゃ心眼無きゃやってられないってなるわけですわ……

ついでに気になった(気になってた)点がいくつか

-ヒュプノスラッシュ
説明文に彩のアイコンがついていますが技のイメージ的に念のような気がします
そしてまだなんともいえないラインですが実際に念術のほうの補正が乗っているような……

-ガードブレイク技
ただの防御状態を割れた試しがありません
ディフレクト技は潰した上でダメージ軽減もなくせるのでそっちには効いているようですが

-鞘に収める
説明文に他の防御技のように防御対応が記載されてるのに今更気付きましたが
そんなのお構いなしに全部避けてます
というかそういう技だと思ってました

-九十九針の命中
命中が21と他武器に比べて極端に低いです
戦闘用でないといえばそれまでですが

匿名 さんのコメント...

書き忘れが一つ

-即死攻撃の表示周り
凍結、停止中に即死攻撃を受けた際に実際は死んでいないのにDeadのエフェクトが表示されます
主にフリーズブレイクでの発生が顕著です
GS防死は全員に付加済みです

Y’s さんのコメント...

ご報告ありがとうございます。
ではひとつずつ…

-ヒュプノスラッシュ
精神攻撃部分の属性は念で合ってます。アイコンの指定ミスです。

-ガードブレイク
割ってる箇所を見る限り防御状態も撤去したかったと思われますが、厳重に"ディフレクトを受けている"フラグをチェックしているために意味のないものになってしまっています。
通常の防御も割れるよう修正します。


-沙耶に収める
説明を書く際になにか勘違いをしていたか、変更を考えていたと思います。
鞘buffを拡張技のみに変更し、待機状態をディフレクトの一種になる方向へ。

-九十九針
武器欄に装着するものの武器ではないですし。こんなもので。

-Dead
実は即死攻撃部分の命中エフェクトなので、即死判定前に表示されます。仕様です。

匿名 さんのコメント...

回答と修正対応ありがとうございます
自分は前衛で長柄ディフレクトを割と多用するスタイルというのもあって
納刀がディフレクト技になると今までなかったディフレクト被りという状況が多々発生しそうなのですが
実際複数からディフレクトを受けてる時の挙動がどうなるのかは少し気になってる所です

以下気になった点の報告になります

-バレットスター
投げつけるが重量物投擲型の殴打属性のものになっています
実際それなりに重量のある武器なのでそこまで間違ってない気もしますが
最初に敵に投げつけた時の打撃音でかなりの違和感を覚えたのでとりあえず

-爪
他の基本技よりも明らかに威力が高く、威力DどころかC以上はありそうです
最初は刀や弓の技のように武器性能よりキャラ能力への依存度が高いのかとも思っていましたが
ステ傾向が大きく異なるキャラに使わせた時の差を見るにどうもそれとも違う雰囲気です
敵が使ってくる爪も全体的に妙に威力が高いですし……

-閻魔の視線
刃殴耐性しか下げられないはずの魔法ですが、DF低下:2の状態異常説明では毒属性まで含まれてしまっています

-GS鑑別
鑑別Lv4で敵のレベルを大きく上回っている場合でも登場時は不確定がかなり多い印象です
特にB8以降は登場時不確定がほぼ当たり前の状況になっていました
行動や攻撃した時は大体一発で判別されるのでその落差が気になった次第です

最新の投稿