※解説修正情報※
2013-02-06:永続ターゲットについて少し追記
2013-01-25:HitDefのStateTyp属性の補完について。
2013-01-24:MoveTypeに依存しないことが判明


■ReversalDef【当て身投げ用攻撃判定定義】

▼概要
自分の攻撃判定枠相手のHitDefの指定された攻撃判定枠とが重なった時にヒットさせる攻撃判定定義。
相手側のSC-/HitDefで指定された攻撃属性が合致した場合のみヒットする。
(※SC-/HitDefの他、Attrの指定されたSC-/ReversalDefの相手にもヒットする。)
SC-/Projectileは対象外。仕様上HitDefとは併用できない。
ステートが移動するか、HitDefなどが実行されるまで定義は持続する。
オプションのP2StateNo(相手のステートを奪う)と合わせて当て身投げなどに用いられる。
SC-/HitDefと異なりMoveType=Iでも機能する。
また相手のMovetypeがIであってもHitDefが実行されていれば機能する。
なおReversalDefに対する無敵は基本的に存在しない。(無いわけではない)
攻撃定義
通常攻撃定義:SC-/HitDef
当て身投げ用定義:SC-/ReversalDef
飛び道具射出:SC-/Projectile

▼必須記述
Reversal.Attr = (Attr文字列型) ;攻撃属性を指定する
  • 指定方法はHitDefのAttrと同様
  • 自分と相手で指定した属性同士が重なっている場合のみヒットする。
    • 自分も相手も含め、攻撃属性にStateType属性の指定が無い場合ReversalDefはヒットしない
      • ただしHitdefのStateType属性は一定条件で補完されることがあり、その場合はヒットする。
    • 細かくは攻撃属性のページを参照。

▼オプション
PauseTime = (自分側/Int型),(相手側/Int型)
SparkNo = (ヒットエフェクト番号or-1 Int型)
SparkXY = (ヒットエフェクト位置X/Int型),(Y/Int型)
HitSound = (ヒット音声番号or-1 Int型)
P1StateNo = (ヒット時に自分が飛ぶステート Int型)
P2StateNo = (ヒット時に相手を引き込むステート Int型)
  • と、ステートコントローラー一覧のサイトには書かれている。
    • ただ実際はこの他にも細かい数値は指定可能。
    • 検証不足だが、以下のオプションも使用可能。
ID = (Int型);
Fall系(この他にも可能そう)
Fall = (bool型);
Fall.recovery = (bool型);
Fall.damage = (Int型);
  • なおDamageは使用不可。


■Lv1-記述例・補足・注意点

記述例
[State a, ReversalDef]
Type = ReversalDef
Trigger1 = !time ;ステートを読み込んだ時点のみ
Reversal.Attr = SCA,AA ;攻撃属性指定:全ての打撃
PauseTime = 30,30 ;一時停止(30/60)秒
SparkNo = -1 ;ヒットエフェクト無し
HitSound = -1 ;ヒット音声無し
P1StateNo = 801 ;自分は801番ステートへ飛ぶ
P2StateNo = 805 ;相手を805番ステートへ引き込む
  • 打撃に対する当て身投げ。自分を801番へ相手を805番へ移動させる。

補足
  • 攻撃属性の扱いについて、細かくは該当のページを参照。
  • 攻撃としての優先度はHitDefよりも高く、ヒットすれば相手の攻撃はヒットしない。
    • ReversalDefが出ていても自分の攻撃判定枠に相手のHitDefの攻撃枠が重ならないとヒットしない。
    • 仮にその状態で自分のくらい判定にのみ相手の攻撃判定が重なっていれば相手の攻撃のみヒットする。
    • Projectileにはヒットしないため攻撃属性が合っていても、Projectileが一方的にヒットする。
  • トリガーMoveReversedはReversalDefに取られた相手側の情報。
    • ReversalDefであたった場合はHitDef同様MoveHitが機能する。
  • 1キャラの中でHitDefとReversalDefはどちらかしか使えない。
    • HitDefが既に発生している状態でReversalDefを発生させるとHitDefは消える。
    • ReversalDefが発生している状態でHitDefを発生させるとReversalDefは消える。
      • なおProjectileは別管理のため両立可能。
    • またステートが変更された場合もReversalDefは消える。
  • Movetypeには依存しないため事前にMoveType=Aを設定する必要はない。
    • ただ慣例的にMovetype=Aであるほうが望ましい、かと。
  • 一度実行されるとステートが変更されるか、
    SC-/HitDefSC-/ReversalDefが新たに実行されるまで持続。
    • 一度の実行では一人の相手には一回しか命中しない
    • HitOnceが0の場合、別々の相手であれば同時でなくても複数回命中する
      • 例:一度ReversalDefがヒットした後ステートを変更せず持続させた場合、
        同じ相手にはReversalDefが機能せず、それ以外の相手にはヒットできる。

