Commonステート


※解説修正情報※
2015-10-08:演出用ステート移動の文言を修正。
2014-12-04:ダウン時の防御上昇について修正。!Timeのフレーム終了時点で発生。
2014-04-13:ダッシュからの屈み移行での速度について
2014-03-25:Ctrlとガードについて追記
2013-02-08:5150番の表記が間違っていたのを修正
2013-01-27:5150番、死亡ステートについて追記
2013-01-13:140番のガード持続について追記 再 再・多分確定


Common1.cnsのCommonステートについてのページです。
ステートの基本については割愛
ページ内検索では「StateNo=番号」で目的のステートを検索。

方針メモ
  • 頑張ってリストアップしてまとめたい

Commonステートの基本
  • 汎用ステート。全てのキャラで存在していないといけないステート。
  • File-/DefファイルstcommonCommon1.cnsの場合、MUGENのData内のファイルを使用する。
    • キャラ固有のCommonステートを作成する際は、Common1.cns以外のファイル名にする必要がある。
  • StCommonのステート記述としての優先度は低い
    • stファイル側にStCommonと同じステート番号が無ければStCommonのステートを使用する。
    • stファイル側で同じ番号のステートがあればその番号のStCommonのステートは読み込まない。

分類予定表



  • !Timeは「Time=0」のこと。Common内では大体Time=0表記。
  • ★Persistent=0の記述は該当する説明冒頭に★を。
    • Persistent=0の場合、そのステート内にいる最中は1度しか処理しない。
    • ステートを移動した後なら、再度一回のみ処理を行う。

基本動作

+ ■Ctrlと基本動作について
■Ctrlと基本動作について
  • キャラがCtrl=1の場合、方向キーを入れることでMUGEN側が自動でステートの変更を行う
    • この自動ステート移動はPause,SuperPauseで動けない最中でも番号ステートの番号のみ変更されている。
  • StateType=S(立ち)
    • ↓でStateNo=10(屈み移行)へ 加えてVel X(横速度)を0にする。
      • ※StateNo=100(前ダッシュ)からの屈み移行では速度は変化しない
    • ←か→でStateNo=20(歩き)へ StateNo=20の場合はステートを維持。
      • StateNo=20の場合、←か→方向キーを放すとStateNo=0へ 同時押しでも可。
      • ガードが可能な場合は後ろ歩きへ移動しない
    • ↑でStateNo=40(ジャンプ始動)へ
  • StateType=C(屈み)
    • ↓でステートを維持
    • ↓以外でStateNo=12(立ち上がり)へ
  • StateType=A(空中)
    • ↑で空中ジャンプが可能な場合、StateNo=45(空中ジャンプ)へ
  • InGuardDist&&movetype!=Aで、Noguardが無い場合
    • 後ろへ方向キーを入れると、StateNo=120(ガード始動)へ
    • 後ろへ方向キーを入れた状態で攻撃が命中した場合ガードになる。
    • ガードステート内ではガード始動へ移らない。

これらのステート移行処理は基本フレームの開始時に行われる。
(攻撃が命中してガードになる処理を除く。)

Lv1-補足・注意点

補足
  • 立ちステートで相手が後ろに回った場合、Anim=5になって振り向く。
  • 屈みステートも同様で、相手が後ろだと、Anim=6になって振り向く。
  • AssertSpecialのNo○○が発生した次のフレームでは該当する自動移行処理が行われない。
    • ガード系 NoStandGuard NoCrouchGuard NoAirGuard
    • NoAutoTurn(振り向き) NoWalk(歩き)

AI制作時の注意点
  • AIで用いるChangeStateは、AssertSpecialの影響を受けないため条件を追加する必要がある。
  • MUGEN側のAIが入っていると勝手に動いてしまい、コンボなどを失敗することもある。
  • 空中ジャンプの回数管理ができないため、管理したい場合、特別な仕様にする必要がある。
  • AIにしゃがみをさせようとするとすぐに立ち上がろうとしてしまい、うまくしゃがみを維持できない。

+ Lv2-AI用・行動抑制記述
AI用・行動抑制記述
行動を抑制させる簡易記述
[State -1, Auto Moving Cancel];自動行動抑制、この記述をAIの最後尾に記述する
Type = ChangeState
Value = 0 ;立ちに戻る
TriggerAll = *AI起動条件* ;AI条件を入れないと手操作でも動けなくなる。
TriggerAll = !Time && Ctrl;MUGEN側でステートを変更した。
Trigger1 = StateNo = 10 ;屈み
Trigger2 = StateNo = 20 ;歩き
Trigger3 = StateNo = 40 ;ジャンプ
;なおこれだけだと不自然に立ち状態になることもあるので調整すること

+ Lv3-AI用・AIに任意の空中ジャンプをさせるために
AI用・AIに任意の空中ジャンプをさせるために
ChangeStateを使った空中ジャンプは空中ジャンプの回数制限に引っかからない。
回数制限をしAIに任意の空中ジャンプをさせるには
CNSファイルにある[Movement]のairjump.numを0に設定して
MUGEN側で空中ジャンプをできないようにしておき、
ChangeStateとVarを利用して空中ジャンプをさせるようにする必要がある。
+ AI用ジャンプ記述例
;使用Var Var(*AirJump用Var*) Var(*AIフラグ*)
■本体に対応させる記述
[State -1, Air Jump];手操作側のジャンプ
Type = ChangeState
Value = 45 + ( Var(*AirJump用Var*):= (1+Var(*AirJump用Var*)) )*0;ジャンプ回数を加算
TriggerAll = !Var(*AIフラグ*) ;AIフラグ無し
TriggerAll = StateType = A && Ctrl && Pos Y < -1*Const(Movement.AirJump.Height);前提条件
TriggerAll =(Var(*AirJump用Var*)&1073741823)< *AirJump.Num* ;ジャンプ回数制限
TriggerAll =(Var(*AirJump用Var*)&1073741824)= 0 ;上レバー制限
Trigger1 = Command = "holdup"
;これで設定可能なジャンプの最大回数は1073741823回まで。それは準無限ジャンプです。
[State -1, Air Jump Not Holdup];一度レバーを上以外にしなければいけない。
Type = Null
Trigger1 = Command = "holdup"
Trigger1 = 1|| Var(*AirJump用Var*):= (Var(*AirJump用Var*)|1073741824)
Trigger2 = StateType = A
Trigger2 = Command != "holdup"
Trigger2 = 1|| Var(*AirJump用Var*):=((Var(*AirJump用Var*)|1073741824)-1073741824)
[State -1, Air Jump Num Reset];回数制限リセット
Type = Null
Trigger1 = StateType != A
Trigger1 = 1|| Var(*AirJump用Var*):= (Var(*AirJump用Var*)&1073741824);リセット
■AI側の記述
[State -1, AI Air Jump]
Type = ChangeState
Value = 45 + ( Var(*AirJump用Var*):= (1+Var(*AirJump用Var*)) )*0;ジャンプ回数を加算
TriggerAll = Var(*AIフラグ*) ;AIフラグあり
TriggerAll = StateType = A && Ctrl && Pos Y < -1*Const(Movement.AirJump.Height);前提条件
TriggerAll =(Var(*AirJump用Var*)&1073741823)< *AirJump.Num* ;ジャンプ回数制限
Trigger1 = **** ;AI用の条件
  • 引用元:ADIのMUGENメモ

基本動作

+ ■StateNo=0【ニュートラル・立ち】

■StateNo=0 【ニュートラル・立ち】

