• ※未検証部分がやや多いです。


※解説修正情報※
2014-12-04:防御力の補正について修正。防御力の補正係数値の存在を確認。
2013-04-25:TargetLifeAddの回復時
2013-02-17:HitFallDamageが一部HitFalDamageになってたのを修正
2013-02-11:防御力の計算式を修正


■ダメージについて

基本的にはSC-/HitDefSC-/Projectileが命中した際に起きる体力減少処理のこと。
広義としては通常のダメージの他、SC-/HitFallDamageSC-/TargetLifeAddのダメージ、
もっと広く言えばSC-/LifeAddSC-/LifeSetによるものも含まれる。

明確に区別する際は通常のダメージを「Damage」、SC-/HitFallDamageは「FallDamage」、
SC-/TargetLifeAddSC-/LifeAddSC-/LifeSetは、それぞれのステコン名で呼ぶ。

なお以下、単に攻撃と表現した場合SC-/HitDefSC-/Projectileの他
SC-/ReversalDefが含まれている場合もある。注意。

補正値
  • 攻撃力の値(ヒットDamageに影響)
    • File-/CNSファイルの[Data]のAttack(攻撃力)設定値+SC-/AttackMulSetの倍率。
    • 「 基本威力*(攻撃力値*0.01*倍率) 」が威力(Damage)となる。
    • SC-/AttackMulSet分は実行時点の数値。
      • 内部的には攻撃ステコン実行時点でDamage値を補正してる。
      • 例えばSC-/Projectile発射後、途中変動しても発射時点の攻撃力で威力が決定している。
    • なおガードされた場合の削りダメージは補正を受けない。
  • 防御力の値(ヒットDamage・削りDamage、Absolute=0のLifeAdd系ステコンに影響)
    • File-/CNSファイルの[Data]のDefence(防御力)設定値/防御力の補正係数
      • 「 威力 / ( (防御力/防御力の補正係数)*0.01 ) 」
      • 防御力の補正係数は1、もしくはSC-/DefenceMulSetの設定値に
        倒れ時の防御上昇やSc-/SuperPauseのP2DefMulなどの影響を受けた値。
    • 詳しい処理についてはSC-/DefenceMulSetを参照。
      • 重要1:Movetype=HかPauseTime適応中でなければ補正値は1倍にリセットされ補正がかからない
      • 重要2:倒れ防御上昇とSuperPauseの防御上昇は、現在の補正値に対する変動処理であり累積する。
      • 最重要:SC-/DefenceMulSet補正値を上書きするため、上記2種の修正値がリセットされる

:|
補正値による小数数値の扱いは不明。※検証不足
推定四捨五入? 1未満になった場合は切り上げ1?


■Damageの処理
  • SC-/HitDefSC-/Projectileの命中時、
    設定されたDamage値を元に体力を減少させる。(ReversalDefは含まない)
  • T-/GetHitVar()のGetHitVar(Damage)から参照できる。
  • Damage値は攻撃側の攻撃力・くらった側の防御力によって補正を受ける。
    • ガードの場合は攻撃力の補正を受けず、防御力の補正のみ受ける。
    • Damage値は通常Lifeより大きな数値にならない
      • ただし、SC-/HitOverrideの発動時に限り、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の処理
  • 攻撃に設定されたFall.Damageを保存しSC-/HitFallDamage実行時に反映。
    • Fall.Damageは攻撃力・防御力による補正を受けない
    • SC-/HitFallDamageを実行しなければ反映されない。
    • SC-/HitFallDamage実行時、指定値分体力を減少させ、保存値を0にする。
    • 保存値はT-/GetHitVar()のGetHitVar(Fall.Damage)から参照できる。
  • 減少タイミングはステートコントローラー実行時。T-/LifeAddに近い。
    • Fall.Killという設定値が存在するが、機能しない?
  • SC-/HitFallDamageCommonステートの内部で指定されている
    • 5100番ステートにTime=3条件で
    • 5110番ステートに!Time条件で
  • SC-/HitFallDamageが実行されない場合、保存値は保持し続ける。
    • 保存した状態で自ら5100番や5110番へ飛んだ場合、ダメージを受ける。
      • 自身の技の演出などで新たな攻撃を受けずにそれらに飛んだ場合も?

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の処理
  • Lifeを指定値にする。
  • 0にすれば死ぬ。


Lv1-補足解説

■死亡判定

上で説明している通り死亡の判定は「そのキャラのステート読み込みの後」で行われる。
しかもタイミング的にはほぼDamageの直後。
SC-/AssertSpecialのNoKOが働いている間は死亡判定にはならない。
ただしNoKOが解けた時点でLife=0の場合は死亡する。
そのフレームにおいて死亡判定を行う前にNoKOが発動していない場合も死亡する。
その場合NoKOが無くなるか・制限時間が無くなるまで試合中の状態は終わらない。

補足:PauseTimeとPause,SuperPause
SC-/PauseSC-/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)」
なお、書いてある通りSC-/AttackMulSetの影響は受けない。
必要ならSC-/AttackMulsetの設定値をT-/Fvar()で管理し、計算に入れると良い。

■Helperの体力

SC-/Helperのキャラは基本的に本体と同じ最大値(LifeMax)T-/Lifeを持って生成される。
プレイヤーキャラと同じダメージ処理を行い、体力が0になれば死亡判定が行われる。


Lv4-バグではないが通常のキャラでは使用しな技術

■常時LifeAdd回復による対通常攻撃の死亡耐性

DamageはLifeの値までにしかならないことを逆手に取り、
致死量のDamageの攻撃を受けても、
Damage計算後・反映前にLifeAddで+1するとDamageの減少が1足りず生き残る
これが「常時LifeAdd回復による対通常攻撃の死亡耐性
この状態ではF1でLifeを0にした場合も生き残る。
通常のキャラではまず使わないが。

対通常攻撃の死亡耐性の突破方法
常時監視ステートでLifeAddを実行し続けているだけであれば、
相手の番号ステート内でLifeを減らしてやれば殺害することができる。
なおTargetLifeAddは生死判定の前に常時監視ステートが挟まるため不可。のはず
  • 力技:Damage値をオーバーフローさせれば突破可能な場合もある。


最終更新:2014年12月04日 10:21