注意点
  • ReversalDefで取得できるのはあくまでHitDefに限り、Projectileにはヒットしない。
    • Hitdefがあり攻撃判定さえ重なればHitDef側がMovetype=Iであっても取れる
  • HitDefをもっているならHelperであってもステートを奪えてしまう。分身の危険があるため、基本的にAP(飛び道具)は指定する際はP2StateNoは使用しないほうが良い。
    • 尤も、Helperに使う攻撃属性のStatetype属性が空白であればReversalDefに当たらないが。
  • ReversalDefにヒットした相手側のNotHitBy,HitByの無敵を全て消失させる処理を行なっている。
  • P2StateNo系統についてはHitDefと同様の注意が必要
  • ヒットした後のNotHitByの系統はReversalDefを置いているステートでも行ったほうがいいとのこと。
  • Win版以前?ではP1StateNoによるステート移動時T-/PrevStateNoが更新されないバグがあるとのこと。
    • 1.0では修正されている、とのこと。

Attr設定
  • 実はAttr=攻撃属性を設定することが可能。
  • ただしAttrを指定したReversalDefは、属性が一致している相手のReversalDefがヒットする
  • SC-/HitOverrideによるP2StateNo指定攻撃の無効化がReversalDefでも働くようになる。



■Lv3-細かい応用

+ ■Lv3-飛び道具判定消し処理

■飛び道具判定消し処理

Helper型飛び道具にP2StateNoを指定してないReversalDefをヒットさせることで攻撃判定を打ち消す手法がある。
その際同時に味方側のHitDefの攻撃判定がそのHelper型飛び道具のくらい判定とも重なっていた場合、NotHitByなどを指定していても、Helper型飛び道具にHitDefの攻撃判定が命中することがある。
(ReversalDefでNotHitByの無敵が剥がれる→無敵が剥がれた所にHitDefが命中してしまう)
Helper側の注意点だがHitOverrideを全属性指定しておかないと通常のくらいステートへ行き分身となってしまう。

+ ■Lv3-HitDefのキャンセル

■HitDefのキャンセル

HitDefそのものをキャンセルする方法は、Movetype!=Aにしたりステートを移動したりするのが基本だが、
Reversal.Attrを空にして実行することでもHitDefをキャンセルでき、自分の攻撃が一切命中しない状態にできる。
HitDefを更新を行い一定条件でキャンセルするといった処理用。
一応HitDefのHitFlagを空にしても同じようにできる、はず。
欠点として、後述している永続ターゲット状態になるため、Target系の細かい処理をしている場合は注意が必要。
HitDefのAttrを空にするほうが現実的。


■Lv-4-バグ応用

+ ■Lv4-永続ターゲット

■永続ターゲット

ReversalDefは相手側がMovetype!=Hの状態でもTargetを取ることができる仕様の関係のためかReversalDefが発生している間は相手のMovetypeがH以外であってもTargetを失わないという処理になっている。しかもHitDefでTargetを取った後にReversalDefを出し続けてもTargetを保持できる。
この仕様が通称永続ターゲットバグ
  • HelperとTargetLifeAddなどと組み合わせて毒攻撃などを再現したりするのに利用される。
  • 欠点としてTargetを保持し続けてしまう関係上、画面に表示されるヒットカウントがリセットされない不具合も起きる。Targetを手放せばちゃんとリセットされるようになる。
  • ちなみに相手がStateNo=5150(死亡ステート)に飛ばれてもTargetを保持できる。
    • それどころかHelperをTargetとした際、相手Helperが消えてもTargetの関係は残る。
※ただし
  • Reversal.Attrは,AAなど攻撃属性が必要かも?
  • ステートを移動した場合はReversalDefが途切れる?ためか
    • ステートを移動した時に相手が通常外れる状態ならTargetは外れる?
  • Lifeが0になり死亡した場合、Targetが外れる処理が入るためTargeは維持できない?


最終更新:2014年10月11日 20:32