アーマー処理について

とゆーワケでアーマー処理について。

処理が画一化されるのはつまんないので、この類いの処理について語るのはちょっとどーかと思ったのですが
正直もうネタが切れてきたので書いてみます。
誰もオメーの胡散臭い処理なんざアテにしやしねーよ、何が画一化だボケ!
・・・・という声が聞こえて来そうなのでちとアレですが。

世間で使われてるHitOverrideによるアーマー処理。
これは他に解説されてるサイトあるっぽいので割愛。

で、HitOverrideを使った場合はある問題が発生するのです。
「P2state付きの打撃技で攻撃された時、攻撃を食らわない」というモノです。
文章だと伝わりにくいかも知れませんが、
相手側から見た場合、判定のない状態の敵を殴ってるような感じになる、とでも言いましょーか。

つーワケで通常打撃のみアーマー処理、
P2state付き打撃と投げは普通に食らうというのを前提に書いてみます。

P2state付き打撃食らった時はダメージのみ貰ってアーマー処理に移行するのが理想ですが
こればっかりはどーしよーもない(と思う)。

特殊な打撃技くらい食らっとくか、たとえ攻撃がスカっても食らいたくないか。
どっちを選択するかは貴方次第。

アナタな〜らどぉするゥ〜♪ ってなもんだ。
ナゲーな、前置きが。

[State -3,現在のステート番号を常時var(1)に入れとく]
type = VarSet
trigger1 = MoveType != H
trigger1 = StateNo != 9999 ←なくてもいいかも知んないけど一応
var(1) = StateNo

9999はアーマー処理するステート番号です。
上と同じトリガーで var(2) = Ctrl も仕込む。

で、アーマー処理はこんな感じ。
[Statedef 9999]
type = U
movetype = H

[State 9999,あった方がいいかも]
type = PosFreeze
trigger1 = 1
value = 1

[State 9999,animelemnoをvar(3)に];なくてもいいかも知れない
type = VarSet
trigger1 = time <= 0
v = 3
value = AnimElemNo(0)
ignorehitpause = 1

[State 9999,攻撃食らう前のステートに戻す]
type = ChangeState
trigger1 = HitShakeOver
;↑ここのトリガーにtime=0を使うと体力減らなくなる。
value = var(1)
ctrl = var(2)
実際はここにAliveとかlifeで生死判別、
状況によっては速度なんかの指定も必要になると思います。

で、仮にstate200の弱パンチに戻るとして
[Statedef 200,弱パンチ]
type    = S
movetype= A
physics = S
;ここでアニメ番号を指定してはいけない。
juggle  = 7
poweradd= 20
ctrl = 0

[State 200,アーマーステートから来たのでなければアニメ200を一枚目から]
type = ChangeAnim
triggerall = PrevStateNo != 9999
trigger1 = time = 0
value = 200

[State 200,アーマーステートから来たのならアニメ200をvar(3)枚目から];なくてもいいかも知れない
type = ChangeAnim
triggerall = PrevStateNo = 9999
trigger1 = time = 0
value = 200
ekem = var(3)

てな感じにしときましょう。

で最後。
commonの5000、5010、5020にアーマー処理へ飛ぶようChangeState仕込む。
[Statedef 5000]
type    = S
movetype= H
physics = N
velset = 0,0

[State 5000, トビます、トビます。]
type = ChangeState
triggerall = time = 0
;ここに条件を追加していきましょう。
;攻撃を連続してx発食らうまでは飛ばし続けるとか
;特定の技のみアーマー処理するならprevstateで番号指定するとか。
value = 9999

これでp2state付き打撃を食らってくれます。
食らいたくない場合は最後んとこを-2でHitOverride使えば多分おっけー。
あと1ヒットしかしない攻撃が2ヒットしてしまう可能性があるので
各HitDefに対策用のトリガー入れときましょう。
さらに一枚のスプライトの表示フレーム数が長めの場合も問題発生する恐れアリ。
airファイルで細かく切っとくと良いかも。

200,0, 0,0, 12



200,0, 0,0, 4
200,0, 0,0, 4
200,0, 0,0, 4
200,0, 0,0, 4

みたいな感じで。
■トップへ戻る
[Tue Nov 21 07:25:30 2017] [warn] long lost child came home! (pid 27464) em) ocal/apache/bin/suexec)