人生エクソダス

なんてことのない日々のこもごもをつらつらと書き連ねたり連ねなかったりする。

mugen小話 5 LifeAddをRoundState=2以外で使われると困る

2020-01-16 22:18:56 | MUGEN

 lifeaddというステコン(ステートコントローラ)を使って、体力を回復させることができる記述がある。

 普通は特殊技みたいなものに変数が設定されていて、その変数が時間で減っていき最終的に所定の値になったとき特殊技が解かれるようなしくみのなかで、lifeaddがついていればその特殊技中に回復して、技が終われば回復の記述も偽になるようにしてある。普通は。その特殊技もlife=0(ライフがゼロ)とかalive=0(生存フラグ=偽)だと解除されるようにしていないと、同様の現象が起こったりする。

 特によくあるのが強化スイッチとかPalNoがいくらで、例えば7P(ENTERを押しながらLとか)なら強化みたいに設定してあるキャラだと、そのキャラを選んだ時点でその効果が得られるので試合が終わるまで体力回復が続くし、roundstate=2さえない場合勝敗判定中とか勝利ポーズ中まで体力回復する。これがpoweraddなら勝敗の影響は間接的だが、lifeaddだった場合キャラがKOされても回復が続くのでさらに厄介になる。timeoverのコールが出てからしばらく勝敗判定が付かないような、俗に猛抗議と言われるような”キャラがいつまでたっても静止しない状況下”で勝敗判定がひっくり返ることもある。

 またタッグ戦で判定になった場合も同様だが、タッグ戦の場合特に厄介なことがある。
 KOしたキャラにダメージを与える方法などないし、ちょっと考えて作られたAIはKOされたキャラをずっと殴るようなことはしないのでノータッチになる。その誰も触らないKOされたキャラがずっとライフ回復するのだ。判定になり、1P3Pと2P4Pのライフの差で勝敗判定をするとき、その今までぬくぬくとライフ回復していたKOキャラのライフによって判定勝ちしてしまうことがあるのだ。

 なのでlifeaddを常時扱うようなステコンを使うなら、roundstate=2(戦闘ラウンド中)とかにして、roundstate=3(勝敗判定中)までいかないようにしたり、KOされたら止まるようにalive=1とかlife!=0とかにして、普通に生きてる状態なら動くようにしておくのがいい。そして判定の状況下で厳密に判断させるために、余計な回復をしないように[state -2]でlifesetを用いて、alive=0のときはlifeを0にする記述を加えておけばより確実だ。

[state -2]
type = lifeadd
triggerall = roundstate=2 && alive && life!=0
trigger1 = gametime%3=0 ;ゲーム時間を3で割って余りが0のとき
value = 1
absolute = 1
ignorehitpause = 1

[state -2]
type=lifeset
trigger1=!alive
value=0

みたいにしてあればいいのでないかと思う。
まあそんなものをぶっちするから強化スイッチなのだという考え方もあるだろうが。



最新の画像もっと見る

コメントを投稿