立ちステート。普通のキャラは何もしていないとこのステートで待機する。
なお試合開始時は一斉にCtrl=1,StateNo=0になって試合を始める。

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S
  • アニメを立ちにする
    • 振り向きに対応
  • !Timeで縦速度を0にする
  • 横速度が遅いorTime=4で横速度を0にする
  • もし死んでいたら5050へ移行する

Lv1-補足・注意点

注意点
  • このステートそのものにはCtrl=1にする記述が無い。
    • ステートを立ちへ戻す場合、ChangeStateなどにCtrl=1を忘れずに。
    • このステートにCtrl=1を置くのはやめておいた方が良い。フライングの原因になる。

+ Lv2-細かいバグ回避

Lv2-細かいバグ回避

分身を消す
  • このステートにDestroySelfを置き、分身してしまったキャラを最終的に消す手法がある。


+ ■StateNo=10【屈み移行】

■StateNo=10 【屈み移行】

立ちステートから屈みステートへ移行する。
StateType=S&&Ctrl=1から方向キー↓でこのステートへ飛ぶ。

内容,記述
  • 冒頭オプション
    • StateType=C Psysics=C Anim=10
  • !Timeで横速度を減らす
    • ※Ctrl=1の操作で屈みへ移行しようとすると横速度は0になる
    • ※例外的にStateNo=100(前ダッシュ)からの屈み移行では速度は変化しない
  • アニメが終わり次第、stateNo=11(屈み待機)へ

+ ■StateNo=11【屈み待機】

■StateNo=11 【屈み待機】

屈みステート

内容,記述
  • 冒頭オプション
    • StateType=C Physics=C Anim=11
  • 振り向きアニメ時、アニメが終わったら屈みアニメに戻す。

+ ■StateNo=12【立ち上がり】

■StateNo=12 【立ち上がり】

立ち上がりステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S Anim=12
  • アニメが終わったらStateNo=(立ち)へ

+ ■StateNo=20【歩き】

■StateNo=20 【歩き】

歩行ステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S
  • 速度を方向キー前側ならConst()の前歩き速度に設定
  • 速度を方向キー後ろ側ならConst()の後ろ歩き速度に設定
  • 速度が前で前歩きアニメでなければ前歩きアニメに
    • 振り向きアニメ中の場合アニメ終了まで待つ
  • 速度が後ろで後ろ歩きアニメでなければ後ろ歩きアニメに。
    • 振り向きアニメ中の場合アニメ終了まで待つ

Lv1-補足・注意点

注意点
  • ステートの基本処理は前後の方向キーが前提になっている。
  • InGuardDist=1でAssertSpecialのNoStandGuardが無い場合、方向キー後ろでStateNo=120(ガード始動)へ飛ぶ。

AI制作時の注意点
  • 内容そのままにStateNo=20へ飛ばしても歩くとは限らないし方向も選べない。
  • 調整をしないと本来ガード始動へ飛ぶ時でも後ろ歩きができてしまう。
  • 後ろ歩きをさせてもガードしてくれるとは限らない。
  • AssertSpecialのNoWalkはChangeStateに影響しなため、条件を入れないと歩けない時に歩けてしまう。
  • AssertSpecialのNoWalkはトリガー情報に存在しないため、条件はStateNo!=xxxなどで入れることになる。

+ Lv3-AI用・歩き処理
AI用・歩き処理
いくつか方法はあるがAI用にCommand条件の代わりにAI用の条件を入れるのが基本。
;前歩き側
Trigger1 = Command = "holdfwd" && !Var(*AIフラグ*)
Trigger2 = var(*AIフラグ*) && P2BodyDist X > 20 ;AI用
;後ろ歩き側
Trigger1 = Command = "holdfwd" && !Var(*AIフラグ*)
Trigger2 = var(*AIフラグ*) && P2BodyDist X < 0 ;AI用
VelSetのステートコントローラー自体を複製してAI用の記述を入れてもいい。


+ ■StateNo=40【ジャンプ始動】

■StateNo=40 【ジャンプ始動】

ジャンプ始動ステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S Ctrl=0 Anim=40
  • !TimeでSysvar(1)を0にする
  • 方向キー前ならSysvar(1)を1にする
  • 方向キー後ろならSysvar(1)を-1にする
  • アニメ終了時Velsetをする
    • X速度はSysvar(1)に応じて速度を変更する
      • Sysvar(1)=0なら上ジャンプ速度のConst()
      • Sysvar(1)=1なら前ジャンプ速度のConst()
      • Sysvar(1)=-1なら後ろジャンプ速度のConst()
    • Y速度はConst()のジャンプ速度に。
  • アニメ終了時かつPrevStaateNo=100(直前がダッシュステート)でSysvar(1)=1の場合
    • VelSetでX速度にダッシュジャンプ速度のConst()を設定
  • アニメ終了時、Ctrl=1にしてStateNo=50(ジャンプ中)へ移動

Lv1-補足・注意点

注意点
  • 処理にはSysvar(1)が使われている。
  • Sysvar(1)=0にする処理は!Timeのみ。
    • その後前後キーを入れた後放しても、前後にジャンプをする。

AI制作時の注意点
  • 内容そのままにStateNo=40へ飛ばしても前後上どこへ飛ぶかは選べない。

+ Lv3-AI用・ジャンプ方向選択
AI用・ジャンプ方向選択
いくつか方法はあるがAI用にCommand条件の代わりにAI用の条件を入れるのが基本。
;Sysvar(1)=1側
Trigger1 = Command = "holdfwd" && !Var(*AIフラグ*)
Trigger2 = var(*AIフラグ*) &&( P2BodyDist X > 60 || P2MoveType = H );AI用
;Sysvar(1)=-1側
Trigger1 = Command = "holdfwd" && !Var(*AIフラグ*)
Trigger2 = var(*AIフラグ*) && P2BodyDist X < 30 ;AI用
Varsetのステートコントローラー自体を複製してAI用の記述を入れてもいい。


+ ■StateNo=45【空中ジャンプ始動】

■StateNo=45 【空中ジャンプ始動】

ジャンプ始動ステート

内容,記述
  • 冒頭オプション
    • StateType=A Physics=N Ctrl=0 Velset=0,0
  • アニメ44番が存在するならアニメを44に変更。
  • アニメ44版が存在しないならアニメを41に変更。
  • 以下通常のジャンプステートとほぼ同様。Const()は違うけど。
  • 方向キー前ならSysvar(1)を1にする
  • 方向キー後ろならSysvar(1)を-1にする
  • Time=2でVelsetをする
    • X速度はSysvar(1)に応じて速度を変更する
      • Sysvar(1)=0なら上ジャンプ速度のConst()
      • Sysvar(1)=1なら前ジャンプ速度のConst()
      • Sysvar(1)=-1なら後ろジャンプ速度のConst()
    • Y速度はConst()のジャンプ速度に。
  • Time=2でCtrl=1にしてStateNo=50(ジャンプ中)へ移動

Lv1-補足・注意点

基本的に地上ジャンプと同様。

注意点
  • 処理にはSysvar(1)が使われている。
  • Sysvar(1)=0にする処理は!Timeのみ。
    • その後前後キーを入れた後放しても、前後にジャンプをする。

AI制作時の注意点
  • 内容そのままにStateNo=45へ飛ばしても前後上どこへ飛ぶかは選べない。

+ ■StateNo=50【ジャンプ中】

■StateNo=50 【ジャンプ中】

ジャンプ中ステート

