堕落街道まっしぐら。

現在のゲームプレイ状況: アリスギア = ウマ娘 > DMMブラゲ > Crossout >> それ以外

MUGEN記述/ヘルパー式のアーマー記述 Ver1.22 テンプレ

このヘルパー式アーマー処理記述はセリカさん原案の物を私式にアレンジしたものです。
なんちゃら権とか転載云々などの不都合が生じる場合は一報ください。削除します。

~ ~ ~

●ヘルパー式ハイパーアーマー処理記述・汎用型

 -ハイパーアーマーの定義
  ・打撃攻撃及び飛び道具攻撃を受けてもキャラがひるまず、動作が中断されない(ダメージは受ける)
  ・投げ属性の攻撃には通常通りやられる

 -この方式によるハイパーアーマーの特徴
  ・相手のコンボ数がカウントされない
  ・自分の行動がヒットストップの影響を受けない(相手側はヒットストップの影響あり)
  ・P2StateNoを仕込んである攻撃は当たらない=空振り(MUGEN自体の不具合回避のための仕様)
  ・TargetStateを仕込んである攻撃は接触するけどひるまない=乱舞などに以降されない
  ・相手の攻撃判定の持続が長い場合、2回分のダメージを受けてしまう可能性がある(2重被弾)
  ・アーマー化した瞬間の1F目はアーマーが有効にならず普段どおりにダメージを受ける
  ・アーマー中に攻撃を受けた場合、本来硬直する時間(ヒットストップ時間)+5Fだけ無敵になる
   (2重被弾抑制処置)


●実際の記述テンプレ

 -必要なもの
  ・常時監視ステート(StateDef -2)
  ・一般ステート用のcnsファイル(.st)と9000番の空きステート

;-------------------------------------------------------------ここから下を-2ステート内にコピペ
[State -2, アーマーヘルパー呼び出し]
type = Helper
triggerall = !NumHelper(9000) && MoveType != H
trigger1 = StateNo = 200 && Time = 1 ;マリリンローズ
trigger2 = StateNo = 1300 && AnimElem = 2,0 ;リベンジャー
trigger3 = StateNo = 2000 && Time = 1 ;銃士の舞
trigger4 = StateNo = 2101 && Time = 1 ;MHS前方射撃
trigger5 = StateNo = 2102 && Time = 1 ;MHS後方射撃
trigger6 = StateNo = 2103 && Time = 1 ;MHS再入力受付
trigger7 = StateNo = 2232 && Time = 1 && var(21) = 0 ;ブラックバード突進

name = "Armor"
stateno = 9000
ID = 9000
size.xscale = 1
size.yscale = 1
postype = p1
pos = 0,0
ownpal = 1
supermovetime = 99999
pausemovetime = 99999

[State -2, アーマー中の投げ以外無敵]
type = NotHitBy
trigger1 = NumHelper(9000)
value2 = ,AA,AP
time = 2

[State -2, アーマー中に被弾した時の無敵時間延長(2重被弾抑制処置)]
type = NotHitBy
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
value = SCA
time = Helper(9000),GetHitVar(hitshaketime)+5

[State -2, アーマー受けした時の点滅]
type = PalFX
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
time = 5
add = 256,10,10

[State -2, アーマー受けした時のライフ減少]
type = LifeAdd
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
value = -1*Helper(9000),GetHitVar(damage)
absolute = 1
ignorehitpause = 1
;-------------------------------------------------------------ここまでを-2ステート内にコピペ

;------------------------------------------------------ここから下を適当なcnsファイル内にコピペ
[Statedef 9000]; アーマー判定ヘルパー
type = A
movetype = I
physics = N

[State 9000, 0]; 不具合対策
type = ChangeState
trigger1 = !IsHelper
value = 0
ctrl = 1

[State 9000, 0]; アーマー化した瞬間に重複被弾しないための無敵
type = NotHitBy
trigger1 = Time = 0
value = SCA
time = 1

[State 9000, 0]; 投げ無敵
type = NotHitBy
trigger1 = Time >= 1
value = ,AT
time = 2

[State 9000, 0]; 透明+影消し
type = AssertSpecial
trigger1 = 1
flag = Invisible
flag2 = NoShadow

