MUGEN State Controller

MUGENで良いキャラを作るポイントは… 「良いキャラのソースコードを読む」->「コピペ」->「記述を理解」->「自分でアレンジ」

Type = AssertSpecial

> 消去・制限などの特殊処理 | 実装されたバージョン: 2002.04.14 |


実行したフレームあるいは実行直後に、特殊処理を行います。

1フレームのみ有効。

1つのAssertSpecialで指定できるフラグは3種類だけです。※4つ以上のフラグを指定したい場合は複数のAssertSpecialを記述します。



バージョンごとの変更点・バグ・エラー・仕様

内容
1.0より前プラグインを導入した状態で、NoMusicを実行した場合バグる恐れあり。
-RoundState=3AssertSpecialRoundNotOverと、長時間のSuperPauseまたは同時間にChangeStateを利用することで、八百長(配点がされないまま次ラウンドへ移行する)バグが発生します。


パラメーター

Flag = フラグ名 (文字列)

指定できるフラグ名は、下記詳細にあるうちのいずれかです。Flag1じゃないよ!

フラグ 効果
Intro イントロ(試合開始前の登場演出アクション,RoundState=1)状態を継続させます。ラウンドコール中にフラグが立つと、コールが中断され、フラグが消えてから、再度コールされます。長いイントロ(ステート190)を演出し切るためのフラグです。
RoundNotOver このフラグが立っている間は、試合が終わっても次のラウンドが始まりません。試合後(RoundState=4)に、勝利ポーズ(ステート180)を演出し切るために使用します。
Invisible このステートの実行者自身の姿を消す。しかし、残像(AfterImage)や判定は消せません。また、-1,-2,-3ステートでは自分のHeplperProjectile全ての姿が消えます。
GlobalNoShadow 画面中に存在する全てのプレイヤー(ヘルパーとProjectileも含む)の影を消します。しかし、残像(AfterImage)や判定は消せません。
NoShadow 自分の影・床の反射を消します。しかし、残像(AfterImage)や判定は消せません。また、-1,-2,-3ステートでは自分のHeplperProjectile全ての姿が消えます。
NoBarDisplay ライフ・パワーゲージバー・勝利アイコン・ポートレート・キャラクター名・タイムカウントを非表示にします。
NoBG ステージ奥(LayerNo=0)の画像を非表示にし、「真っ黒な(正確には描画が更新されない)背景」にします。
NoFG ステージ手前(LayerNo=1)の画像を非表示にします。
NoKOSnd KO時の音声(11,0)を鳴らさないようにします。画面中に存在する全員に有効なので注意。
NoKOSlow KO時のスローモーションを無効にします。(KO直前に有効にしないといけない)
NoMusic 演奏しているBGMを止めます。
NoStandGuard 次のフレームから、立ちガード始動・処理が出来なくなります。
NoCrouchGuard 次のフレームから、しゃがみガード始動・処理が出来なくなります。
NoAirGuard 次のフレームから、空中ガード始動・処理が出来なくなります。
NoWalk 次のフレームから、歩けなくなります。(コントロール可能時に、前か後ろのキーを入力で[Statedef 20]にならない)
NoAutoTurn 自動で相手に振り向かなくなります。
NoJuggleCheck ジャグルをチェックしない。(ジャグルポイントが減らなくなる)
NoKO 試合中(RoundState=2)中のKOを無効にします。生死判定後(RoundState=3以上)に実行しても生死は覆りません。公式パラメータではないようなので、使用は自己責任で。
TimerFreeze タイムカウント(制限時間)を停止します。ですが、あくまで表示されているタイムカウントのみでTime,GameTimeトリガーの値は停止しません。
UnGuardAble 自分の全ての攻撃がガード不能になります。
省略不可
Flag2 = フラグ名 (文字列)

指定できるフラグ名は、Flagと同じ。

省略時のデフォルト値: ;なし
Flag3 = フラグ名 (文字列)

指定できるフラグ名は、Flagと同じ。

省略時のデフォルト値: ;なし
Persistent = HitPause無視時間 (整数)

Persistentの値をNに設定した場合、設定したステートコントローラーはNフレーム後にもう一度実行されます。0の場合、トリガーが成立しても1回しかステートコントローラーが実行されません。※トリガーは読み込みますが、パラメーターは完全に無視されます。

Persistentが管理されている配列が初期化される条件は、ステート処理開始(ChangeState,SelfState,TagOut,TagInなどでステート移動)でTime=0の場合に実行されます。また、初期化される個数が決まっており、10個のPersistentしか初期化されません。ですので、Persistentの多様やChangeStateでの使用は避けましょう。もし、特定のステートが実行されない場合は、この仕様を疑ったほうがいいかもしれません。

その他にも、var,fvar,sysvar変数は利用できない・常時ステート([StateDef -1],[StateDef -2],[StateDef -3])では、常にPersistent=1の状態・IgnoreHitPause=1が設定されていた場合、アドレスを書き換え(Alive偽装・Persistent偽装?など)・バージョンによる動作の違いなどバグが満載です。

結論、Persistentの値が0以外の場合は省略して、TriggerTimevarを使って管理した方がいいです。

最小値: 0 , 最大値: 128
省略時のデフォルト値: 1
IgnoreHitPause = HitPauseを無視フラグ (0か1)

IgnoreHitPauseの記述されたステートコントローラー処理がHitPause(ヒット停止時間)を無視して実行されます。基本的に1に設定しておくべきパラメーター。

パラメーター自身にvar,fvar,sysvar変数は利用できません。

攻撃を当てたり受けたりした時にVarSetしたり、Explodの演出をずれないようにしたり用途はさまざま。

最小値: 0 , 最大値: 1
省略時のデフォルト値: 0


省略した時のデフォルト値

  • [State ,AssertSpecial]
  • Type = AssertSpecial
  • Trigger1 = 1
  • Flag = ?
  • Flag2 = ;なし
  • Flag3 = ;なし
  • Persistent = 1
  • IgnoreHitPause = 0


パラメーターの読み込み順

Flag(?) => Flag2(?) => Flag3(?) => Persistent(?) => IgnoreHitPause(?) =>


*バージョンや実行環境,パラーメーターの指定の仕方によって、読み込まれる順番が変わる可能性があります。参考程度なものだと思ってください。
 

コードサンプル

200以上300以下または400以上500以下のステートはガード不能になります。
  • [State , ガード不能]
  • Type = AssertSpecial
  • Trigger1 = !Ctrl && ((PrevStateNo = [200,300]) || (PrevStateNo = [400,500]))
  • Trigger1 = AnimTime < 0
  • Flag = NoStandGuard
  • Flag2 = NoCrouchGuard
  • Flag3 = NoAirGuard


公開日:
最終更新日:
この記事は役に立ちましたか?
ご意見・ご要望はございますか?
記事を編集してみませんか?

問題点があればGithubTwittersuteadddayov@gmail.comにご報告下さい。また、ページ編集にご協力いただける方を募集しております。お気軽にご連絡下さい。Please report any problems to the Github · Twitter · suteadddayov@gmail.com. In addition, we are looking for the person who cooperate with page editing and translation. Please do not hesitate to contact me.