- ※解説修正情報※
- ●2014-12-04:防御力の補正について修正。防御力の補正係数値の存在を確認。
- ●2013-04-25:TargetLifeAddの回復時
- ●2013-02-17:HitFallDamageが一部HitFalDamageになってたのを修正
- ●2013-02-11:防御力の計算式を修正
■ダメージについて
- 補正値
- 攻撃力の値(ヒットDamageに影響)
- 防御力の値(ヒットDamage・削りDamage、Absolute=0のLifeAdd系ステコンに影響)
:|
補正値による小数数値の扱いは不明。※検証不足
推定四捨五入? 1未満になった場合は切り上げ1?
- ■Damageの処理
- SC-/HitDef・SC-/Projectileの命中時、
設定されたDamage値を元に体力を減少させる。(ReversalDefは含まない)
- T-/GetHitVar()のGetHitVar(Damage)から参照できる。
- Damage値は攻撃側の攻撃力・くらった側の防御力によって補正を受ける。
- ガードの場合は攻撃力の補正を受けず、防御力の補正のみ受ける。
- Damage値は通常Lifeより大きな数値にならない
- 設定のKillが0でDamage値がLifeより大きい場合、「Life-1」の値にまで下がる。
- ガードに対してはGuard.Killの値で判別される。
- 同時に複数のSC-/HitDefSC-/Projectileが命中した場合
- Damageは累積し、全てのDamageの合計値をDamage値として保存する。
- 複数ヒット時のKillの扱いについては不明。多分誰かがKill=1ならkill=1扱い?
- Damage値の保存は1Fのみ
- Damageでの減少処理のタイミングは「そのキャラのステート読み込みの後」
- Damage値計算は直前のフレームの最後で行われている。
- Movetype=Hでない場合は減少処理を行わない。
- なおSC-/HitOverrideが発動した場合でもMovetype=Hで留まると体力は減少する。
- 減少直後に生死判定が入る。
- ※Kill=0でもDamage値計算後、反映前にライフが減ると死ぬ可能性がある。
- ■Fall.Damageの処理
- ■SC-/TargetLifeAddの処理
- Target相手へのSC-/LifeAdd処理。以下対象Lifeと呼称。
- valueで指定した分、対象Lifeを増減させる。
- オプションのAbsoluteが0の場合、相手の防御力の補正を受ける。
- この防御力には防御力の補正係数が入っている。
- ただし正数値(回復)の場合、防御力補正を受けない。
- 自分側の攻撃力の補正は一切受けない。
- オプションのKillが0の場合、実行後対象Lifeが0の場合、対象Lifeは1になる。
- おそらくLife=0に対して発動しても1になる。
- Lifeが1になるだけで通常のDamageが1以上あると死ぬ
- Ignorehitpause=1で実行する必要があるが。
- ■SC-/LifeAddの処理
- SC-/TargetLifeAddの対象が自分になっただけ。
- valueで指定した分、Lifeを増減させる。
- オプションのAbsoluteが0の場合、防御力の補正を受ける。
- この防御力には防御力の補正係数が入っている。
- ただし正数値(回復)の場合、防御力補正を受けない。
- 攻撃力の補正は一切受けない。
- オプションのKillが0の場合、実行後Lifeが0の場合、Lifeは1になる。
- おそらくLife=0に対して発動しても1になる。
- Lifeが1になるだけで通常のDamageが1以上あると死ぬ
- Ignorehitpause=1で実行する必要がある、かな?
- ■SC-/Lifesetの処理
Lv1-補足解説
■死亡判定
上で説明している通り死亡の判定は「
そのキャラのステート読み込みの後」で行われる。
しかもタイミング的にはほぼDamageの直後。
SC-/AssertSpecialのNoKOが働いている間は死亡判定にはならない。
ただしNoKOが解けた時点でLife=0の場合は死亡する。
そのフレームにおいて死亡判定を行う前にNoKOが発動していない場合も死亡する。
その場合NoKOが無くなるか・制限時間が無くなるまで試合中の状態は終わらない。
- 補足:PauseTimeとPause,SuperPause
- SC-/PauseやSC-/SuperPauseが実行されている場合、
- MoveTimeを持たない停止しているキャラはステートの読み込みを行わないのだが、
- 動いている攻撃に命中するとPauseTimeの分=HitPause中は読み込みを行う(=動ける)ため
- Pauseでの停止中でも死亡する。なおPauseTimeがx,0設定の場合動けないので死亡しない。
- これは「PauseTimeでMoveTimeが更新される」せいであり、
- 他のSC-/Projectileの停止中の挙動などにも影響が出る仕様。
■DamageとLifeaddのバッティング
上記説明でも解説していたが、
Kill=0であっても通常のDamageとLifeAdd系が重複した場合死ぬ可能性がある。
Kill=0のDamageはDamage>=Lifeの時に「Life-1」のDamage値にするだけであり、
そこからDamage値計算後・反映前にLifeAddで-1でもしてしまうと、
Damage値=Lifeになってしまい、合計Lifeが0になって死亡する。
これはLifeAddがKill=0であっても起きるし、TargetLifeAddでも発生する。
なおLife自体が1の場合、Kill=0のDamageは計算後「0」になるため、
Kill=0のLifeAddでの減算と重複しても同じような状態で死ぬことはない。
■LifeAdd、TargetLifeAddの攻撃力設定値の反映
攻撃力設定を反映させたい場合
- 最低1保証型「Value = Ceil(設定値*(Const(Data.Attack)*0.01))」
- 四捨五入型「Value = Floor(設定値*(Const(Data.Attack)*0.01)+0.5)」
■Helperの体力
Lv4-バグではないが通常のキャラでは使用しな技術
■常時LifeAdd回復による対通常攻撃の死亡耐性
DamageはLifeの値までにしかならないことを逆手に取り、
致死量のDamageの攻撃を受けても、
Damage計算後・反映前に
LifeAddで+1するとDamageの減少が1足りず生き残る。
これが「
常時LifeAdd回復による対通常攻撃の死亡耐性」
この状態では
F1でLifeを0にした場合も生き残る。
通常のキャラではまず使わないが。
- 対通常攻撃の死亡耐性の突破方法
- 常時監視ステートでLifeAddを実行し続けているだけであれば、
- 相手の番号ステート内でLifeを減らしてやれば殺害することができる。
- なおTargetLifeAddは生死判定の前に常時監視ステートが挟まるため不可。のはず
- 力技:Damage値をオーバーフローさせれば突破可能な場合もある。
最終更新:2014年12月04日 10:21