内容,記述
  • 冒頭オプション
    • StateType=A Physics=A
  • Sysvar(1)を0にする
  • !Timeでアニメを変更する。
    • 横速度がなければ41番
    • 横速度が前進なら42番
    • 上記以外であれば43番
  • ★上昇の勢いを失い現在のアニメ番号+3番のアニメがあれば現在のアニメ番号+3番に変更する。
    • 41~43+3番=下降モーションアニメ
    • この処理は一度のみ

+ ■StateNo=51【空中動作後】

■StateNo=51 【空中動作後】

空中行動を終えた後用のステート

内容,記述
  • 冒頭オプション
    • StateType=A Shysics=A
  • 処理無し

Lv1-補足・注意点

補足
  • 使い道は空中動作をした後にこのステートへ飛ばす用。
  • Ctrl=1にしてこのステートへ飛ばせば行動可能になる。
  • Ctrl=0のままであれば着地まで行動不可。

注意点
  • アニメを変更する記述がないため、適当なアニメに変更してこのステートへ飛ばす必要がある。

+ ■StateNo=52【着地】

■StateNo=52 【着地】

着地ステート。
Physics=Aの状態でステート処理後の速度計算の後、地面に到達していた場合、
自動でこのステートへ飛ばされ、再度ステート読み込みを行う。
処理についてはVelのページを参照

ガード:このステートではCtrl=0でも手動ガード処理でのガードが可能。
ガード始動するわけではない。

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S Ctrl=0 Anim=47
  • !Timeで縦速度を0に。
  • !Timeで座標を地面に。
  • Time=3でCtrl=1に。
  • アニメ終了時、Ctrl=1にしてStateNo=0(立ち)へ移動

Lv1-補足・注意点

注意点
Physics=Aの場合接地時に自動でこのステートへ飛ぶため
専用の着地ステートを作りたい場合はPhysics=Nにする必要がある。
このステートをPhysics=Aにすると永続のループが発生し処理が終わらずフリーズ状態に陥る

ダッシュ

番号100未満の基本動作と異なり100~119にMUGEN側による自動移行処理は無い。
使用される際は-1ステートなどにChangeStateが記述されている。
+ ■StateNo=100【ダッシュ】

■StateNo=100 【ダッシュ】

ラン型ダッシュステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S Anim = 100
  • 横速度をCnst()のダッシュ速度に
  • AssertSpecialのNoWalk(歩き無し)指定
  • AssertSpecialのNoAutoTurn(自動振り向き無し)指定
  • 方向キー前が離れた場合、StateNo=0へ移動

Lv1-補足・注意点

捕捉
  • ※StateNo=100(前ダッシュ)からのCtrl=1の屈み移行は速度が変化しない
注意点
  • 前方向キーが前提となっている。
  • AssertSpecialによりダッシュ状態を維持できるようにしている。

AI制作時の注意点
  • 内容そのままにStateNo=100へ飛ばしても方向キーが入力されてないため維持できない。
  • それを解決してStateNo=100にのみ飛ばす記述にしてもCtrl=1のためジャンプや屈みで勝手に動く。

+ Lv3-AI用・ダッシュ維持処理
基本的なラン型のダッシュを維持するためのもの。ステップや他の方式では異なるので注意

AI用・ダッシュ維持処理
いくつか方法はあるがAI用にCommand条件の代わりにAI用の条件を入れるのが基本
Trigger1 = Command != "holdfwd" && !Var(*AIフラグ*)
Trigger2 = var(*AIフラグ*) &&( P2BodyDist X < 20 || RundState != 2) ;AI用
しかしこれだけではジャンプや屈みで動作を変更してしまうのでもう少し調整が必要

アニメの制御を変更する
[State 100, changeanim];StateNo=100冒頭のAnim=100を削り、これを挿入する。
type = ChangeAnim
Trigger1 = Anim != 100 ;ダッシュアニメでない
value = 100 ;ダッシュアニメにする
勝手にダッシュ以外になった場合戻す
自動行動抑制と併用する場合はこちら側を上にする。
[State -1, Auto Moving Cancel - After Run];AI記述の最後尾に置く。
Type = ChangeState
Value = 100 ;ダッシュに戻る
TriggerAll = *AI起動条件* ;必須
TriggerAll = !Time && Ctrl && PrevStateNo = 100 ;勝手な動作認識
Trigger1 = StateNo = 10 ;屈み
Trigger2 = StateNo = 40 ;ジャンプ
Trigger3 = StateNo = 120;ガード※不要なら削除



+ ■StateNo=105【バックステップ】

■StateNo=105 【バックステップ】

ステップ型ダッシュステート
例外的にPhysics=Aによる自動着地処理が行われないステート番号

内容,記述
  • 冒頭オプション
    • StateType=A Physics=A Anim=105 Ctrl=0
  • !Timeで速度をConst()のバックスッテプ用速度に。
  • Time=2でCtrl=1に。
  • 着地時にChangeStateでStateNo=106へ移動

Lv1-補足・注意点

注意点
  • 基本的に調整されていないキャラを探すほうが難しそうなほど調整されることが多い
  • 例外的にPhysics=Aによる自動着地処理が行われないステート番号のためChangeStateは必須
    • 反対に言うと自動着地が機能していないため、着地処理用のChangeStateが機能している。
    • このChangeState記述を他のPhysics=Aのステートで行おうとすると自動着地の方が早く機能しない。

+ ■StateNo=106【バックステップ着地】

■StateNo=106 【バックステップ着地】

ステップ型ダッシュの着地ステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S Ctrl=0 Anim=47
  • !Timeで縦速度を0に。
  • !Timeで座標を地面に。
  • Time=2に土埃エフェクトを表示。
  • Time=7でCtrl=1にしてStateNo=0(立ち)へ移動


+ ''■StateNo=110 利用されていないステート''

■StateNo=110 利用されていないステート

Z軸用のステップ型ダッシュステート-
空中ダッシュのステートなどに書き換えても問題ない。

内容,記述
  • 冒頭オプション
    • StateType=S Physics=N
  • !TimeでCtrl=0に。
  • !Timeでアニメを110に
  • !Timeで30Fの間投げ技しか当たらないように。
  • !TimeでZ軸の速度を-7に。
  • Z軸の速度を毎フレーム*0.8する。
  • アニメの終わりの8F前にZ速度を0に。
  • アニメ終了時、Ctrl=1に。
  • アニメ終了時、StateNo=0へ移動。

+ ''■StateNo=115 利用されていないステート''

■StateNo=115 利用されていないステート

Z軸用のステップ型ダッシュステート+
通常使われてないので書き換えても問題ない。

内容,記述
  • 冒頭オプション
    • StateType=S Physics=N
  • !TimeでCtrl=0に。
  • !Timeでアニメを110に
  • !Timeで30Fの間投げ技しか当たらないように。
  • !TimeでZ軸の速度を7に。
  • Z軸の速度を毎フレーム*0.8する。
  • アニメの終わりの8F前にZ速度を0に。
  • アニメ終了時、Ctrl=1に。
  • アニメ終了時、StateNo=0へ移動。



ガード動作

ガードの処理・注意点については該当ページ参照。
AIのガード制御についてはAI-/ガードのページつくってまとめよう。
注意点とかは共通のため専用ページにて解説。ここではステート処理のみ
+ ■StateNo=120【ガード始動】

■StateNo=120 【ガード始動】

ガード始動ステート
ガードできる状態で方向キー後ろでこのステートへ飛ぶ。