[State 9000, 0]; 本体に追従
type = BindToParent
trigger1 = 1
time = 1
facing = 1
pos = 0,0

[State 9000, 0]; 判定を揃える
type = ChangeAnim
trigger1 = SelfAnimExist(Parent,Anim)
value = Parent,Anim
elem = Parent,AnimElemNo(0)

[State 9000, 0]; 打撃/飛び道具を受けたらステートを繰り返す
type = HitOverRide
trigger1 = IsHelper(9000)
attr = SCA,AA,AP
stateno = 9000

[State 9000, 0]; 本体がアーマーパートを過ぎたら消滅
type = DestroySelf
trigger1 = Parent,StateNo != 200 ;マリリンローズ(全体)
trigger1 = Parent,StateNo != 1300 ;リベンジャー
trigger1 = Parent,StateNo != 2000 ;銃士の舞
trigger1 = Parent,StateNo != [2101,2103] ;MHS
trigger1 = Parent,StateNo != 2232 ;ブラックバード
trigger2 = Parent,StateNo = 200 && Parent,AnimElem = 3,>2 ;マリリンローズ(終了時期)

;--------------------------------------------------------ここまでを適当なcnsファイル内にコピペ


導入は以上。これだけです。予めステート9000番を空けておいてくだちい。
あとやることは2つ。


[アーマーヘルパー呼び出し]の条件に「アーマー状態が開始される位置」を個別に設定してください。
上の例だと合計7つの箇所でアーマーが有効になるってことです。


[State 9000, 0]; 本体がアーマーパートを過ぎたら消滅 のところの条件に
「アーマー状態が有効になっている時間」を、ノットイコール( != )で、全てtrigger1として設定してください。
「本体がこの中の動作じゃなくなった時にアーマーが終了します」って意味なので。

ステートの途中でアーマーが切れるようにする場合は「該当動作全体」と
「アーマーが切れる瞬間」の2つをそれぞれ個別のトリガーとして記述してください。
上の例だと200番関連がそうですね。
(全体=ステ200番、切れる瞬間=ステ200番の動作開始からアニメ3枚目の2フレーム目以降)
全体版の記述は != で、個別版の記述は = でトリガー設定してください。
これを間違えるとアーマーが機能しなくなります。

面倒な場合は「アーマー中の動作」と「アーマーが切れた後の動作」をそれぞれ別のステートに分割して
作成すると楽かもしれません(態々条件を区切らなくても、アーマー中のステートだけを記述すればいいので)。
途中でアーマーが切れるようにしたい動作が複数ある場合はtrigger2,trigger3...と
必ずそれぞれを単独のトリガーとして作成してください。

~ ~ ~

これだけで該当動作がアーマー判定になります。
記述を整理したことで弄らないといけないファイルが2つまで減った上、
弄らないといけない箇所まで2箇所だけでいいという使いまわしにうってつけの記述になりました。
ブランクアニメをAirに登録とかする必要はありません。
変数箱も新しく確保したり空けたりする必要もありません。
以前の私式のように個別にアーマー用の無敵をつけたり点滅用記述をつけたりする必要もありません。
テンプレをコピペして、アーマー化させたいところ(赤字の部分)を書き直すだけ。
ついでにヘルパーも常駐じゃないのでデバッグ時の見栄えもそんなに悪くなりません。

注意点として、赤字部分のトリガーにはTime = 0やAnimElem = 1,0のような「0フレーム目」という
トリガーは使わないでください。アーマーが有効にならない可能性が高いです。
またアーマー無敵になるのは「アーマーが有効になってから1フレーム後」なので、
アーマー化開始の1フレーム目には攻撃でひるんでしまいます。
まぁ原作でもアーマー化した瞬間はエフェクト表示されてるけど
アーマー状態じゃなかったりするので原作再現といえなくもないですが。


原案に比べると2重被弾の危険性が高いですが、簡単に導入できるのでよかったらご自由にどうぞ。

~ ~ ~

・更新履歴
  Ver1.20  アーマー受けした時の無敵時間延長を追加
  Ver1.21  無敵時間延長を+10Fから+5Fに変更
  Ver1.22  やられ状態では呼び出さないよう修正