内容,記述
  • 冒頭オプション
    • StateType=U Physics=U 状態を変更しない。
  • !TimeでStateTypeに合わせてアニメを変更。120,121(C),122(A)
  • !TimeでStatetypeに合わせてPhysicsを設定×3
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • アニメ終了時、Statetypeに合わせてステート移動。130,131(C),132(A)
  • 方向キー後ろが入力されていなければ140番ステートへ移動
  • InGuarddist(ガード可能判定)が無い場合も140番ステートへ移動

+ ■StateNo=130【立ちガード】

■StateNo=130 【立ちガード】

立ちガードステート

内容,記述
  • 冒頭オプション
    • StateType=S Physics=S
  • アニメが130番でなければ130番に。
  • 方向キー↓が入力されているなら131番屈みガードへ移動。
  • 方向キー後ろが入力されていなければ140番ステートへ移動
  • InGuarddist(ガード可能判定)が無い場合も140番ステートへ移動

+ ■StateNo=131【屈みガード】

■StateNo=131 【屈みガード】

屈みガードステート

内容,記述
  • 冒頭オプション
    • StateType=C Physics=C
  • アニメが131番でなければ131番に。
  • 方向キー↓が入力されていなければ130番立ちガードへ移動。
  • 方向キー後ろが入力されていなければ140番ステートへ移動
  • InGuarddist(ガード可能判定)が無い場合も140番ステートへ移動

+ ■StateNo=132【空中ガード】

■StateNo=131 【空中ガード】

空中ガードステート

内容,記述
  • 冒頭オプション
    • StateType=A Physics=N
  • アニメが132番でなければ132番に。
  • 速度に通常の落下加速度を加算。
  • sysvar(0)を着地しているなら1に。
    • Sysvar(0)で縦速度を0に
    • Sysvar(0)で座標を地面に。
    • Sysvar(0)+方向キーが後ろ+ガード可能範囲内なら、130番へ
    • Sysvar(0)+↑で130に行かなかったら52番へ
  • 方向キー後ろが入力されていなければ140番ステートへ移動
  • InGuarddist(ガード可能判定)が無い場合も140番ステートへ移動

+ ■StateNo=140【ガード終了】

■StateNo=140 【ガード終了】

ガード終了ステート

内容,記述
  • 冒頭オプション
    • StateType=U Physics=U Ctrl=1
  • !TimeでStateTypeに合わせてアニメを変更。140,141(C),142(A)
  • !TimeでStatetypeに合わせてPhysicsを設定×3
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • 以下、MUGEN内部で処理されている
    • 140番ステートでの読み込み終了後、アニメとTimeの特定条件でステート移動
    • 0(S),11(C),51(A)に移動し、再度番号ステートを読み込み直す。
      • ※この処理を経由すると他のあらゆるステートでガードできる模様。通常利用しないが。
    • 基本的には気にしなくても良い。

140番からの自動ステート移動の条件
  • 「 アニメの総表示時間(ループが始まるまで)の時間 <= Time 」のもよう。
    • ただし最後のElemが表示-1F(永続表示)の場合は、即時。
    • 通常のAnimなら一巡表示し終わりループの開始する時点(=ループは見えない)で戻る。
      • 途中でChangeAnimした場合は、新しいループ地点までの時間-ここまでの時間<=140番にいる時間で戻る。
  • 基本的には気にしなくても良い。

+ ■LvX-上記の処理検証の方法
  • 140番自動ステート移動の処理検証方法
    • 140番ステートの!TimeでのChangeAnimを長めAnimに変更。(長い立ち動作とか)
    • わかりやすくするため0番ステートではPrevStateNo=140で40番(ジャンプ)へ-ChangeStateさせる。
    • Aボタンで140番へ飛ばせるようにし、どのタイミングでステートが戻りジャンプするか確認する。
    • またTime=20などで別のAnim(30F以上)へChangeAnimするようにして再度確認。
      • アニメ表示の途中(具体的には終わりの20F前)でジャンプするはず。l
    • 最後に最後尾が-1F(永続表示)設定のAnimを利用し確認。即時ジャンプするはず。
  • デバッグ表示の3段目(アニメ総表示F)と4段目の右端(Time)が 3段目<=4段目になるタイミングで戻っている。
    • 最後が-1F表示の場合、総表示Fの数値が-1になるため、即時戻るようになっている。

Lv1-補足・注意点

注意点
  • 自動ステート移動で飛んだ後、再度移動の条件を満たす状態で140へ戻されると
    永久ループが発生し、処理が終わらずフリーズ状態に陥る
  • 自動ステート移動が起きる際、StateType=Lの場合フリーズする。
    • 無闇にいじらなければ良い。

+ ■StateNo=150【立ちガード/HitShake硬直】

■StateNo=150 【立ちガード/HitShake硬直】

立ちガードステート・HitShake硬直中
このステートではノックバックはしない。

内容,記述
  • 冒頭オプション
    • StateType=S Movetype=H Physics=N velset=0,0
  • アニメを150番に。
  • HitShake硬直が終わったら151番、方向キー↓入れなら153番へ移動
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • 振動するゲームパッドを振動させるらしい。

+ ■StateNo=151【立ちガード/ノックバック】

■StateNo=151 【立ちガード/ノックバック】

立ちガードステート・ノックバック

内容,記述
  • 冒頭オプション
    • StateType=S Movetype=H Physics=S Anim=150
  • 攻撃に設定されていた速度を速度に反映(HitVelSet)
  • ノックバックのスライド時間か、攻撃の硬直が終わったらX速度を0に。
  • Ctrl硬直時間が終わったらCtrl=1に
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • 攻撃の硬直が終わったら130番へ

+ ■StateNo=152【屈みガード/HitShake硬直】

■StateNo=152 【屈みガード/HitShake硬直】

屈みガードステート・HitShake硬直中
このステートではノックバックはしない。

内容,記述
  • 冒頭オプション
    • StateType=C Movetype=H Physics=N velset=0,0
  • アニメを151番に。
  • HitShake硬直が終わったら151番、方向キー↓入れなら153番へ移動
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • 振動するゲームパッドを振動させるらしい。

+ ■StateNo=153【屈みガード/ノックバック】

■StateNo=153 【屈みガード/ノックバック】

屈みガードステート・ノックバック

内容,記述
  • 冒頭オプション
    • StateType=C Movetype=H Physics=C Anim=151
  • 攻撃に設定されていた速度を速度に反映(HitVelSet)
  • ノックバックのスライド時間か、攻撃の硬直が終わったらX速度を0に。
  • Ctrl硬直時間が終わったらCtrl=1に
  • 立ち状態で方向キー↓が入力されてるならStatetype=C、屈みに
  • 屈み状態で方向キー↓が入力されいないならStatetype=S、立ちに
  • 攻撃の硬直が終わったら131番へ

+ ■StateNo=154【空中ガード/HitShake硬直】

■StateNo=154 【空中ガード/HitShake硬直】

空中ガードステート・HitShake硬直中
このステートではノックバックはしない。

内容,記述
  • 冒頭オプション
    • StateType=C Movetype=H Physics=N velset=0,0
  • アニメを152番に。
  • HitShake硬直が終わったら155番番へ移動
  • 振動するゲームパッドを振動させるらしい。

+ ■StateNo=155【空中ガード/ノックバック】

■StateNo=155 【空中ガード/ノックバック】

空中ガードステート/ノックバック

内容,記述
  • 冒頭オプション
    • StateType=A Movetype=H Physics=N Anim=152
  • 攻撃に設定されていた速度を速度に反映(HitVelSet)
  • 速度に通常の落下加速度を加算。
  • Ctrl硬直時間が終わったらCtrl=1に
  • sysvar(0)を着地しているなら1に。
    • Sysvar(0)で縦速度を0に
    • Sysvar(0)で座標を地面に。
    • Sysvar(0)+方向キーが後ろ+ガード可能範囲内なら、130番へ
    • Sysvar(0)+↑で130に行かなかったら52番へ



特殊動作

※170(負け)・180(勝ち)のステートはサバイバルモードでのリザルトでも使われている
+ ■勝利ポーズ・試合終了の演出用ステート移動について

■勝利ポーズ・試合後の演出用ステート移動について

試合が終了した場合、勝ち負けに応じて演出用のステート移動が発生する。
170(負け),175(引き分け),180(勝ち)と設定されているのだが、
180番ステートはCommon1.cnsに存在しない。
各自でキャラに専用の勝利演出ステートを作る必要がある。

試合終了後の演出用のステート移動について※少々検証不足かも
  • 試合終了後の演出用のステート移動はT-/RoundStateが4で、設定分の時間経過が条件。
    • RoundState=4での待機時間はfight.defのover.wintime設定(通常45F)。
    • KOなどによって試合が決まった直後はRoundState=3になるのだが、
      そこからRoundState=4になるには条件がある。
    • 移行条件は、StateNo!=5150(死亡ステート以外)のプレイヤーキャラ全員が
      Statetype=S&&MoveType=I&&Ctrl=1であること。
      • ただし移行の判定はRoundState=3になってすぐに行われるのではなく
        fight.defの設定と試合状況で決められた時間が過ぎた後に移行判定が入る。
      • RoundState=3→4の移行は1Fでも全体の条件が揃えば行われる。
    • 上記の条件がしばらく適合しない場合も強制的にRoundState=4へ移行する。
  • RoundState=4で設定分時間経過した時点で、生存していれば他の状態に関わらず演出ステートへ移動する。
  • そのため速やかに円滑に試合を終わらせるには、自分を上記基移行条件へ移し、
    死んでいるならStateNo=5150で待機させる必要がある。
    • ステート奪取からの特殊KO演出のために相手へステートを返さない場合、死亡待機は5150で管理すること。
  • 演出の移動先(条件はAlive=1。死んでいる場合は移動しない。5150でも生きていれば移動。)
    • 敗北時:170
    • 引き分け時:175
    • 勝利時:180 ※Commonに存在しないステートのため各自用意する必要がある。
試合が円滑に終了しない問題
  • 条件に適合しないステートに留まり続けると通常のRoundState=3→4の移行が行われず、
    強制的にroundState=4になるまで待機し続けてしまい、円滑な試合終了処理が行われない
  • そのため試合が終了するタイミングにはRoundStateが移行するステートで待機すること
    • 通常は基本の立ちステートで移行を待つことになる。
    • 技の後の体勢で試合終了まで維持させたい場合、単にCtrl=0で待機させるのはNG
      • Varなどでフラグ管理をし、Ctrl=1で状態を維持するようにするのが望ましい。
      • ちなみに5150に入ればCtrl=0のまま演出ステート移動まで待機できるため
        上手く管理できればCtrl=1で待機するより確実
    • 技の演出で相手のステートを奪って特殊な死亡演出で待機させたい場合は、
      StateNo=5150で待機させるように記述を調整してそこで待機させること


+ ■StateNo=170【敗北演出】

■StateNo=170 【敗北演出】

負けアニメ表示

内容,記述
  • 冒頭オプション
    • StateType=S Ctrl=0 Velset=0,0 Anim=170
  • 全属性無敵にする。

+ ■StateNo=175【引き分け演出】

■StateNo=175 【引き分け演出】

引き分けアニメ表示

内容,記述
  • 冒頭オプション
    • StateType=S Ctrl=0 Velset=0,0
  • !Timeでアニメ175番が存在しないならアニメを170に変更。
  • !Timeでアニメを175場へ変更。
    • 存在しない場合、エラーが流れて170番のまま。
  • 全属性無敵にする。

■StateNo=180【勝利演出】※Common1.cnsには記述されていない。
+ ■StateNo=190【イントロ開始】

■StateNo=190 【イントロ開始】

イントロアニメへ変更

内容,記述
  • 冒頭オプション
    • StateType=S Ctrl=0 Velset=0,0
  • アニメ190番が存在するならアニメを190に変更。
  • !Timeで191番へ移動

+ ■StateNo=191【イントロ用】

■StateNo=191 【イントロ用】

イントロ用。ただしCommonのままだと即時立ちへ移動。

内容,記述
  • 冒頭オプション
    • StateType=S Ctrl=0
  • !Timeで0番へ移動 ※Ctrl=0のまま

+ ■StateNo=5500【コンテニュー画面】

■StateNo=5500 【コンテニュー画面】

コンテニュー? での表示。

内容,記述
  • 冒頭オプション
    • StateType=S Ctrl=0 Anim=5300 Velset=0,0
  • !Timeでアニメ5500番が存在するならアニメを5500に変更。

+ ■StateNo=5900【導入】

■StateNo=5900 【導入】

試合画面に入った時点でのステート。

内容,記述
  • 冒頭オプション
    • StateType=S
  • 自分が初めてのラウンドの場合
    • var,fvarを全て0にリセットする。
  • 始めのラウンドの場合190番ステートへ移動

VarはPersistindexの分ラウンドを持ち越されるが
これはチーム戦の場合も同様、のはず。そのためのVarのリセット。


やられ動作

T-/GetHitVar()を多用している。攻撃を受けた時点でCtrl=0に。
+ ■くらいステートの判別について+α
■くらいステートの判別について+α
状態・攻撃によって移行するステートが異なる。
Sなら5000へ、CでForcestand=0なら5010へ、1なら5000へ。
(※Forcestandは省略時、基本0、Y吹っ飛び速度が0以外なら1になる)
Aなら5020へ、LでY座標が0なら5080へ、LでY座標0以外なら5020へ。
またGround.Type=Tripの攻撃はStatetypeに関係なく5070へ飛ばす?

なお空中吹っ飛びでは「地面へ到達」の条件がいくつかあるが、
ステートやアニメによって地面の条件が異なる。
縦速度は一律Vel Y>0=落下中が条件になっている。

余談・くらいCommonのVeladd
なお空中くらい中の重力加速度加算はVelAddにより行われている、のだが、
ChangeStateの前に常時記述で置かれているため、
ChangeStateした時点では加算が重複してしまう処理になってしまっている。
綿密に作られたくらいCommonで大失敗している部分。
(Gracity→veladdへ差し替えた際に置き場所を変え忘れたっぽい記述だが。)
コレにより空中吹っ飛びに対する縦軸の速度計算にズレが生じてしまう。

+ ■ダウン追撃の防御力上昇について+起き上がりについて
■ダウン追撃の防御力上昇について+起き上がりについて
ダウン追撃への防御力上昇は5100と5070のフレーム終了時点(?)で発生する。
そのフレームに待機して1フレーム経過すると、防御力の補正係数が変動して防御力が上昇する。
重複するため何度もバウンドすれば、バウンドをする度にどんどん防御力は増える。
それらに待機しない場合、またそれらを経由しない場合もダウン時の防御力は増えない。
ただしSC-/DefenceMulを実行した場合、DefenceMul値が上書きされるためダウン上昇分は無くなる。
防御力の補正係数、DefenceMul値について詳しくはSC-/DefenceMulSetを参照。

起き上がり5120番への移動
起き上がりは5110番で倒れ待機時間が0になった場合自動で移動する。
倒れ時間はCNSのLiedown.timeの値を基本値に、STatetype!=Lリセット?
Statetype=Lになった時点から1操作毎に、残り時間が3/4される。
1操作は入力に加え、放す方も含まれる。押して放せば2操作分。


+ ■StateNo=5000【立ちくらい/ヒットシェイク】

■StateNo=5000 【立ちくらい/ヒットシェイク】

立ち状態からのくらい始動ステート。
屈みもforcestand=1の場合はこっち。←省略+Y吹っ飛び速度が0以外だと自動で1に。

内容,記述
  • 冒頭オプション
    • StateType=S MoveType=H Physycis=N Velset=0,0
  • !TimeでGetHitVar(AnimType)が[3,5]以外の場合、
    • getHitVar(GroundType)=1なら5000、それ以外で5010番台のアニメに。
    • そこにGetHitVar(AnimType)の分を加算。0~2を使用
  • !TimeでGetHitVar(AnimType)が[3,5]なら5030番アニメに
  • !TimeでGetHitVar(AnimType)が[4,5]で専用アニメがあるならそれに変更。
    • それぞれ5051,5052が対応する。
  • Time>0でアニメを現在のアニメ番号に変更し固定。
  • !Timeで吹っ飛び縦速度が0以外か、倒れ属性の場合、StateType=Aに。
    • また縦座標が0以外であっても、Statetype=Aに変更。
  • HitSHakeOverかつ吹っ飛び縦速度が0で倒れ属性も無しなら5001番へ移動。
    • それ以外の場合5030番へ移動
  • ★振動するゲームパッドを振動させるらしい。
    • この処理は一度しか実行しない。

+ ■StateNo=5001【立ちくらい/ヒットバック】

■StateNo=5001 【立ちくらい/ヒットバック】

速度を決定する立ちくらいステート。

内容,記述
  • 冒頭オプション
    • StateType=S MoveType=H Physycis=S
  • !TimeでHitVelSetのXを適応。
  • アニメが終了したらアニメを変更する。
    • 5005+GetHitVar(AnimType)+(GetHitVar(GroundType)=2)*10
      • なお3(back)は地上だと制限されて2(hard)扱いになる模様?
      • しかし4(up)は制限されないため、存在しないAnimを指定してしまう。
      • 5(diag-up)の場合、5010番を表示する。
  • TimeがGetHitVar(Slidetime)以上になった場合、毎フレーム4割減速。
  • HitOverで速度を0に
  • HitOverで防御力の倍率を1に
  • HitOVerで0へCtrl=1にして移動

+ ■StateNo=5010【屈みくらい/ヒットシェイク】

■StateNo=5010 【屈みくらい/ヒットシェイク】

屈み状態からのくらい始動ステート。
forcestand=1の場合は立ち用。←省略+Y吹っ飛び速度が0以外だと自動で1に。

内容,記述
  • 冒頭オプション
    • StateType=C MoveType=H Physycis=N Velset=0,0
  • !TimeでGetHitVar(AnimType)が[3,5]以外の場合、
    • 5020にGetHitVar(AnimType)の分を加算したアニメを使用。
  • !TimeでGetHitVar(AnimType)が[3,5]なら5030番アニメに
  • !TimeでGetHitVar(AnimType)が[4,5]で専用アニメがあるならそれに変更。
    • それぞれ5051,5052が対応する。
※あとは立ちくらいとほぼ同様、HitShakeOverからの移動が5011番なだけ。
  • Time>0でアニメを現在のアニメ番号に変更し固定。
  • !Timeで吹っ飛び縦速度が0以外か、倒れ属性の場合、StateType=Aに。
    • また縦座標が0以外であっても、Statetype=Aに変更。
  • HitSHakeOverかつ吹っ飛び縦速度が0で倒れ属性も無しなら5011番へ移動。
    • それ以外の場合5030番へ移動
  • ★振動するゲームパッドを振動させるらしい。
    • この処理は一度しか実行しない。

+ ■StateNo=5011【屈みくらい/ヒットバック】

■StateNo=5011 【屈みくらい/ヒットバック】

速度を決定する屈みくらいステート。

内容,記述
  • 冒頭オプション
    • StateType=C MoveType=H Physycis=C
  • !TimeでHitVelSetのXを適応。
  • アニメが終了したらアニメを変更する。
    • 5025+GetHitVar(AnimType)のアニメを使用
      • 立ち同様back(3)はhard(2)になるが、up(4)はそのまま適応されエラー。
      • diag-up(5)の場合は5030番アニメを使用。ちなみに直前も5030アニメ。
  • TimeがGetHitVar(Slidetime)以上になった場合、毎フレーム4割減速。
  • HitOverで速度を0に
  • HitOverで防御力の倍率を1に
  • HitOVerで11へCtrl=1にして移動

+ ■StateNo=5020【空中くらい/ヒットシェイク】

■StateNo=5020 【空中くらい/ヒットシェイク】

空中状態からのくらいステート。
倒れ状態でもY座標が0でない場合(主にバウンド中)もここへ飛ぶ。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N Velset=0,0
  • !TimeでGetHitVar(AnimType)が[3,5]以外の場合、
    • getHitVar(GroundType)=1なら5000、それ以外で5010番台のアニメに。
    • そこにGetHitVar(AnimType)の分を加算。0~2を使用
  • !TimeでGetHitVar(AnimType)が[3,5]なら5030番アニメに
  • !TimeでGetHitVar(AnimType)が[4,5]で専用アニメがあるならそれに変更。
    • それぞれ5051,5052が対応する。
  • Time>0でアニメを現在のアニメ番号に変更し固定。
  • HitSHakeOverで5030番へ移動
  • ★振動するゲームパッドを振動させるらしい。
    • この処理は一度しか実行しない。

+ ■StateNo=5030【空中くらい/ヒットバック・ふっとび開始】

■StateNo=5030 【空中くらい/ヒットバック・ふっとび居開始】

速度を決定する空中くらいステート。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • !TimeでHitVelSetのXYを適応。
  • 倒れ属性攻撃でないなら以下のいずれかの条件で5040へ移動。
    • HitOVer
    • 地面へ到達:Ve Y >0&&Pos Y >= 10
  • 倒れ属性攻撃の場合は上記の条件で5050へ移動。
    • ↑と同じの条件いずれか
  • アニメが終わった場合、5035へ移動。

+ ■StateNo=5035【空中くらい/ふっとび経過】

■StateNo=5035 【空中くらい/ふっとび経過】

ふっとび最中ステート1

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • !Timeと以下のいずれかの条件でアニメを5035番へ変更
    • 5035番がある
    • 現在5051~5059番(特殊ふっとびアニメ)でない。
    • 現在5090番(倒れ浮きくらいアニメ)でない。
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • 倒れ属性でなければ以下のいずれかの条件で5040へ移動
    • HitOVer
    • アニメ終了
    • 地面へ到達:Ve Y >0&&Pos Y >= 10
    • !Timeでアニメが5035でない
  • 倒れ属性攻撃の場合は上記のいずれかの条件で5050へ移動。
    • ↑と同じの条件のいずれか

+ ■StateNo=5040【空中くらい/ふっとび・戻り】

■StateNo=5040 【空中くらい/ふっとび・戻り】

自動体勢立て直し。倒れ属性のないふっ飛ばし攻撃用最終ステート。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • 生きていないならアニメを5050へ変更。
  • アニメが終了したら5040番アニメに変更。
    • !Timeでアニメが5035番でない場合も5040に変更
  • HitOverでCtrlを1に
  • HitOverでMoveTypeをIに
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • 地面へ到達で着地ステートへ:Ve Y >0&&Pos Y >= 0

+ ■StateNo=5050【空中くらい/ふっとび・倒れまで】 Command="recovery"の記述あり

■StateNo=5050 【空中くらい/ふっとび・倒れまで】

ふっとび最中ステート2
CanRecover時、Recovery入力で空中復帰が可能。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • 以下のいずれかの条件で5050番へアニメを変更
    • 5035番アニメでアニメ表示が終わった
    • !Timeで下記のアニメでない
      • 5035番、[5051,5059]番・[5061,5069]番、5090番
      • =通常吹っ飛び・特殊吹っ飛び・倒れ浮きでないこと。
  • ★[5050,5059]番のアニメで、Y速度が-2以上・5050番アニメなら1以上で
    • Anim+10のアニメが存在するなら、そのアニメへ変更する。
    • なおこの処理は一度しか行わない。
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • 落下中(Vel Y>0)・地上近く(Pos Y>=-20)で生きており、
    • 空中復帰が可能な場合にrecoveryのコマンドで5200番ステートへ移動
  • 上昇速度がほぼ無くなったあと(Vel Y>-1)、空中で生きており、
    • 空中復帰が可能な場合にrecoveryのコマンドで5210番ステートへ移動
  • 地面へ到達した場合、5100番ステートへ移動。
    • 地面の条件は[5051,5059]番・[5061,5069]番の場合0以上、それ以外で25以上。

+ ■StateNo=5070【空中くらい/転ばされヒットストップ】

■StateNo=5070 【空中くらい/転ばされヒットストップ】

Trip属性の攻撃を受けた場合は一律このステートへ飛ぶ。

なおMUGEN側の処理により、このフレームのTime=0時点でステート終了を迎えると対ダウン追撃用の防御力上昇が発生。
※受けた攻撃のPauseTimeが0の場合すぐChangeStateするため補正は発生しない。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N Velset=0,0
  • アニメを5070へ変更・固定。
  • HitShakeOverで5071番ステートへ移動
  • 振動するゲームパッドを振動させるらしい。

+ ■StateNo=5071【空中くらい/転ばされヒットバック】

■StateNo=5071 【空中くらい/転ばされヒットバック】

速度を決定する転ばされ用ステート。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • !TimeでHitVelSetのXYを適応。
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • 地面へ到達で5110番ステートへ移動:Ve Y >0&&Pos Y >= 15

+ ■StateNo=5080【倒れくらい/ヒットシェイク】

■StateNo=5080 【倒れくらい/ヒットシェイク】

倒れ状態+Y座標0の場合に飛ぶ倒れくらいステート。

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=H Physycis=N Velset=0,0
  • !TimeでSysvar(2)へ縦のふっとび速度が0なら5080を、それ以外なら5090を代入。
  • !Timeかつ、特殊倒れ系アニメであった場合sysvar(2)にAnim%10を加算。
    • 特殊倒れ系アニメ=[5081,5089]番、[51111,5119]番
    • ただし加算後の番号のAnimが存在しない場合は加算を行わない。
  • !TimeかつSysvar(2)が5090番で、その番号のアニメが存在しない場合、
    • sysvar(2)に5030を代入する。
  • アニメをsysvar(2)の番号に変更・固定。
  • HitHakeOverかつ縦のふっとび速度が0なら5081番ステートへ移動
  • HitHakeOverかつ縦のふっとび速度が0以外なら5030番ステートへ移動

+ ■StateNo=5081【倒れくらい/ヒットバック】 Sysvar0を1に

■StateNo=5081 【倒れくらい/ヒットバック】

速度を決定する倒れくらいステート。

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=H Physycis=C
  • !TimeでHitVelSetのXを適応。
  • HitOverでX速度を0に
  • !timeでsysvar(0)へ1を代入。
  • HitOVerで5110番ステートへ移動

+ ■StateNo=5100【倒れくらい/空中~着地】

■StateNo=5100 【倒れくらい/空中~着地】

空中くらいから着地した時点の倒れステート

なおMUGEN側の処理により、このフレームのTime=0時点でステート終了を迎えると対ダウン追撃用の防御力上昇が発生。

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=H Physycis=N
  • !TimeかつGetHitVar(Fall.Yvel=0)でX速度が1より大きい場合、
    • X速度を1に
  • !TimeでFallEnvShake発動
  • !Timeでsysvar(1)へFloor(Y速度)を代入
  • !Timeで特殊吹っ飛びアニメでなければ5100番アニメへ変更
    • 対応する特殊倒れアニメがない場合も。
  • !Timeで特殊吹っ飛びアニメ~特殊倒れ着地アニメへ変更。
    • [5051,5059]番・[5061,5069]番から510x番へ。対応アニメがあるなら。
  • !TimeでY座標を地面に
  • !TimeでY速度を0に
  • !TimeでX速度を3/4に。
  • !TimeかつGetHitVar(fall.yvel)=0(倒れバウンドY速度が0)なら5110へ移動
  • Time=1でバウンド用エフェクトを表示。基本60番のエフェクト。
    • sysvar(1)、着地速度が5より大きいなら61番、14より大きいなら62番。
    • 基本奥側へ表示するが、sysvar(1)>14なら手前側に表示
  • HitFallDamage、バウンド時のダメージをTime=3で適応。
  • Time=1でバウンド時のSEを再生、基本F7,0
    • sysvar(1)、着地速度が5より大きいならF7,1、14より大きいならF7,2。
  • 常時PosFreezeする。
  • アニメが終わったら5101番ステートへ移動
  • 振動するゲームパッドを振動させるらしい。

+ ■StateNo=5101【倒れくらい/バウンド中】

■StateNo=5101 【倒れくらい/バウンド中】

倒れバウンドから着地までのステート

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=H Physycis=N
  • !Timeかつ特殊倒れアニメでなければ5160番に変更。
    • また対応する特殊倒れアニメが無い場合も。
  • !Timeかつ特殊倒れアニメの場合、次の特殊バウンドアニメに変更。
    • [5101,5109]番から516x番へ。対応アニメがあるなら。
  • !TimeでHitFallVel、バウンド速度を適応
  • !TimeでY座標を20に設定。
  • 毎フレームY速度に+0.4加算。
  • 地面へ到達で5110番ステートへ移動:Ve Y >0&&Pos Y >= 12

+ ■StateNo=5110【倒れくらい/倒れ待機】 sysvar0感知

■StateNo=5110 【倒れくらい/倒れ待機】

倒れ着地~自動起き上がりまででのステート

このステートに居て起き上がり待機時間が0になった場合自動で5120へ移動する。

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=H Physycis=N
  • !TimeでFallEnvFhake発動
  • ★存在するなら特殊倒れくらいアニメから特殊倒れ待機アニメへ
    • [5081,5089]番から511xへ変更。存在するなら。
    • この処理は一度しか行わない
  • !Timeかつ特殊倒れ待機アニメでなく、特殊バウンドアニメでもないなら
    • 5170番アニメへ変更。特殊バウンド着地アニメが無い場合も。
  • !Timeかつ特殊倒れ待機アニメでなく、特殊バウンドアニメなら変更。
    • [5161,5169]番から517x番に変更。対応アニメが存在するなら。
  • !TimeでHitFallDamageを適応。
  • !TimeでY座標を0に。
  • !Timeかつ倒れバウンドY速度が0以外ならsysvar(1)へFloor(Vel Y)を代入
  • !TimeかつSysvar(0)(倒れ待機くらいフラグ)が0の場合のみバウンド効果。
    • バウンド時のSEを再生、基本F7,0
      • sysvar(1)、着地速度が5より大きいならF7,1、14より大きいならF7,2。
    • バウンド用エフェクトを表示。基本60番のエフェクト。
      • sysvar(1)、着地速度が5より大きいなら61番、14より大きいなら62番。
    • 基本奥側へ表示するが、sysvar(1)>14なら手前側に表示
  • !TimeでY速度を0に
  • ★特殊バウンド着地アニメから
    • アニメが終了した、あるいはSysvar(0)(倒れ待機くらいフラグ)が1の場合
    • 特殊倒れ待機アニメへ変更する。
      • [5171,5179]番から511xへ変更。ただし存在するなら。
      • この処理は一度しか行わない。
  • ★特殊バウンド着地アニメ以外で
    • アニメが終了した、あるいはSysvar(0)が1の場合、5110番アニメへ変更する。
    • この処理は一度しか行わない。
  • 死んでいる場合(!alive)、以下のいずれかの条件で5150へ移動する。
    • アニメ終了時
    • Sysvar(0)(倒れ待機くらいフラグ)が1の時。
    • 倒れ待機アニメ[5110,5119]番の場合。
  • !TimeかつSysvar(0)が0以外の場合、Sysvar(0)を0にする。
  • 毎フレームx速度を*0.85する
  • 振動するゲームパッドを振動させるらしい。

sysvar(0)について
sysvar(0)は倒れくらい時のフラグを管理しているのだが、
sysvar(0)は空中ガードくらいの着地制御でも使われており、
しかもくらい時にリセットする箇所はこのステートだけである。
その為空中ガードくらい着地をした後、すぐ後に倒れると
5110番にある着地の効果音や衝突エフェクトが発生しない
最も顕著になりそうなのは5100番を経由しないTrip系で
落下速度が非常に早い攻撃だろうか。


起き上がり・リカバリー動作

MUGENのcommon1.cnsファイルの冒頭の説明において、
ステート5120番、5200番、5210番ではTime=0時点で防御力を正常値へ戻すと書かれている。
防御力の補正係数について詳しくはSC-/DefenceMulを参照。
+ ■StateNo=5120【倒れ/起き上がり】

■StateNo=5120 【倒れ/起き上がり】

倒れ待機5110番から自動で移動してくるステート。

内容,記述
  • 冒頭オプション
    • StateType=L MoveType=I Physycis=N
  • !Timeかつ特殊倒れ待機以外の場合、5120番アニメに変更
    • 対応する特殊起き上がりアニメがない場合も
  • !Timeかつ特殊倒れ待機の場合、特殊起き上がりアニメに変更。
    • [5111,5119]番から512x番。対応アニメが無ければ変更しない。
  • !TimeでX速度を0に
  • 常時完全無敵
  • アニメ終了時Fallフラグを1にする。
  • アニメ終了時投げに対する12Fの無敵を発生させる
  • アニメ終了時完全無敵を3F発生させる(Value2)
  • アニメ終了時立ちステートへCtrl=1で移動する。

NotHitByについて
起き上がりでは必ず一度でもNotHitByを実行すること
一定条件で倒れ追撃への特殊無敵が永続で発生し、
他にNotHitByが実行されるまで無敵が消えなくなる。
  • ちなみに
特殊無敵の主な発生条件はステート奪われ状態でStatetype=L&&MoveType=Hになり、
その状態で方向キーを3度入れた後、通常くらいへ移動させられると無敵が出る。
そのため、ステート奪取中にStateType=Lにすることは避けるべきであり、
Statetype=Lにした場合は5120などくらい以外のステートへ戻す必要がある。

+ ■StateNo=5200【倒れ受身/開始】 地上近くの空中受身

■StateNo=5200 【倒れ受身/開始】

CanRecover復帰可能な状態から地面近くで復帰した場合のステート。

※このステートに無敵になる記述は無い。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N
  • アニメが5035番で表示終了した場合、5050番アニメに変更
  • 毎フレームY速度にGetHitVar(Yaccel)を加算
  • 地面へ到達で5201番ステートへ移動:Ve Y >0&&Pos Y >= 10

+ ■StateNo=5201【倒れ受身/着地】

■StateNo=5201 【倒れ受身/着地】

倒れ受身開始から着地したステート

※このステートには無敵がある。
※ここからはPhysics=Aによる自動着地を行う。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=A Anim=5200
  • !Timeかつ相手が後ろ側(P2Dist X<-5)の場合振り向き
  • !Timeで速度をX-.15、Y-3.5に変更
  • !TimeでY座標を0に
  • 常時完全無敵
  • !Timeでキャラを3F光らせる
  • Time=1で汎用60番のエフェクトを表示

+ ■StateNo=5210【空中受身】 空中受身

■StateNo=5210 【空中受身】

倒れ受身開始から着地したステート

※無敵が15F、行動不能が基本20Fのため、6Fの隙がある。

内容,記述
  • 冒頭オプション
    • StateType=A MoveType=H Physycis=N Anim=5210 Ctrl=0
  • !Timeでキャラを3F光らせる
  • !Timeで4F座標を固定。
  • !timeかつ相手が後ろ側(P2Dist X<-20)の場合振り向き
  • Time=4で速度をX速度*0.8、Y速度*0.8。
  • Time=4でY速度-4.5
  • Time=4でY速度が落下中(Vel Y>0)ならY速度*0.5。
  • Time=4でY速度がVel Y>-3ならY速度-2。
  • Time=4でY速度がVel Y>-2ならY速度-1。
  • Time=4かつ方向キー↑でY速度-2
  • Time=4かつ方向キー↓でY速度+1.5
  • Time=4かつ方向キー前でY速度*1 変化無し
  • Time=4かつ方向キー後ろX速度-1
  • !Timeで15Fの完全無敵
  • Time=20でCtrlを1に
  • Time>=4でY速度に+0.35していく。(重力)
  • 地面へ到達で52番ステートへCtrlを1にして移動:Ve Y >0&&Pos Y >= 0


死亡ステート

+ ■StateNo=5150【死亡】 ※特殊処理大量

■StateNo=5150 【死亡】

死亡時に待機するステート
専用のMUGEN処理が山ほどあるため要注意。

ステート自体の内容,記述
  • 冒頭オプション
    • StateType=L MoveType=I Physycis=N
  • !Timeで倒れ系アニメへ変更
    • 特殊倒れ系アニメでなく、5140番が存在するならそのアニメ
      • 特殊倒れ待機アニメでない場合も。
    • 特殊倒れ系アニメで対応が存在する場合514x番のアニメ
      • [5111,5119]番・[5171,5179]番から。
  • ★!Tiemかつ試合の決着がついた場合
      1. 10したアニメがあればそのアニメに変更する。
    • この処理は一度しか行わない。
  • !Timeで死亡用アニメ系でも、倒れ待機系でもなければ5110に変更。
  • 毎フレームX速度を*0.85する
  • ★X速度が.05未満の場合0に
    • この処理は一度しか行わない
  • 完全無敵

死亡ステートでの特殊処理
  • P2系の対象にならない。自動振り向きの対象にもならない。
  • 一部例外を除き取られているTargetを消す。
  • 試合終了の演出時、立ち待機系以外でも移行する唯一のステート。
  • 死んでいる(Alive=0)場合
    • PlayerPushのValue=0の効果(衝突判定が無くなる)
    • Screenbound系の効果(カメラに追尾されなくなる)
    • ライフゲージの表示減少量がリセットされる。
  • 他色々?
  • 生きている(Alive)場合は自動で起き上がり(5120へ移動)を行う。
把握しきれていません。


最終更新:2017年03月14日 02:22