; サンプルキャラクター『カンフーマン』のコンスタンツとステートのファイルです。
;===========================================================================
; コンスタンツ（定数）
;===========================================================================
;---------------------------------------------------------------------------
; ここがキャラの心臓部とも言うべき場所。
; １キャラ単位のライフや大きさなど、標準のステータスを予め決めておく部分。
; このコーナー自体省略出来ません。
;---------------------------------------------------------------------------
; 基本データ
;---------------------------------------------------------------------------
[Data]
life              = 1000   ;ライフ（体力ゲージ）最大値
power             = 3000   ;パワーゲージ最大値（オプション・デフォルトは3000=Lv.3）
attack            = 100    ;攻撃力（デフォルトは１００％）
defence           = 100    ;防御力（デフォルトは１００％）
fall.defence_up   = 50     ;横に倒れている時に一時的に加える防御力（％）
liedown.time      = 60     ;横に倒れている時間（フレーム）
airjuggle         = 15     ;ジャグルポイント限界値（「小ネタ.txt」参照）
sparkno           = 2      ;デフォルトのヒットスパーク（fightfxから）
guard.sparkno     = 40     ;デフォルトのガードスパーク（fightfxから）
KO.echo           = 0      ;ＫＯ時の音声（11,0）にエコーを掛けるか否か（0=掛けない,1=掛ける）
volume            = 0      ;キャラの標準の音量（最小-255・最大255）
IntPersistIndex   = 50     ;次のラウンドへ持ち越せる「Var」のアドレスの範囲を決める（※１）
FloatPersistIndex = 30     ;次のラウンドへ持ち越せる「FVar」のアドレスの範囲を決める（※１）

;---------------------------------------------------------------------------
; ※１：変数のラウンド持ち越し方法
;
; 　変数を次のラウンドへ持ち越したい場合は、↑の
; 　「IntPersistIndex」と「FloatPersistIndex」を使う。
; 　そのやり方はM.U.G.E.Nの説明書にすら載ってないので、ここで例を元に解説。
;
; 　?IntPersistIndex = 23　（Var(23)〜Var(59)までを全て次のラウンドへ持ち越せる）
; 　?FloatPersistIndex = 18（FVar(18)〜FVar(39)までを全て次のラウンドへ持ち越せる）
;
; 　つまり「Var(**)（Fvar(**)）以降全ての変数を持ち越す」という命令になる。
; 　それ以前のアドレスの変数は全て持ち越さなくなる。
;
; 　全ての変数を持ち越さない場合は、
; 　IntPersistIndexは60以上、FloatPersistIndexは40以上にしておこう。
;
; 　×これはダメ×
; 　　?IntPersistIndex = 10,15,20,25　（15,20,25の部分は意味無し）
; 　　?FloatPersistIndex = 4,16 　　　（16の部分は意味無し）
; 　　これらは最初の数字以外全て無効。
; 
;---------------------------------------------------------------------------
; 改訂前の和訳ＫＦＭではPersistIndexの解釈が無茶苦茶間違ってました。
; 大変失礼致しました。(人・ω・｀)ごめんなさい
; 今回はちゃんと調べて正確な情報を載せてるんで安心してください（苦笑
;---------------------------------------------------------------------------
; サイズ
;---------------------------------------------------------------------------
[Size]
xscale           = .5       ;キャラの横の大きさ（絶対値・float）
yscale           = .5       ;キャラの縦の大きさ（絶対値・float）
ground.back      = 15      ;地上にいる時の「後方の物理的な幅」
ground.front     = 16      ;地上にいる時の「前方の物理的な幅」
air.back         = 12      ;空中にいる時の「後方の物理的な幅」
air.front        = 12      ;空中にいる時の「前方の物理的な幅」
height           = 60      ;キャラの物理的な高さ（高いほど相手は飛び越しにくくなる）
attack.dist      = 160     ;相手がガード態勢に入る最低の距離
proj.attack.dist = 90      ;自分の「Projectile」に対して相手がガード態勢に入る最低の距離
proj.doscale     = 1       ;xscaleとyscaleを「Projectile」にも影響させるか否か（0=させない・1=させる）
head.pos         = -5,-90  ;キャラの標準の頭の座標（Bind系で適用される）
mid.pos          = -5,-60  ;キャラの標準の体中心の座標（Bind系で適用される）
shadowoffset     = 0       ;影のＹ軸方向の位置座標
draw.offset      = 0,0     ;キャラの表示座標（Ｘ軸,Ｙ軸）

;---------------------------------------------------------------------------
; 移動速度
;---------------------------------------------------------------------------
[Velocity]
walk.fwd     = 2.4         ;前進速度（Ｘ軸・[Statedef 20]に適用される）
walk.back    = -1.5        ;後退速度（Ｘ軸・[Statedef 20]に適用される）
run.fwd      = 5.0,0       ;前方に走る速度（Ｘ軸,Ｙ軸・[Statedef 100]に適用される）
run.back     = -4.5,-3.8   ;後方に走る速度（Ｘ軸,Ｙ軸・[Statedef 105]に適用される）
jump.neu     = 0,-8.4      ;垂直ジャンプの速度（Ｘ軸,Ｙ軸・[Statedef 40]に適用される）
jump.back    = -2.55       ;後方ジャンプの速度（Ｘ軸・[Statedef 40]に適用される）
jump.fwd     = 2.5         ;前方ジャンプの速度（Ｘ軸・[Statedef 40]に適用される）
runjump.back = -2.55,-8.1  ;後方に走ってからのジャンプ速度（Ｘ軸,Ｙ軸・[Statedef 40]に適用される）
runjump.fwd  = 4,-8.1      ;前方に走ってからのジャンプ速度（Ｘ軸,Ｙ軸・[Statedef 40]に適用される）
airjump.neu  = 0,-8.1      ;空中垂直ジャンプ速度（Ｘ軸,Ｙ軸・[Statedef 45]に適用される）
airjump.back = -2.55       ;空中後方ジャンプ速度（Ｘ軸・[Statedef 45]に適用される）
airjump.fwd  = 2.5         ;空中前方ジャンプ速度（Ｘ軸・[Statedef 45]に適用される）

;---------------------------------------------------------------------------
; 運動関係
;---------------------------------------------------------------------------
[Movement]
airjump.num     = 1        ;空中ジャンプが出来る回数
airjump.height  = 35       ;空中ジャンプが出来る最低の高度（Ｙ軸）
yaccel          = .44      ;Ｙ軸加速度（重力）
stand.friction  = .85      ;立っている時の摩擦係数（ステートのPhysicsが「S」の時）
crouch.friction = .82      ;しゃがんでいる時の摩擦係数（ステートのPhysicsが「C」の時）

;===========================================================================
; ステート
;===========================================================================
;---------------------------------------------------------------------------
; ここからはキャラのそれぞれの行動（ステート）を設定する。
; 番号（ステートナンバー）に気を付ければ良いだけで、
; 行動の決め方もステートの数も作りたいキャラによって自由。
;
; 本来ステートは別のファイルとして扱っているものだけど、
; このようにコンスタンツファイルと一緒にまとめる事も可能。
;
; ステートの基本的な設定はおまけフォルダの「テンプレート.txt」を参照。
;===========================================================================
; 基本行動
;===========================================================================


;----------------------
[Statedef 100]
type    = S
physics = S
anim = 100
sprpriority = 1

[State 100, 1]
type = VelSet
trigger1 = 1
x = const(velocity.run.fwd.x)

[State 100, 2] ;Prevent run from canceling into walk
type = AssertSpecial
trigger1 = 1
flag = NoWalk

[State 100, 3] ;Prevent from turning
type = AssertSpecial
trigger1 = 1
flag = NoAutoTurn

[state 100, AI Ctrlset]
type = Ctrlset
trigger1 = Var(59) > 0
value = ifelse(p2bodydist x > 60, 0, 1) 

[State 100, 4]
type = ChangeState
triggerall = stateno = 100
trigger1 = var(59) = 0
trigger1 = command != "holdfwd"
value = 0
ctrl = 1
;---------------------------------------------------------------------------
; GUARD (start)
[Statedef 120]
type = U    ;Leave state type unchanged
physics = U ;Leave physics unchanged

[State 120, 1]
type = ChangeAnim
trigger1 = Time = 0
value = 120 + (statetype = C) + (statetype = A)*2

[State 120, 2]
type = StateTypeSet
trigger1 = Time = 0 && statetype = S
physics = S

[State 120, 3]
type = StateTypeSet
trigger1 = Time = 0 && statetype = C
physics = C

[State 120, 4]
type = StateTypeSet
trigger1 = Time = 0 && statetype = A
physics = A

[State 120, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 120, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

[State 120, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 130 + (statetype = C) + (statetype = A)*2

[State 120, Stop Guarding]
type = ChangeState
trigger1 = !var(59)
trigger1 = command != "holdback"
trigger2 = var(59) = 1
trigger2 = random < 100
trigger3 = !inguarddist
value = 140

;---------------------------------------------------------------------------
; STAND GUARD (guarding)
[Statedef 130]
type    = S
physics = S

[State 130, 1]
type = ChangeAnim
trigger1 = Anim != 130
value = 130

[State 130, Hi to Lo]
type = ChangeState
trigger1 = !var(59)
trigger1 = command = "holddown"
trigger2 = var(59) = 1
trigger2 = P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
value = 131

[State 130, Stop Guarding]
type = ChangeState
trigger1 = !var(59)
trigger1 = command != "holdback"
trigger2 = var(59) = 1
trigger2 = random < 100
trigger3 = !inguarddist
value = 140

;---------------------------------------------------------------------------
; CROUCH GUARD (guarding)
[Statedef 131]
type    = C
physics = C

[State 131, 1]
type = ChangeAnim
trigger1 = Anim != 131
value = 131

[State 131, Lo to Hi]
type = ChangeState
trigger1 = !var(59)
trigger1 = command != "holddown"
trigger2 = var(59) = 1
trigger2 = P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = P2statetype = A
trigger3 = P2bodydist x <= 100
value = 130

[State 131, Stop Guarding]
type = ChangeState
trigger1 = !var(59)
trigger1 = command != "holdback"
trigger2 = var(59) = 1
trigger2 = random < 100
trigger3 = !inguarddist
value = 140

;---------------------------------------------------------------------------
; AIR GUARD (guarding)
[Statedef 132]
type    = A
physics = N

[State 132, 1]
type = ChangeAnim
trigger1 = Anim != 132
value = 132

[State 132, 2]
type = VelAdd
trigger1 = 1
y = Const(movement.yaccel)

[State 132, 3]
type = VarSet
trigger1 = 1
sysvar(0) = (pos y >= 0) && (vel y > 0)

[State 132, 4]
type = VelSet
trigger1 = sysvar(0)
y = 0

[State 132, 5]
type = PosSet
trigger1 = sysvar(0)
y = 0

[State 132, 6]
type = ChangeState
triggerall = sysvar(0)
triggerall = inguarddist
trigger1 = !var(59)
trigger1 = command = "holdback"
trigger2 = var(59) = 1
value = 130

[State 132, 7]
type = ChangeState
trigger1 = sysvar(0)
value = 52

[State 132, Stop Guarding]
type = ChangeState
trigger1 = !var(59)
trigger1 = command != "holdback"
trigger2 = var(59) = 1
trigger2 = random < 100
trigger3 = !inguarddist
value = 140

;---------------------------------------------------------------------------
; GUARD (end)
[Statedef 140]
type = U    ;Leave state type unchanged
physics = U ;Leave physics unchanged
ctrl = 1

[State 140, 1]
type = ChangeAnim
trigger1 = Time = 0
value = 140 + (statetype = C) + (statetype = A)*2

[State 140, 2]
type = StateTypeSet
trigger1 = Time = 0 && statetype = S
physics = S

[State 140, 3]
type = StateTypeSet
trigger1 = Time = 0 && statetype = C
physics = C

[State 140, 4]
type = StateTypeSet
trigger1 = Time = 0 && statetype = A
physics = A

[State 140, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 140, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = C && P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

;[State 140, 5] ;Implemented within engine
;type = ChangeState
;trigger1 = AnimTime = 0
;value = (statetype = C)*11 + (statetype = A)*51

;---------------------------------------------------------------------------
; SGUARDHIT (shaking)
[Statedef 150]
type    = S
movetype= H
physics = N
velset = 0,0

[State 150, 1]
type = ChangeAnim
trigger1 = 1
value = 150

[State 150, 2]
type = ChangeState
trigger1 = HitShakeOver
value = 151 + 2*(command = "holddown")

[State 150, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 150, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = C && P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

[State 150, 3]
type = ForceFeedback
trigger1 = time = 0
waveform = square
time = 3

;---------------------------------------------------------------------------
; SGUARDHIT2 (knocked back)
[Statedef 151]
type    = S
movetype= H
physics = S
anim = 150

[State 151, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1

[State 151, 2]
type = VelSet
trigger1 = Time = GetHitVar(slidetime)
trigger2 = HitOver
x = 0

[State 151, 3]
type = CtrlSet
trigger1 = Time = GetHitVar(ctrltime)
value = 1

[State 151, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 151, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = C && P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

[State 151, 4]
type = ChangeState
trigger1 = HitOver
value = 130
ctrl = 1

;---------------------------------------------------------------------------
; CGUARDHIT (shaking)
[Statedef 152]
type    = C
movetype= H
physics = N
velset = 0,0

[State 152, 1]
type = ChangeAnim
trigger1 = 1
value = 151

[State 152, 3]
type = ChangeState
trigger1 = !var(59)
trigger1 = HitShakeOver
value = 151 + 2*(command = "holddown")

[State 152, 3]
type = ChangeState
trigger1 = var(59) = 1
trigger1 = HitShakeOver
value = 153

[State 152, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 152, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = C && P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

[State 152, 4]
type = ForceFeedback
trigger1 = time = 0
waveform = square
time = 4

;---------------------------------------------------------------------------
; CGUARDHIT2 (knocked back)
[Statedef 153]
type    = C
movetype= H
physics = C
anim = 151

[State 153, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1

[State 153, 2]
type = VelSet
trigger1 = Time = GetHitVar(slidetime)
trigger2 = HitOver
x = 0

[State 153, 3]
type = CtrlSet
trigger1 = Time = GetHitVar(ctrltime)
value = 1

[State 153, Hi to Lo]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = S && command = "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = S && P2statetype = C
trigger3 = var(59) = 1
trigger3 = statetype = S
trigger3 = P2bodydist x > 100
statetype = C
physics = C

[State 153, Lo to Hi]
type = StateTypeSet
trigger1 = !var(59)
trigger1 = statetype = C && command != "holddown"
trigger2 = var(59) = 1
trigger2 = statetype = C && P2statetype = S
trigger2 = P2bodydist x <= 100
trigger2 = random < 200
trigger3 = var(59) = 1
trigger3 = statetype = C && P2statetype = A
trigger3 = P2bodydist x <= 100
statetype = S
physics = S

[State 153, 4]
type = ChangeState
trigger1 = HitOver
value = 131
ctrl = 1

;---------------------------------------------------------------------------
; AGUARDHIT (shaking)
[Statedef 154]
type    = A
movetype= H
physics = N
velset = 0,0

[State 154, 1]
type = ChangeAnim
trigger1 = 1
value = 152

[State 154, 2]
type = ChangeState
trigger1 = HitShakeOver
value = 155 ;AGUARDHIT2

[State 154, 3]
type = ForceFeedback
trigger1 = time = 0
waveform = square
time = 4

;---------------------------------------------------------------------------
; AGUARDHIT2 (knocked away)
[Statedef 155]
type    = A
movetype= H
physics = N
anim = 152

[State 155, 1]
type = HitVelSet
trigger1 = Time = 0
x = 1
y = 1

[State 155, 2]
type = VelAdd
trigger1 = 1
y = Const(movement.yaccel)

[State 155, 3]
type = CtrlSet
trigger1 = Time = GetHitVar(ctrltime)
value = 1

[State 155, 4]
type = VarSet
trigger1 = 1
sysvar(0) = (pos y >= 0) && (vel y > 0)

[State 155, 5]
type = VelSet
trigger1 = sysvar(0)
y = 0

[State 155, 6]
type = PosSet
trigger1 = sysvar(0)
y = 0

[State 155, 6]
type = ChangeState
triggerall = sysvar(0)
triggerall = inguarddist
trigger1 = !var(59)
trigger1 = command = "holdback"
trigger2 = var(59)
value = 130

[State 155, 7]
type = ChangeState
trigger1 = sysvar(0)
value = 52

;;-----------------------------
;---------------------------------------------------------------------------
;タイムオーバー（負けた時）
[Statedef 170]
type = S
ctrl = 0
anim = 170
velset = 0,0

[State 170, 無敵]
type = NotHitBy
trigger1 = 1 ;トリガーを何も書かず「1」にする事により、『無条件で常に実行させる命令』になる。
value = SCA
time = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;勝利ポーズ分岐（common1.cnsには無いけど、これもコモンステート）
[Statedef 180]
type = S

[State 180, ステート変更]
type = ChangeState
trigger1 = Time = 0
value = 181

;---------------------------------------------------------------------------
;勝利ポーズ（礼をする）
[Statedef 181]
type = S
ctrl = 0
anim = 181
velset = 0,0

[State 181, 無敵]
type = NotHitBy
trigger1 = 1
value = SCA
time = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;イントロ（試合開始前の登場演出アクション）
[Statedef 191]
type = S
ctrl = 0
anim = 190
velset = 0,0

[State 191, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 1500, 0

[State 191, アニメ変更];バトル画面に切り替わった瞬間のフェードインの時、アニメを固定している
type = ChangeAnim
trigger1 = RoundState = 0
value = 190

[State 191, 特殊効果];試合が開始するまではこのコントローラを使おう（※２）
type = AssertSpecial
trigger1 = 1
flag = Intro ;イントロの状態

[State 191, ステート変更];アニメーションが終われば「通常立ち」のステートに変更する
type = ChangeState
trigger1 = AnimTime = 0
value = 0

;これがカンフーマンが蹴る板。カンフーマンのステートをあなたのキャラに使うなら、
;下にある二つの「Explod」のステートコントローラを消してお使いください。

[State 191, エフェクト];飛んで来る板
type = Explod
trigger1 = RoundState != 0
anim = 191
postype = p1
pos = 260, -90
velocity = -4.2, -7
accel = 0, .32
removetime = 48
persistent = 0

[State 191, エフェクト];蹴られて板壊れる
type = Explod
trigger1 = AnimElemTime(7) = 1
anim = 192
postype = p1
pos = 60, -70
velocity = 2, -4
accel = 0, .32
removetime = 35

;カンフーマンのファイルを使ってあなた自身のキャラを作っているなら、
;同じく下にある二つの「PlaySnd」のステートコントローラを消してお使いください。
;この二つは板を蹴る時の音声を再生します。

[State 191, 音を鳴らす];蹴った瞬間の音
type = PlaySnd
trigger1 = AnimElem = 7
value = F5,2
volume = -40

[State 191, 音を鳴らす];蹴った直後の音
type = PlaySnd
trigger1 = AnimElemTime(7) = 3
value = F5,3
volume = -80

;---------------------------------------------------------------------------
; ※２：AssertSpecial
;
; 　他のコントローラでは設定出来ない『特殊な効果』を指定する命令。
; 　設定したトリガーが有効になってる間だけ一時的に適用される。
;
; 　適用出来るパラメータはこのコントローラを一つ設置する場合、最大３つまで。
; 　書式としては「flag」「flag2」「flag3」を順に加えていく形。
; 　flag2とflag3はオプション。ではその特殊効果を全て紹介。
;
; 　Intro          = イントロ（試合開始前の登場演出アクション）の状態になる。イントロステート専用。
; 　Invisible      = 自分の姿を消す。しかし残像（AfterImage）は消せない。
; 　RoundNotOver   = 現在のラウンドを過ぎない。勝利ポーズ専用。
; 　NoBarDisplay   = ライフバーを非表示にする。
; 　NoBG           = ステージの奥の画像を非表示にし、「真っ黒の背景」にする。
; 　NoFG           = ステージの手前の画像を非表示にする。
; 　NoStandGuard   = 立ちガードが出来なくなる。
; 　NoCrouchGuard  = しゃがみガードが出来なくなる。
; 　NoAirGuard     = 空中ガードが出来なくなる。
; 　NoAutoTurn     = 自動で振り向かない。
; 　NoJuggleCheck  = ジャグルをチェックしない。（ジャグルポイントが減らなくなる）
; 　NoKOSnd        = ＫＯ時の音声（11,0）を鳴らさないようにする。画面中に存在する全員に有効なので注意。
; 　NoKOSlow       = ＫＯ時のスローモーションを無効にする。（ＫＯ直前に有効にしないといけない）
; 　NoShadow       = 自分の影を消す。
; 　GlobalNoShadow = 画面中に存在する全てのプレイヤー（ヘルパーとProjectileも含む）の影を消す。
; 　NoMusic        = 演奏しているＢＧＭを止める。（プラグインによってはＢＧＭがバグるので要注意）
; 　NoWalk         = 歩かない。（前か後ろのキーを入力中コントロールが可能の時に勝手に[Statedef 20]にならない）
; 　TimerFreeze    = タイムカウント（制限時間）を停止する。
; 　UnGuardable    = 自分の全ての攻撃が『ガード不可』になる。
;
;---------------------------------------------------------------------------
;挑発
[Statedef 195]
type = S
movetype = I
physics = S
ctrl = 0
anim = 195
velset = 0,0
sprpriority = 2

[State 195, コントロール]
type = CtrlSet
trigger1 = Time = 40 ;このステートが４０フレームになったら
value = 1            ;キーコントロールが可能になる。

[State 195, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
; 通常攻撃技
;===========================================================================
;---------------------------------------------------------------------------
; 通常技はそんなに難しいテクニックは使ってないから、
; テンプレートを見ながら確認すれば覚えやすいと思う。
; 基本忘るべからず。
;
; ステートナンバーは、立ち技が２００〜２９９、しゃがみ技が４００〜４９９、
; ジャンプ技が６００〜６９９の間で決めて作るのが一般的。
; しかし強制じゃないので自由に作っちゃってＯＫ。
;---------------------------------------------------------------------------



;立ち弱パンチ
[Statedef 200]
type    = S
movetype= A
physics = S
juggle  = 1
velset = 0,0
ctrl = 0
anim = 200
poweradd = 20
sprpriority = 2
facep2 = 1

[State 200, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0


[State 200, ヒット定義]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA ;立ち通常打撃（Standing, Normal Attack）
damage = 23, 0
animtype = Light
guardflag = MA
hitflag = MAF
priority = 3, Hit
pausetime = 8, 8
sparkno = -1
sparkxy = -10, -76
hitsound = 5, 0
guardsound = 6, 0
ground.type = High
ground.slidetime = 5
ground.hittime  = 12
ground.velocity = -4
airguard.velocity = -1.9,-.8
air.type = High
air.velocity = -1.4,-3
air.hittime = 12

[State 200, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = 30, -70
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 200, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; 下の「立ち強パンチ」のステートを見てみましょ。
;
;「Width」のコントローラは相手や画面端を押すための『物理的な幅』を
; 一時的に伸ばしたり縮ませたりする命令。
; キャラの幅はバトル中に「Ctrl+C」を押して「判定ボックス」を表示させてる時に
; 一緒に確認出来る。「軸位置から伸びる黄緑色の線」がその幅。
;
; 後は「ChangeAnim」を使って５枚目で攻撃を当てたらすぐに６枚目に
; コマを進ませる命令をしてたり、
;『画像表示優先度』で「振りかぶる時は奥」「振り切った直後から手前」に
; モーション表示の操作をしてるくらいで、難しくない処理。
;
; これは余談だけど、Widthの読み方は「ウィッズ」。
; この解説文書いた時に初めて読み方知ったよ！　｡ﾟ(ﾟつД`ﾟ)ﾟ｡
;---------------------------------------------------------------------------
;立ち強パンチ
[Statedef 210]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 65
ctrl = 0
velset = 0,0
anim = 210
sprpriority = -1


[State 0, VelAdd]
type = VelAdd
trigger1 = animelem = 1
x = 4


[State 210, アニメ変更]
type = ChangeAnim
trigger1 = AnimElemTime(5) > 0 && AnimElemTime(6) <= 0
trigger1 = movecontact
value = 210
elem = 6
ignorehitpause = 1
persistent = 0

[State 210, 画像表示優先度]
type = SprPriority
trigger1 = AnimElem = 5
value = 2

[State 210, 物理的なキャラの幅]
type = Width
trigger1 = (AnimElemTime (2) >= 0) && (AnimElemTime (7) < 0)
value = 15,0  ;この場合キャラの幅を一時的に前に１５ピクセル伸ばす事になる。
              ;値の意味は「前方のピクセル増減量,後方のピクセル増減量」

[State 210, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 4

[State 210, ヒット定義]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA
animtype  = Medium
damage    = 57
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-65
hitsound   = 5,2
guardsound = 6,0
ground.type = High
ground.slidetime = 12
ground.hittime  = 20
ground.velocity = -5.5
air.velocity = -2.5,-4

[State 210, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = 30,-60
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 210, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;立ち弱キック
[Statedef 230]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 22
ctrl = 0
velset = 0,0
anim = 230
sprpriority = 2

[State 230, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 230, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, NA
animtype  = Medium
damage    = 26
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-37
hitsound   = 5,1
guardsound = 6,0
ground.type = Low
ground.slidetime = 10
ground.hittime  = 13
ground.velocity = -5
air.velocity = -2.5,-3.5

[State 230, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = 50,-27
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 230, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;立ち強キック
[Statedef 240]
type    = S
movetype= A
physics = S
juggle  = 5
poweradd= 65
ctrl = 0
velset = 0,0
anim = 240
sprpriority = 2

[State 240, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 240, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, NA
animtype  = Medium
damage    = 63
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 35
ground.velocity = -6
air.velocity = -2.2,-3.2

[State 240, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = 30,-50
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 240, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
;---------------------------------------------------------------------------
; ２Ｄ格ゲーでのしゃがみ通常攻撃は空中ガードが不可な作品が結構多い。
; カンフーマンも例外ではなかったみたい。
; ↓のしゃがみ弱パンチのguardflagが「L」のみになってるのに注目。
; 意味は「Low」。相手はこのしゃがみ弱パンチをガードする場合、
; 「しゃがみガードだけしか出来ない」という事になる。
;
; それ以外は簡単。
;---------------------------------------------------------------------------
;しゃがみ弱パンチ
[Statedef 400]
type    = C
movetype= A
physics = C
juggle  = 5
poweradd= 15
ctrl = 0
anim = 400
sprpriority = 2
facep2 = 1

[State 400, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 400, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = C, NA ;しゃがみ通常打撃（Crouching, Normal Attack）
damage    = 23
priority  = 3
animtype  = Light
hitflag = MAF
guardflag = L
pausetime = 10,11
sparkno = -1
sparkxy = -10,-42
hitsound   = 5,0
guardsound = 6,0
ground.type = Low
ground.slidetime = 4
ground.hittime  = 10
ground.velocity = -4
air.velocity = -1.5,-3

[State 400, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = 30,-55
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 400, コントロール]
type = CtrlSet
trigger1 = Time = 5
value = 1

[State 400, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 11 ;しゃがむステートへ（コモンステート）

;---------------------------------------------------------------------------
; 効果の違う攻撃を連続でヒットさせる場合は、複数のHitDefが必要。
; ↓のしゃがみ強パンチのguardflagの効果がそれぞれ別々（MとMA）なように、
; パラメータが数値じゃなければ特に。こればかりはどうしようもない。
;---------------------------------------------------------------------------
;しゃがみ強パンチ
[Statedef 410]
type    = C
movetype= A
physics = C
juggle  = 6
poweradd= 50
ctrl = 0
anim = 410
sprpriority = 2

[State 410, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 410, 一発目のヒット定義]
type = HitDef
trigger1 = AnimElem = 5
attr = C, NA
damage    = 37
animtype  = Medium
hitflag = MAF
guardflag = M
pausetime = 12,12
sparkno = -1
sparkxy = -10,-55
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -4
air.velocity = -3,-4


[State 410, 二発目のヒット定義]
type = HitDef
trigger1 = AnimElem = 9
attr = C, NA
damage    = 36
animtype  = Medium
hitflag = MAF
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-83
hitsound   = 5,2
guardsound = 6,0
ground.type = High
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -7
air.velocity = -3,-4

[State 410, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = -10,-83
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 410, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;---------------------------------------------------------------------------
;しゃがみ弱キック
[Statedef 430]
type    = C
movetype= A
physics = C
juggle  = 5
poweradd= 22
ctrl = 0
anim = 430
sprpriority = 2

[State 430, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 430, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = C, NA
damage    = 28
animtype  = Light
hitflag = MAFD
guardflag = L
pausetime = 12,12
sparkno = -1
sparkxy = -10,-8
hitsound   = 5,1
guardsound = 6,0
ground.type = Low
ground.slidetime = 6
ground.hittime  = 10
ground.velocity = -5
air.velocity = -2,-3
down.velocity = -5,0
down.hittime = 20

[State 430, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = -10,-8
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 430, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;---------------------------------------------------------------------------
; 誰もが攻撃手段としてお世話になる「足払い」はダウン属性の攻撃。
; 実際に足払いの効果にするにはground.typeを「Trip」に、
; fallを「1」にする必要がある。もちろん当たればジャグルポイントも消費。
;
; ここで一つ補足。ground.typeが「Trip」になっている場合、
; 攻撃力や防御力に関係無く転ばした後に続く攻撃（「コンボ」など）が
;『全て無条件でダメージに補正が掛かる』。
; 必ず通常の半分のダメージ量に下がるので注意。
;---------------------------------------------------------------------------
;しゃがみ強キック（足払い攻撃）
[Statedef 440]
type    = C
movetype= A
physics = C
juggle  = 7
poweradd= 70
ctrl = 0
anim = 440
sprpriority = 2

[State 440, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 2

[State 440, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = C, NA
damage    = 72
hitflag = MAFD
guardflag = L
pausetime = 12,12
sparkno = -1
sparkxy = -5,-10
hitsound   = 5,2
guardsound = 6,0
ground.type = Trip ;この攻撃を食らうと相手は吹っ飛べば「転ぶアニメ」になる
ground.slidetime = 10
ground.hittime  = 15
ground.velocity = -1.5,-2
air.velocity = -1.2,-3
guard.velocity = -5
fall = 1

[State 440, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = -10,-10
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 440, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;===========================================================================
;---------------------------------------------------------------------------
; ジャンプ通常攻撃にChangeStateのコントローラが無いのは、
; Physicsを「A」にしているから。
; おまけフォルダの「小ネタ.txt」を参照。（Physicsの仕組み）
;
; しゃがみ通常技とは逆に、ジャンプ通常技は基本的に「中段属性」の攻撃。
; しゃがみガードが出来ないのが普通なので、guardflagを「HA」にしておくのが定石。
;「立ちガードの需要性」と「空対地のガードの揺さぶりによる駆け引き」を
; プレイヤーに楽しんでもらうための先人達の知恵だね。
;---------------------------------------------------------------------------
;ジャンプ弱パンチ
[Statedef 600]
type    = A
movetype= A
physics = A
juggle  = 2
poweradd= 11
ctrl = 0
anim = 600
sprpriority = 2

[State 600, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 600, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, NA ;空中通常打撃（Air, Normal Attack）
damage    = 20
guardflag = HA ;相手はしゃがみガードが出来ない
priority = 3
pausetime = 7,8
sparkno = -1
sparkxy = -10,-58
hitsound   = 5,0
guardsound = 6,0
ground.type = High
ground.slidetime = 5
ground.hittime  = 5
ground.velocity = -4
air.velocity = -1.3,-3

[State 600, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = 40,-28
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 600, コントロール]
type = CtrlSet
trigger1 = Time = 17
value = 1

;---------------------------------------------------------------------------
;ジャンプ強パンチ
[Statedef 610]
type    = A
movetype= A
physics = A
juggle  = 4
poweradd= 65
ctrl = 0
anim = 610
sprpriority = 2

[State 610, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 610, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, NA
damage = 72
guardflag = HA
priority = 4
pausetime = 12,12
sparkno = -1
sparkxy = -10,-55
hitsound   = 5,3
guardsound = 6,0
animtype = Med
ground.type = High
ground.slidetime = 17
ground.hittime  = 21
ground.velocity = -5
air.velocity = -3,-4

[State 610, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = 40,-43
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

;---------------------------------------------------------------------------
;ジャンプ弱キック
[Statedef 630]
type    = A
movetype= A
physics = A
juggle  = 3
poweradd= 20
ctrl = 0
anim = 630
sprpriority = 2

[State 630, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 630, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, NA
damage = 26
guardflag = HA
priority = 3
pausetime = 8,8
sparkno = -1
sparkxy = -5,-35
hitsound   = 5,0
guardsound = 6,0
ground.type = High
ground.slidetime = 6
ground.hittime  = 6
ground.velocity = -4
air.velocity = -2,-3

[State 630, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(10)
pos = 20,-28
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.4,0.4

[State 630, コントロール]
type = CtrlSet
trigger1 = Time = 17
value = 1

;---------------------------------------------------------------------------
;ジャンプ強キック
[Statedef 640]
type    = A
movetype= A
physics = A
juggle  = 4
poweradd= 65
ctrl = 0
anim = 640
sprpriority = 2

[State 640, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 640, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, NA
damage    = 70
guardflag = HA
priority = 4
pausetime = 12,12
sparkno = -1
sparkxy = -10,-40
hitsound   = 5,3
guardsound = 6,0
animtype = Med
ground.type = High
ground.slidetime = 15
ground.hittime  = 30
ground.velocity = -5
air.velocity = -3,-6

[State 640, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = 40,-18
Postype = p1
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

;===========================================================================
; 投げ技
;===========================================================================
;---------------------------------------------------------------------------
; エレクバイトが「作るのが退屈と感じる時もあるよ」って言ってるけど、
; 作り出したら意外とハマって楽しくなる投げ技。
; 投げる相手の正確な座標取りは面倒臭いけどね（コラ
; 投げ用のHitDefはテンプレートと見比べて確認すればわかるはず。
;---------------------------------------------------------------------------
;カンフースルー：掴み
[Statedef 800]
type    = S
movetype= A
physics = S
juggle  = 0
velset = 0,0
ctrl = 0
anim = 800
sprpriority = 2

[State 800, ヒット定義（投げ用）]
type = HitDef
trigger1 = Time = 0
attr = S, NT ;立ち通常投げ（Standing, Normal Throw）
hitflag = M-  ;マイナスが付加されてるので相手が食らい中の時は掴めない
priority = 1, Miss
sparkno = -1  ;-1だからヒットスパークは表示しない
p1sprpriority = 1
p1facing = 1
p2facing = 1
p1stateno = 810
p2stateno = 820
guard.dist = 0 ;相手のガード態勢に入る距離を０にしてるので、ガード不可
fall = 1

[State 800, ステート変更]
type = ChangeState
Trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;カンフースルー：成功（放り投げる）
[Statedef 810]
type    = S
movetype= A
physics = N
anim = 810
poweradd = 60

[State 810, 変数];「holdfwd」のコマンドが入力されているかどうかを判断する
type = VarSet
trigger1 = Time = 0
var(2) = command = "holdfwd"

[State 810, 音を鳴らす];掴み用
type = PlaySnd
trigger1 = AnimElem = 2
value = 1, 1

[State 810, 音を鳴らす];放り投げ用
type = PlaySnd
trigger1 = AnimElem = 7
value = 800, 0

[State 810, 掴んだ相手の位置１];TargetBindで相手を一時的に拘束
type = TargetBind
trigger1 = AnimElemTime(13) < 0
pos = 28, 0  ;自分の軸位置から相手の軸をX=28・Y=0の位置にする

[State 810, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(36) < 0
edge = 60,0 ;画面端を押す幅を変える（オレンジの線）

[State 810, 掴んだ相手の位置２]
type = TargetBind
trigger1 = AnimElemTime(14) >= 0 && AnimElemTime(22) < 0
pos = 58, 0

[State 810, 掴んだ相手の位置３]
type = TargetBind
trigger1 = AnimElemTime(23) >= 0 && AnimElemTime(26) < 0
pos = 47, 0

;[State 810, 振り返る];Var(2)が有効な時
;type = Turn
;trigger1 = var(2)
;trigger1 = AnimElem = 6

;[State 810, 軸位置移動];Var(2)が有効な時
;type = PosAdd
;trigger1 = var(2)
;trigger1 = AnimElem = 6
;x = -37

;[State 810, 掴んだ相手の向き];Var(2)が有効な時
;type = TargetFacing
;trigger1 = var(2)
;trigger1 = AnimElem = 6
;value = -1

[State 810, 掴んだ相手の位置４]
type = TargetBind
trigger1 = AnimElemTime(27) >= 0 && AnimElemTime(28) < 0
pos = 41, -60

[State 810, 掴んだ相手の位置５]
type = TargetBind
trigger1 = AnimElemTime(29) >= 0 && AnimElemTime(30) < 0
pos = 25, -75

[State 810, 掴んだ相手の位置６]
type = TargetBind
trigger1 = AnimElemTime(31) >= 0 && AnimElemTime(32) < 0
pos = 15, -90

[State 810, 掴んだ相手の位置７]
type = TargetBind
trigger1 = AnimElemTime(33) >= 0 && AnimElemTime(34) < 0
pos = -5, -96

[State 810, 掴んだ相手の位置８]
type = TargetBind
trigger1 = AnimElemTime(35) >= 0 && AnimElemTime(36) < 0
pos = -14, -90

[State 810, 掴んだ相手の位置９]
type = TargetBind
trigger1 = AnimElem = 36
pos = -50, -50

;相手が食らい状態の時のみ機能するTarget系コントローラ
[State 810, 掴んだ相手のライフ増減]
type = TargetLifeAdd
trigger1 = AnimElem = 36
value = -78

[State 810, 掴んだ相手のステート変更]
type = TargetState
trigger1 = AnimElem = 36
value = 821

;[State 810, 振り返る]
;type = Turn
;trigger1 = AnimElem = 36

;[State 810, 軸位置移動]
;type = PosAdd
;trigger1 = AnimElem = 15
;x = -10

[State 810, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; こっちは制御を奪った相手の食らいステート。
; 相手の制御を解く場合、「ChangeState」のコントローラにしてしまうと
;「相手が制御を奪われた状態のままになるバグ」が発生してしまう。
; なので必ず『SelfState』で相手のステートに戻し、制御を解除しないといけない。
; そこさえ注意しておけば、自由に相手の食らいモーションを設定出来る。
;
; デバッグ表示中に相手の情報の一部の文字が黄色になったら、それが
; P2StateNoやTargetStateで制御を奪われた状態の証。
; 投げが成功したらCtrl+Dで相手側の情報を確認だ！m9っ｀Д´)
;---------------------------------------------------------------------------
;カンフースルー：相手側１（掴まれて放り投げられるまで）
[Statedef 820]
type    = A
movetype= H
physics = N
velset = 0,0

[State 820, 相手のアニメ変更]
type = ChangeAnim2
trigger1 = Time = 0
value = 820

[State 820, 相手ステートに戻す]
type = SelfState
trigger1 = !GetHitVar(IsBound) ;（※３）
value = 5050

;---------------------------------------------------------------------------
; ※３：GetHitVar
;
; 　食らってしまった『相手の攻撃の効果』を
; 　自分側が「特殊な変数」に変換して判断するトリガー。
;　「GetHitVar(**)」の『**』に該当する、予め決められているパラメータを全て紹介。
;
; 　大概「相手のHitDefとProjectileのパラメータ」から引き出すので、かなり多い（苦笑
;
;
; 　XVelAdd             = 自分が負けて吹っ飛んだ時の「Ｘ軸方向の加速度(float)」を計測する
; 　YVelAdd             = 自分が負けて吹っ飛んだ時の「Ｙ軸方向の加速度(float)」を計測する
; 　Type                = 自分の「食らいアニメの種類」。（0=None・1=High・2=Low・3=Trip）
; 　AnimType            = 相手のHitDefに設定されている「animtype」を判断する
;                        （0=Light・1=Medium・2=Hard・3=Back・4=Up・5=DiagUp）
; 　GroundType          = 相手のHitDefに設定されている「ground.type」を判断する
; 　AirType             = 相手のHitDefに設定されている「air.type」を判断する
;
; 　Damage              = 相手から食らってしまった「ダメージ量」を計測する
; 　HitCount            = 相手の「現在のヒット数」を計測する
; 　FallCount           = 自分が「地面に激突した回数」を判断する
; 　HitShakeTime        = 自分の「ヒット硬直時間」を計測する
; 　HitTime             = 自分の「食らい時間」を計測する
; 　SlideTime           = 相手のHitDefに設定されている「slidetime」を判断する
; 　CtrlTime            = 相手のHitDefに設定されている「(air)guard.ctrltime」を判断する
; 　RecoverTime         = 横に倒れている時の「起き上がるまでの時間」を判断する
;
; 　XOff                = 相手のHitDefに設定されている「"snap"のＸ軸」を判断する（非推奨）
; 　YOff                = 相手のHitDefに設定されている「"snap"のＹ軸」を判断する（非推奨）
; 　ZOff                = 相手のHitDefに設定されている「"snap"のＺ軸」を判断する？（存在しないので無意味）
;
; 　XVel                = 相手のHitDefに設定されている「Ｘ軸の食らい状態の移動速度」を判断する
; 　YVel                = 相手のHitDefに設定されている「Ｙ軸の食らい状態の移動速度」を判断する
; 　YAccel              = 相手のHitDefに設定されている「yaccel」を判断する
; 　chainID             = 相手のHitDefに設定されている「chainID」を判断する
; 　Guarded             =「相手のコンボでの最後の攻撃をガードした場合」を判断する
; 　IsBound             =「TargetBindで掴まれてる状態」を判断する
;
; 　Fall                = 相手のHitDefに設定されている「fall」を判断する
; 　Fall.Damage         = 相手のHitDefに設定されている「fall.damage」を判断する
; 　Fall.XVel           = 相手のHitDefに設定されている「fall.xvelocity」を判断する
; 　Fall.YVel           = 相手のHitDefに設定されている「fall.yvelocity」を判断する
; 　Fall.Recover        = 相手のHitDefに設定されている「fall.recover」を判断する
; 　Fall.RecoverTime    = 相手のHitDefに設定されている「fall.recovertime」を判断する
; 　Fall.Kill           = 相手のHitDefに設定されている「fall.kill」を判断する
; 　Fall.EnvShake.Time  = 相手のHitDefに設定されている「fall.envshake.time」を判断する
; 　Fall.EnvShake.Freq  = 相手のHitDefに設定されている「fall.envshake.freq」を判断する
; 　Fall.EnvShake.Ampl  = 相手のHitDefに設定されている「fall.envshake.ampl」を判断する
; 　Fall.EnvShake.Phase = 相手のHitDefに設定されている「fall.envshake.phase」を判断する
;
;---------------------------------------------------------------------------
;カンフースルー：相手側２（放り投げられた）
[Statedef 821]
type    = A
movetype= H
physics = N
velset = 2.8,-7
poweradd = 40

[State 821, 速度加算];重力
type = VelAdd
trigger1 = 1
y = .4 ;現在のＹ軸方向の移動速度を「0.4ポイント」ずつ増やしていく

[State 821, ステート変更]
type = ChangeState
triggerall = Vel Y > 0
triggerall = Pos Y >= -20
triggerall = alive      ;生きている時
triggerall = CanRecover ;空中受け身が可能な時
trigger1 = Command = "recovery"
value = 5200

[State 821, 相手ステートに戻す]
type = SelfState
triggerall = Vel Y > 0
triggerall = alive
triggerall = CanRecover
trigger1 = Command = "recovery"
value = 5210

[State 821, 相手ステートに戻す]
type = SelfState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 0
value = 5100

;===========================================================================
; 必殺技
;===========================================================================
;---------------------------------------------------------------------------
; カンフーマンを代表する必殺技『カンフー突き手』。
; 最初に公開されたM.U.G.E.N（1999/1/1当時のMS-DOS版）では
; この技と超必殺技の『三烈カンフー突き手』しか持ってなかった。
;
;「P2BodyDist」は「自分から相手までの距離」を測るトリガー。
; Bodyの記述が無い「P2Dist」の場合は、
;「自分の軸位置から相手の軸位置との距離」を測る。
;---------------------------------------------------------------------------
;カンフー突き手（弱）
[Statedef 1000]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1000
ctrl = 0
sprpriority = 2

[State 1000, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 8
value = 0, 3

[State 1000, 移動速度]
type = VelSet
trigger1 = AnimElem = 5
x = 10

[State 1000, ヒット定義];相手に近い場合
type = HitDef
trigger1 = time = 0 ;AnimElem = 24
trigger1 = p2bodydist X < 40 ;相手とのＸ軸の距離が４０ピクセル未満の時
attr = S, SA ;立ち必殺技（Standing, Special Attack）
animtype  = Hard
damage    = 90, 4
priority  = 5
guardflag = MA
pausetime = 15,15
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -4,-3.5
air.velocity = -4,-3
fall = 1


[State 1000, ヒット定義];相手よりも遠い場合
type = HitDef
trigger1 = time = 0 ;AnimElem = 24
trigger1 = p2bodydist X >= 40 ;相手とのＸ軸の距離が４０ピクセル以上の時
attr = S, SA
animtype  = Hard
damage    = 85, 4
priority  = 4
guardflag = MA
pausetime = 15,15
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -7
air.velocity = -4,-2.5


[State 1000, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-60
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1000, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;カンフー突き手（強）
[Statedef 1010]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1010
ctrl = 0
sprpriority = 2

[State 1010, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 9
value = 0, 3

[State 1010, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 20

[State 1010, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 3
trigger2 = AnimElem = 13
x = 10

[State 1010, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 5
x = 5

[State 1010, 移動速度]
type = VelSet
trigger1 = AnimElem = 5
x = 4

[State 1010, ヒット定義]
type = HitDef
trigger1 = time = 0 ;AnimElem = 5
trigger1 = p2bodydist X < 40
attr = S, SA
animtype  = Hard
damage    = 90, 4
priority  = 5
guardflag = MA
pausetime = 15,15
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -4,-3.5
air.velocity = -4,-3
fall = 1

[State 1010, ヒット定義]
type = HitDef
trigger1 = time = 0 ;AnimElem = 5
trigger1 = p2bodydist X >= 40
attr = S, SA
animtype  = Hard
damage    = 85, 4
priority  = 4
guardflag = MA
pausetime = 15,15
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -7
air.velocity = -4,-2.5


[State 1010, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-60
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1010, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; ↓のステートでは少し難しい設定をいくつか実行してます。
;
; 投げ技の応用で、攻撃が当たれば相手を「特殊な吹っ飛び状態」にする事が出来る。
; HitDefと[Statedef 1025]辺りを見てね。
;---------------------------------------------------------------------------
;速いカンフー突き手
[Statedef 1020]
type    = S
movetype= A
physics = N
juggle  = 6
poweradd= -330 ;パワーゲージを３３０ポイント消費
velset = 0,0
anim = 1020
ctrl = 0
sprpriority = 2

[State 1020, 速度乗算]
type = VelMul
trigger1 = 1
x = .85 * ifelse(AnimElemTime(6) < 0, 1, .8) ;（※４）
;Ｘ軸の速度を毎フレーム「0.15ポイントにIfElse文の中身を掛けた数値分ずつ」遅くしていく事になる。

[State 1020, 残像]
type = AfterImage
trigger1 = Time = 0
time = 2                   ;残像が出ている時間（フレーム）
PalBright   =  30, 30,  0  ;残像の色の明るさ（赤,緑,青・ＲＧＢ）
PalContrast =  70, 70, 20  ;残像の色合い　　（赤,緑,青・ＲＧＢ）
PalAdd      = -10,-10,-10  ;残像の色の加算値（赤,緑,青・ＲＧＢ）
PalMul      = .85,.85,.50  ;残像の色の乗算値（赤,緑,青・ＲＧＢ・float）
Trans = Add                ;残像の透過処理（Add,Add1,Sub,None,AddAlpha）
TimeGap  = 1               ;残像の表示をスキップする間隔（デフォルトは1）
FrameGap = 2               ;残像の形を変化させる間隔（デフォルトは4）
length = 13                ;残像の表示する長さ（最大60・デフォルト20）

[State 1020, 残像表示時間]
type = AfterImageTime
trigger1 = AnimElemTime(8) < 0
time = 2

[State 1020, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 20           ;画像の色を変化させる時間（フレーム）
add = 32,16,0       ;画像の色合い（赤,緑,青・ＲＧＢ）
sinadd = 64,32,5,3  ;振幅赤,振幅緑,振幅青,周期

[State 1020, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 2
value = 0, 3

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 20

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 3
trigger2 = AnimElem = 12
x = 10

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 4
x = 5

[State 1020, 移動速度]
type = VelSet
trigger1 = AnimElem = 4
x = 13

[State 1020, ヒット定義]
type = HitDef
trigger1 = AnimElem = 4
attr = S, SA
animtype  = Hard
damage    = 95, 5
getpower  = 0
priority  = 4
guardflag = MA
pausetime = 8,7
sparkno = -1
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 20
ground.hittime  = 20
ground.velocity = -8,-7
guard.velocity = -7
air.velocity = -8,-7
airguard.velocity = -5, -4
fall = 1
p2stateno = 1025 ;この攻撃がヒットすれば相手は↓の[Statedef 1025]へ
p2facing = 1     ;相手の向きを指定


[State 1020, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-60
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1020, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; ※４：IfElse文
;
; 　条件を『分岐』させ、適用する値を細分化する命令。書式を見てみよう。
; 
; 　　IfElse(■,●,▲)
;
; 　　■ = 分岐させる条件（トリガーを使う）
; 　　● =「■」が『有効な時』に適用する値（真）
; 　　▲ =「■」が『有効ではない時』に適用する値（偽）
;
; 　つまり『もし■が実行されていたら●（真）、そうでない場合は▲（偽）』
; 　という処理の流れになる。
;
; 　M.U.G.E.NでのIfElse文は数式として分類されているので、
; 　●と▲には「数値（数値を適用するトリガー）」しか使えない。
;　（その中に更にIfElse文は何個も追加出来るけどね）
;
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;速いカンフー突き手：相手側１（ヒット硬直）
[Statedef 1025]
type    = A
movetype= H
physics = N
velset = 0,0

[State 1025, 相手のアニメ変更]
type = ChangeAnim2
trigger1 = 1
value = 1025

[State 1025, ステート変更]
type = ChangeState
trigger1 = HitShakeOver = 1 ;ヒット硬直が解けたら
value = 1026

;---------------------------------------------------------------------------
;「FrontEdgeBodyDist」は『自分から前方の画面端までの距離』を、
;「BackEdgeBodyDist」は『自分から後方の画面端までの距離』を計測するトリガー。
; 使ってないけど、さらに「Body」を抜いた『FrontEdgeDist』及び『BackEdgeDist』は
; それぞれ『自分の「軸位置」から前か後ろの画面端までの距離』を計測する事になる。
; ちなみにこれはＸ軸方向のみ。Ｙ軸方向の計測方法は無いので気を付けてね。
;---------------------------------------------------------------------------
;速いカンフー突き手：相手側２（吹っ飛び）
[Statedef 1026]
type    = A
movetype= H
physics = N

[State 1026, 食らい中の速度]
type = HitVelSet
trigger1 = Time = 0
x = 1
y = 1

[State 1026, 速度加算];重力
type = VelAdd
trigger1 = 1
y = .45

[State 1026, スクロール]
type = ScreenBound
triggerall = Pos y < -15
trigger1 = BackEdgeBodyDist < 65
trigger2 = FrontEdgeBodyDist < 65
value = 1         ;画面スクロールの影響を受けるか否か。0=受けない・1=受ける
movecamera = 0,1  ;カメラの動きをキャラに依存させるか否か。0=させない・1=させる（Ｘ軸,Ｙ軸）

[State 1026, ステート変更];壁に激突するステートへ
type = ChangeState
triggerall = Pos y < -15
trigger1 = BackEdgeBodyDist <= 20
trigger2 = FrontEdgeBodyDist <= 20
value = 1027

[State 1026, 相手ステートに戻す]
type = SelfState
trigger1 = (Vel y > 0) && (Pos y >= 0)
value = 5100

;---------------------------------------------------------------------------
;「Pos」はＸ軸が画面中央から、Ｙ軸が地面からの座標を決めるのに対し、
;『ScreenPos』は『常にウィンドウの一番左上からの横と縦の座標』を取る。
;---------------------------------------------------------------------------
;速いカンフー突き手：相手側３（壁に激突）
[Statedef 1027]
type    = A
movetype= H
physics = N

[State 1027, 振り返る]
type = Turn
trigger1 = (Time = 0) && (FrontEdgeBodyDist <= 30)

[State 1027, 軸位置移動]
type = PosAdd
trigger1 = Time = 0
x = 15 - BackEdgeBodyDist

[State 1027, 位置固定]
type = PosFreeze
trigger1 = 1
x = 1
y = 1

[State 1027, スクロール]
type = ScreenBound
trigger1 = 1
value = 1
movecamera = 0,1

[State 1027, エフェクト]
type = Explod
trigger1 = Time = 0
anim = F72
pos = 0, floor(screenpos y) - 50 ;（※５）
postype = back
sprpriority = 3

[State 1027, 相手のアニメ変更]
type = ChangeAnim2
trigger1 = Time = 0
value = 1027

[State 1027, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 0
value = F7,0

[State 1027, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 1028

;---------------------------------------------------------------------------
; ※５：端数処理（floorとか付いてる所）
;
; 　括弧で挟んで中の数値をどうするか？小数点以下の数値を
;　「四捨五入」したり「切り捨てたり」する命令。
; 　これはプログラミングでは『端数処理』と呼ばれているものの一部で、
;
; 　Ceil(**)  = 天井関数(Ceiling)
; 　　　　　　（正の値は小数点以下を四捨五入、負の値は小数点以下を切り捨てる）
;
; 　Floor(**) = 床関数
; 　　　　　　（正の値は小数点以下を切り捨て、負の値は小数点以下を四捨五入する）
;
; 　という処理を値に適用し、整数への補正を行う。
; 　もちろん「正の値」は『０よりも上の数値』、「負の値」は『０よりも下の数値』の事。
; 　例えば、正の値2.8・負の値-2.8があるとする。これにCeilかFloorを与えると、
;
; 　Ceil(2.8)   = 3
; 　Ceil(-2.8)  = -2
; 　Floor(2.8)  = 2
; 　Floor(-2.8) = -3
;
; 　となる。
;---------------------------------------------------------------------------
;速いカンフー突き手：相手側４（壁からのバウンド）
[Statedef 1028]
type    = A
movetype= H
physics = N

[State 1028, 相手の特定の攻撃属性無効];（※６）
type = NotHitBy
trigger1 = 1
value = , NA, NP

[State 1028, 移動速度]
type = VelSet
trigger1 = Time = 0
y = -6

[State 1028, 移動速度]
type = VelSet
trigger1 = Time = 0
x = 1.6

[State 1028, 振り返る]
type = Turn
trigger1 = (Time = 0) && (BackEdgeDist < 30)

[State 1028, 速度加算];重力
type = VelAdd
trigger1 = 1
y = .35

[State 1028, アニメ変更]
type = ChangeAnim
trigger1 = Time = 0
trigger1 = !SelfAnimExist(5052) ;「!」が付いてるので、[Begin Action 5052]が無い場合
value = 5050

[State 1028, アニメ変更]
type = ChangeAnim
trigger1 = Time = 0
trigger1 = SelfAnimExist(5052)  ;airファイルに[Begin Action 5052]が存在してれば
value = 5052

[State 1028, アニメ変更]
type = ChangeAnim
trigger1 = Vel Y > -2
trigger1 = Anim = 5050
trigger1 = SelfAnimExist(5060)
persistent = 0
value = 5060

[State 1028, アニメ変更]
type = ChangeAnim
trigger1 = Vel Y > -2
trigger1 = Anim = 5052
trigger1 = SelfAnimExist(5062)
persistent = 0
value = 5062

[State 1028, 相手ステートに戻す]
type = SelfState
trigger1 = (Vel y > 0) && (Pos y >= 0)
value = 5100

;---------------------------------------------------------------------------
; ※６：NotHitBy
;
; 　通常は「無敵状態」を設定するけど、本当は
;　『相手の「特定の属性を設定しているHitDef」を当たらなくする』コントローラ。
; 　特定の属性はHitDefの「attr」のパラメータが該当する。テンプレート参照。
; 　まぁvalueに与える値を見れば早い。
;
; 　value = (相手のattrの状態), (相手のattrの属性１)(相手のattrの属性２),・・・
;
; 　これが本来の記述方法。
;　「value2」を増やす事により、もう一つ無敵にしたい属性を指定出来る。
; 　(属性１)と(属性２)を省略して書けば
; 　相手の(状態)のみを判断して攻撃を当たらなくする事が出来る。（「SC」など）
; 　逆に(状態)に関係無く特定の(属性１)と(属性２)に対して無敵にしたい場合は、
;　『(状態)を省略して(属性１)と(属性２)を設定する』。
; 　というか全ての状態（SとCとA全部の場合）で属性を実行したい時、
; 　SCAを加えてしまうと(属性１)と(属性２)が機能しない（苦笑
;
; 　(例)　：　value = , AA,AP,AT
; 　もしくは　value = , NA,SA,HA,NP,SP,HP,NT,ST,HT
;
; 　実はSCAじゃなくても、この記述でも「無敵状態」になれる。
; 　例に挙げた見慣れない属性（AA・AP・AT）の意味は以下の通り。
;
; 　AA = 相手の「全ての打撃」が当たらなくなる　　　　（All Attack）
; 　AP = 相手の「全てのProjectile」が当たらなくなる　（All Projectile）
; 　AT = 相手の「全ての投げ」が当たらなくなる　　　　（All Throw）
;
; 　この３つは「HitBy」「ReversalDef」「HitOverRide」のコントローラと、
;　「HitDefAttr」のトリガーにも使える。
;===========================================================================
;---------------------------------------------------------------------------
; 膝蹴りの時にＡボタンかＢボタンを押すと
;「撥ね蹴り」が出る、飛び上がる連続入力攻撃技。
; ステートが「地上での開始→飛び膝蹴り（ボタンを押すと連続技）→着地」
; の３つに分かれている。
;---------------------------------------------------------------------------
;カンフーニー（弱）地上での開始
[Statedef 1050]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1050
ctrl = 0
sprpriority = 2

[State 1050, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1050, 何もしない];『Null』は何もしない命令。コントローラを機能させない時に使う。
type = null;PosAdd
trigger1 = AnimElem = 2
x = 15

[State 1050, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 4
x = 20

[State 1050, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
damage    = 80, 4
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-70
hitsound   = 5,3
guardsound = 6,0
ground.type = Low
ground.slidetime = 20
ground.hittime  = 20
ground.velocity = -3.5,-7
guard.velocity = -7
air.velocity = -3.5,-7
fall = 1


[State 1050, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(11)
pos = -10,-70
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1050, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 1051

;---------------------------------------------------------------------------
; ここでＡかＢのボタンを押すと別のステートにも変更される。難しくない処理。
;
; Physicsが「N」になっているので、摩擦や重力の影響を受けない。
; なので地面に着いたら「特定の着地ステート」へ変える必要がある。
;
;「hitdefpersist」で直前のステートで設定したHitDefの効果が
; 持続してるのに気を付けて。攻撃判定ボックス（Clsn1）があれば
; そのまま攻撃が当たるようになる。
;---------------------------------------------------------------------------
;カンフーニー（弱）飛び膝蹴り
[Statedef 1051]
type    = A
movetype= A
physics = N
velset = 2,-6
anim = 1051
hitdefpersist = 1 ;直前のステートのHitDefを持続させる

[State 1051, 速度加算];重力
type = VelAdd
trigger1 = 1
y = .4

[State 1051, ステート変更];追加入力
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
value = 1055

[State 1051, ステート変更];特定の着地ステートへ
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -10
value = 1052

;---------------------------------------------------------------------------
; 着地ステートでは必ず「Ｙ軸方向の軸位置を０」に、かつ「Ｙ軸の速度も０」に
; リセットする事。そうしないと地面にめり込むか、画面下へ消えてしまう（苦笑
;---------------------------------------------------------------------------
;カンフーニー：着地
[Statedef 1052]
type    = A
movetype= I
physics = A
anim = 1052
sprpriority = 1
velset = 0,0 ;ここで速度をリセットしている

;[State 1052, 軸位置];地面に軸をリセットしている
;type = PosSet
;trigger1 = Time = 0
;y = 0

[State 1052, 音を鳴らす];着地音
type = PlaySnd
trigger1 = Time = 0
value = 40, 0

[State 1052, コントロール]
type = CtrlSet
trigger1 = AnimElem = 3, -1
value = 1

;[State 1052, 軸位置移動]
;type = PosAdd
;trigger1 = AnimElem = 4
;x = -15

;[State 1052, ステート変更]
;type = ChangeState
;trigger1 = AnimTime = 0
;value = 0
;ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;カンフーニー：追加入力攻撃
[Statedef 1055]
type    = A
movetype= A
physics = N
anim = 1055

[State 1055, 音を鳴らす];カンフーマンの声
type = PlaySnd
trigger1 = Time = 0
value = 100,0
channel = 0 ;「チャンネル０」に設定

[State 1055, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 0
value = 0, 1

[State 1055, 軸位置移動]
type = PosAdd
trigger1 = Time = 0
x = 10
y = -10

[State 1055, 速度加算];重力
type = VelAdd
trigger1 = 1
y = 0.35;.45

[State 1055, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Med
damage    = 35 + (prevstateno = 1061)*5, 2 ;（※７）
priority  = 4
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-90
hitsound   = 5,2
guardsound = 6,0
ground.type = High
ground.slidetime = 15
ground.hittime  = 16
ground.velocity = -6
guard.velocity = -8
guard.ctrltime = 12
air.velocity = -4,-5
airguard.velocity = -4,-4.5
air.fall = 1


[State 1055, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -0,-90
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1055, ステート変更];特定の着地ステートへ
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -5
value = 1056

;---------------------------------------------------------------------------
; ※７：トリガーの代入
;
; 　なんと！数値でないトリガーは『式に代入』する事も可能！(ﾟдﾟ)
; 　トリガー１個単位が有効になっていれば「１」、無効なら「０」として判断される。
;
; 　↑のステートに使ってるHitDefのDamageのパラメータを例にして仕組みを説明。
; 　この場合、
; 　「prevstateno = 1061」が有効なら「１」、無効なら「０」
; 　（「PrevStateNo」は直前のステートを判断するトリガー）
; 　という事になるので、
; 　Damageは「prevstateno = 1061」が有効なら「35+1*5」で「40」になり、
; 　逆に無効なら「35+0*5」で「35」になる。
;
;　「StateType」と「MoveType」はその仕様により「２以上」も存在する。
; 　デバッグ表示中にそれぞれ「Type」と「MoveType」の項目を確認してみよう。
; 　おまけフォルダの「デバッグ表示の見方.gif」も見てね♪
;---------------------------------------------------------------------------
;カンフーニー：追加入力攻撃後の着地
[Statedef 1056]
type    = S
movetype= I
physics = S
anim = 1056
sprpriority = 1
velset = 0,0

[State 1056, 軸位置]
type = PosSet
trigger1 = Time = 0
y = 0

[State 1056, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 0
value = 40, 0

[State 1056, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;カンフーニー（強）
[Statedef 1060]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1060
ctrl = 0
sprpriority = 2

[State 1060, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1060, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 6

[State 1060, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 4
x = 21

[State 1060, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
damage    = 90, 4
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-70
hitsound   = 5,3
guardsound = 6,0
ground.type = Low
ground.slidetime = 20
ground.hittime  = 20
ground.velocity = -3.5,-7.5
guard.velocity = -7
air.velocity = -3.5,-7.5
fall = 1


[State 1060, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-60
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1060, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 1061

;---------------------------------------------------------------------------
;カンフーニー（強）飛び膝蹴り
[Statedef 1061]
type    = A
movetype= A
physics = N
velset = 2.5,-7.5
anim = 1061
hitdefpersist = 1

[State 1061, 速度加算]
type = VelAdd
trigger1 = 1
y = .35

[State 1061, ステート変更]
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
value = 1055

[State 1061, ステート変更]
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -10
value = 1052

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;速いカンフーニー
[Statedef 1070]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1070
ctrl = 0
sprpriority = 2

[State 1070, 残像]
type = AfterImage
trigger1 = Time = 0
length = 13
PalBright   =  30, 30,  0
PalContrast =  70, 70, 20
PalAdd      = -10,-10,-10
PalMul      = .85,.85,.50
TimeGap  = 1
FrameGap = 2
Trans = Add
time = 2

[State 1070, 残像表示時間]
type = AfterImageTime
trigger1 = 1
time = 2

[State 1070, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1070, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1070, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 6

[State 1070, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 4
x = 21

[State 1070, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Medium
getpower  = 0
damage    = 35, 3
priority  = 5
hitflag   = MA
guardflag = MA
pausetime = 8,7
sparkno = -1
sparkxy = -10,-70
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 18
ground.hittime  = 18
ground.velocity = -2,-6
guard.velocity = -7
air.velocity = -2,-6
fall = 1
fall.animtype = Med
fall.recovertime = 30


[State 1070, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-70
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1070, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 1071

;---------------------------------------------------------------------------
;速いカンフーニー：飛び膝蹴り
[Statedef 1071]
type    = A
movetype= A
physics = N
velset = 2.5,-9
anim = 1071

[State 1071, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 18
add = 32,16,0
sinadd = 64,32,5,3

[State 1071, 残像表示時間]
type = AfterImageTime
trigger1 = Vel Y < 0
time = 2

[State 1071, 速度加算]
type = VelAdd
trigger1 = 1
y = .5

[State 1071, 速度加算]
type = VelAdd
trigger1 = Vel Y >= -1
y = .2

[State 1071, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
getpower  = 0
damage    = 68, 4
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = -10,-70
hitsound   = 5,3
guardsound = 6,0
ground.type = Low
ground.slidetime = 18
ground.hittime  = 18
ground.velocity = -3,-9.5
guard.velocity = -7
air.velocity = -3,-9.5
fall = 1
fall.recovertime = 30


[State 1071, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = -10,-70
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1071, ステート変更]
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
trigger1 = Time > 0
value = 1075

[State 1071, ステート変更]
type = ChangeState
trigger1 = Vel Y > 0 ;&& Pos Y >= -10
value = 1052

;---------------------------------------------------------------------------
;速いカンフーニー：追加入力攻撃
[Statedef 1075]
type    = A
movetype= A
physics = N
anim = 1055

[State 1075, 残像表示時間]
type = AfterImageTime
trigger1 = 1
time = 2

[State 1075, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1075, 音を鳴らす];カンフーマンの声
type = PlaySnd
trigger1 = Time = 0
value = 100,0
channel = 0

[State 1075, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 0
value = 0, 1

[State 1075, 軸位置移動]
type = PosAdd
trigger1 = Time = 0
x = 10
y = -10

[State 1075, 速度加算]
type = VelAdd
trigger1 = 1
y = .45

[State 1075, 速度加算]
type = VelAdd
trigger1 = Vel Y >= -1
y = .2

[State 1075, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Med
damage    = 42, 2
getpower  = 0
priority  = 4
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-90
hitsound   = 5,2
guardsound = 6,0
ground.type = High
ground.slidetime = 15
ground.hittime  = 18
ground.velocity = -6
guard.velocity = -6
air.velocity = -4,-6
airguard.velocity = -4,-4.5
air.fall = 1

[State 1075, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-90
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1075, ステート変更]
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -5
value = 1056

;===========================================================================
;---------------------------------------------------------------------------
; ２ヒットする何の変哲も無い対空必殺技。これといって難しい処理は使ってない。
; カンフーニーとの併用で画面端でのコンボも上手く行けば出来る。
; 対空技に付き物な「無敵時間」が無いので、潰されやすいのが難点。
;---------------------------------------------------------------------------
;カンフーアッパー（弱）
[Statedef 1100]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1100
ctrl = 0
sprpriority = 2

[State 1100, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(13) < 0
value = 5,0

[State 1100, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1100, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Med
damage    = 52, 4
priority  = 5
guardflag = MA
pausetime = 4,8
sparkno = -1
sparkxy = 0,-48
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime  = 18
ground.velocity = -3
guard.velocity = -6
air.velocity = -2,-2
airguard.velocity = -4,-4.5
p2facing = 1
forcestand = 1 ;攻撃を当てた相手を強制的に「立ち状態」にする

[State 1100, ヒット定義]
type = HitDef
trigger1 = AnimElem = 16
attr = S, SA
animtype  = Up ;相手のアニメが『垂直吹っ飛び』になる（相手のairに[Begin Action 5051]がある場合）
damage    = 55, 4
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-110
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime  = 18
ground.velocity = -1,-9.5
guard.velocity = -6
air.velocity = -1,-7.5
airguard.velocity = -4,-4.5
p2facing = 1
fall = 1               ;相手は「ダウン状態」に
fall.recovertime = 40  ;相手は「４０フレームの間空中受け身が出来ない」
yaccel = .4            ;相手のＹ軸方向の移動速度を「0.4ポイント」ずつ増やしていく


[State 1100, ヒットエフェクト]
type = Explod
trigger1 = movehit
trigger1 = AnimElem = 16
anim = var(12)
pos = 0,-100
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1100, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;カンフーアッパー（強）
[Statedef 1110]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1110
ctrl = 0
sprpriority = 2

[State 1110, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(14) < 0
value = 5,0

[State 1110, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1010, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 12
x = 20

[State 1010, 移動速度]
type = VelSet
trigger1 = AnimElem = 5
x = 3

[State 1110, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Med
damage    = 57, 4
priority  = 5
guardflag = MA
pausetime = 4,8
sparkno = -1
sparkxy = 0,-48
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime  = 18
ground.velocity = -3
guard.velocity = -6
air.velocity = -2,-2
airguard.velocity = -4,-4.5
p2facing = 1
forcestand = 1

[State 1110, ヒット定義]
type = HitDef
trigger1 = AnimElem = 16
attr = S, SA
animtype  = Up
damage    = 60, 4
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-110
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 15
ground.hittime  = 18
ground.velocity = -1,-10.5
guard.velocity = -6
air.velocity = -1,-8.5
airguard.velocity = -4,-4.5
p2facing = 1
fall = 1
fall.recovertime = 50
yaccel = .4


[State 1110, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-100
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5


[State 1110, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;速いカンフーアッパー
[Statedef 1120]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1120
ctrl = 0
sprpriority = 2

[State 1120, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(14) < 0
value = 5,0

[State 1120, 残像]
type = AfterImage
trigger1 = Time = 0
length = 13
PalBright   =  30, 30,  0
PalContrast =  70, 70, 20
PalAdd      = -10,-10,-10
PalMul      = .85,.85,.50
TimeGap  = 1
FrameGap = 2
Trans = Add
time = 2

[State 1120, 残像表示時間]
type = AfterImageTime
trigger1 = AnimTime < -2
time = 2

[State 1120, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1120, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 20

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 3
trigger2 = AnimElem = 13
x = 10

[State 1020, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 5
x = 5

[State 1020, 移動速度]
type = VelSet
trigger1 = AnimElem = 5
x = 4

[State 1120, ヒット定義]
type = HitDef
trigger1 = Time = 0
trigger2 = AnimElem = 4
attr = S, SA
animtype  = Med
damage    = 30, 4
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 6,10
sparkno = -1
sparkxy = 0, ifelse(Time = 0, -48, -55)
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 18
ground.hittime  = 21
ground.velocity = -3
guard.velocity = -6
air.velocity = -2,-2
airguard.velocity = -4,-4.5
p2facing = 1
forcestand = 1

[State 1120, ヒット定義]
type = HitDef
trigger1 = AnimElem = 16
attr = S, SA
animtype  = Up
damage    = 68, 4
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-110
hitsound   = 5,2
guardsound = 6,0
ground.type = Low
ground.slidetime = 18
ground.hittime  = 21
ground.velocity = -1.2,-11
guard.velocity = -6
air.velocity = -1.2,-9
airguard.velocity = -4,-4.5
p2facing = 1
fall = 1
fall.recovertime = 60
yaccel = .4


[State 1120, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-100
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5



[State 1120, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
;---------------------------------------------------------------------------
; Win版カンフーマンの新必殺技、カンフーブロー。
; 要は崩拳で、両手に攻撃判定が有り、Simulにて挟み撃ちされた場合の
; 打開策用である。画面振動を起こすコントローラ（EnvShake）にも注目しよう。
;---------------------------------------------------------------------------
;カンフーブロー（弱）
[Statedef 1200]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 100
velset = 0,0
anim = 1200
ctrl = 0
sprpriority = 2

[State 1200, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1200, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1200, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1200, 画面振動];※縦揺れしか出来ません。横揺れ用は存在しません。
type = EnvShake
trigger1 = AnimElem = 6
time = 4    ;「画面が揺れる時間」を設定。
ampl = 2    ;「画面が揺れる縦の幅（範囲）」を設定。デフォルトは-4。
freq = 180  ;「画面が揺れる速度」を設定。デフォルトは60。
;phase = 90 ;「画面が揺れる最初の段階の強さ（規模）」を設定。デフォルトは90。
            ;ここで決めた段階から徐々に揺れが弱くなっていく。

[State 1200, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 100, 6
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-65
hitsound   = 5,3
guardsound = 6,0
ground.type = Low
ground.slidetime = 16
ground.hittime  = 18
ground.velocity = -10
ground.cornerpush.veloff = -12 ;相手が画面端の場合、自分に「ヒットバック」の速度を与える
guard.velocity = -7
air.velocity = -3.5,-4.5
airguard.velocity = -3.5,-4.5

[State 1200, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-65
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5


[State 1200, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;カンフーブロー（強）
[Statedef 1210]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1210
ctrl = 0
sprpriority = 2

[State 1210, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1210, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1210, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1210, 画面振動]
type = EnvShake
trigger1 = AnimElem = 6
time = 8
ampl = 2
freq = 170

[State 1210, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 125, 9
priority  = 5
guardflag = MA
pausetime = 12,12
sparkno = -1
sparkxy = 0,-65
hitsound   = 5,3
guardsound = 6,0
ground.type = Low
ground.slidetime = 18
ground.hittime  = 20
ground.velocity = -10
ground.cornerpush.veloff = -15
guard.velocity = -8
air.velocity = -4,-4.5
airguard.velocity = -4,-4.5

[State 1210, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-65
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1210, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;速いカンフーブロー
[Statedef 1220]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1220
ctrl = 0
sprpriority = 2

[State 1220, 残像]
type = AfterImage
trigger1 = Time = 0
length = 13
PalBright   =  30, 30,  0
PalContrast =  70, 70, 20
PalAdd      = -10,-10,-10
PalMul      = .85,.85,.50
TimeGap  = 1
FrameGap = 2
Trans = Add
time = 2

[State 1220, 残像表示時間]
type = AfterImageTime
trigger1 = AnimTime < -2
time = 2

[State 1220, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1220, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1220, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1220, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1220, 画面振動]
type = EnvShake
trigger1 = AnimElem = 6
time = 8
ampl = 3
freq = 170

[State 1220, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 125, 9
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 15,15
sparkno = -1
sparkxy = 0,-65
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 20
ground.hittime  = 30
ground.velocity = -15
ground.cornerpush.veloff = -20
guard.velocity = -9
air.velocity = -5,-5
airguard.velocity = -5,-5
air.fall = 1
fall.animtype = Hard
yaccel = .4

[State 1220, ヒットエフェクト]
type = Explod
trigger1 = movehit
anim = var(12)
pos = 0,-65
Postype = p2
facing = -1
sprpriority = 9
random = 5, 15
ownpal = 1
ontop = 1
pausemovetime = 99999
supermovetime = 99999
supermove = 1
bindtime = 1
persistent = 0
ignorehitpause = 1
scale = 0.5,0.5

[State 1220, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
; 超必殺技
;===========================================================================
;---------------------------------------------------------------------------
; 最初のM.U.G.E.Nから存在するカンフーマンの超必殺技。
; 超必なので攻撃を当ててもゲージを増やさないようにする事に気を付けるだけで、
; 後は結構簡単な処理にまとめられてる。
; 超必時の暗転用の処理（SuperPause）にも刮目せよ！m9っ｀Д´)
;---------------------------------------------------------------------------
;三烈カンフー突き手
[Statedef 3000]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 3000
ctrl = 0
sprpriority = 2

[State 3000, 物理的なキャラの幅]
type = Width
trigger1 = AnimElem = 2, >= 0
value = 15,0

[State 3000, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 2, 1
anim = s6501       ;超必エフェクトのアクションナンバー。通常は「fightfx.air」のアニメを使うが、
                 ;左に「s」を付ければ「自分のairファイル」のアクションナンバーが使える。
pos = 25, -57    ;超必エフェクトの座標（Ｘ軸,Ｙ軸）
sound = 20, 0    ;超必発動サウンド。通常は「common.snd」の音を使うが、
                 ;左に「s」を付ければ「自分のsndファイル」の音が使える。
poweradd = -1000 ;パワーゲージ増減量
;time = 50       ;ポーズする時間（フレーム）
;movetime = 0    ;ポーズ中に動ける時間。timeよりも多いとバグる（デフォルトは０）
;darken = 1      ;ポーズ中画面を暗転するか否か（0=しない・1=する）
                 ;暗転する色は「ownpal」の有無により「Explod」や「ヘルパー」にも影響するので注意。
;p2defmul = 1.0  ;直前のステートを「SuperPauseを設置したステート」でキャンセルした場合、
                 ;『相手に一時的に与える防御力乗算値(float)』。
                 ;デフォルトは０。（相手の防御力が上がり、ダメージ量に下方修正が掛かる）
                 ;１にすれば『ダメージ補正が掛からなくなる』事になる。
                 ;相手が食らい状態以外（相手のMoveTypeが「H」以外）になれば解除される。
;unhittable = 1  ;ポーズ中自分を無敵状態にするか否か（0=しない・1=する）
                 ;デフォルトは１。

[State 3000, 残像]
type = AfterImage
trigger1 = AnimElem = 2, 1
time = 2

[State 3000, 残像表示時間]
type = AfterImageTime
trigger1 = AnimElemTime(2) >= 1 && Time < 60
time = 2

[State 3000, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 11

[State 3000, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(14) < 0
value2 = C, NA
time = 1

[State 3000, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
trigger2 = AnimElem = 12
trigger3 = AnimElem = 20
value = 0, 3

[State 3000, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 2
x = 20

[State 3000, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 3
trigger2 = AnimElem = 11
trigger3 = AnimElem = 13
trigger4 = AnimElem = 19
trigger5 = AnimElem = 21
trigger6 = AnimElem = 31
x = 10

[State 3000, 移動速度]
type = VelSet
trigger1 = AnimElem = 5
trigger2 = AnimElem = 13
trigger3 = AnimElem = 21
x = 6

[State 3000, 軸位置移動]
type = PosAdd
trigger1 = AnimElem = 5
x = 5

[State 3000, ヒット定義]
type = HitDef
trigger1 = AnimElem = 5
trigger2 = AnimElem = 18
trigger3 = AnimElem = 22
attr = S, HA ;立ち超必殺技（Standing, Hyper Attack）
animtype  = Hard
damage    = 72,4
getpower  = 0 ;攻撃を当てた時にパワーゲージを増やさないようにしてる
priority  = 6
guardflag = MA
pausetime = 15,15
sparkno = s7201
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 30
ground.hittime  = 30
ground.velocity = -6
air.velocity = -3,-2.8
air.fall = 1
fall.animtype = Hard
fall.recover = 0



[State 3000, ヒット定義];フィニッシュ
type = HitDef
trigger1 = AnimElem = 31
attr = S, HA
animtype  = Hard
damage    = 75,4
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 15,15
sparkno = s7202
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 30
ground.hittime  = 30
ground.velocity = -5, -4
guard.velocity = -12
air.velocity = -5,-4
airguard.velocity = -3,-3
fall.animtype = Hard
fall = 1
fall.recover = 0

[State 3000, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
;---------------------------------------------------------------------------
; カンフーアッパーの超必殺技版。
; 攻撃がヒットしたら別のステートへ変更する処理と、
; HitDefに特殊なパラメータを加えている程度。
; テンプレートと見比べたら理解出来るはず。
;---------------------------------------------------------------------------
;スマッシュカンフーアッパー
[Statedef 3050]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 3050
ctrl = 0
sprpriority = 2

[State 3050, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(16) < 0
value = 5,0


[State 3050, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 2
pos = -5, -55
;anim = s6500
sound = 20, 0
poweradd = -1000
time = 80       ;ポーズする時間（フレーム）
movetime = 80    ;ポーズ中に動ける時間。timeよりも多いとバグる（デフォルトは０）
darken = 1      ;ポーズ中画面を暗転するか否か（0=しない・1=する）




[State 3050, 残像]
type = AfterImage
trigger1 = AnimElem = 2
time = 2

[State 3050, 残像表示時間]
type = AfterImageTime
trigger1 = AnimElemTime(2) >= 0
time = 2

[State 3050, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 10

[State 3050, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 3050, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = S, HA
animtype  = Up
damage    = 155, 12
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 30,30
sparkno = s7202
sparkxy = 0,-110
sparkscale = 0.5,0.5
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 26
ground.hittime  = 26
ground.velocity = -1.3,-25
guard.velocity = -11
air.velocity = -1.3,-25
airguard.velocity = -4.5,-5
envshake.time = 25        ;攻撃を当てた場合の画面振動の処理
envshake.ampl = 7
envshake.freq = 176
p2facing = 1
fall = 1
fall.recover = 0          ;相手は空中受け身が出来なくなる
fall.damage = 70          ;相手が地面に激突した瞬間のダメージ量
fall.envshake.ampl = 6    ;相手が地面に激突した瞬間の画面振動
fall.envshake.freq = 178
fall.envshake.time = 15
mindist = 50,-100         ;攻撃を当てた相手の位置を補正する最小の座標
maxdist = 100,-10         ;攻撃を当てた相手の位置を補正する最大の座標
yaccel = .8


[State 3050, ステート変更];攻撃がヒットした場合
type = ChangeState
trigger1 = MoveHit
value = 3051

[State 3050, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;スマッシュカンフーアッパー：ヒット後
[Statedef 3051]
type    = S
movetype= A
physics = S
anim = 3051


[State 3051, 残像表示時間]
type = AfterImageTime
trigger1 = AnimTime < -2
time = 2

[State 3051, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
; ちょっとこ丸が追加したステート
;===========================================================================
;---------------------------------------------------------------------------
; ここから下の５つのステートは僕が修正前の和訳ＫＦＭに
; 追加パッチとして入れていたものです。修正と調整も済んでます。
; 本家のカンフーマンには存在しません。
; 見慣れないステートコントローラ・トリガーやテクニックがあるので
; キャラ作りのスキルを上げたい人は参考にしてください。
;
; ただし、作成者自身のスキルアップのためにわざと「不完全な状態」にしてます。
; 試行錯誤考えながら改善して、あなたが今作っているキャラに流用してください。
;===========================================================================
;---------------------------------------------------------------------------
; 単なるパワーゲージを溜めるためのステート。
; 攻撃用のステートじゃないので、movetypeは「I」にしてます。
;
; このステートで「hold_c」のコマンドを入力し続けてる間（押しっぱなし）は、
;「PowerAdd」にてパワーゲージが毎フレーム６ポイント増加するようになってる。
;
; エフェクト画像を消すための命令（RemoveExplod）を
;『常時監視ステート（‐２）』にて設定しているので、そちらも参照してね。
;---------------------------------------------------------------------------
;パワー溜め（特殊行動）
[Statedef 700]
type     = S
movetype = I
physics  = S
ctrl     = 0
velset   = 0,0
anim     = 700
sprpriority = 1

[State 700, パワーゲージ増減]
type = PowerAdd
trigger1 = 1
value = ceil(palno/3)+6

[State 700, 押し判定]
type = PlayerPush
trigger1 = 1
value = 0 ;相手を押さず、すり抜ける事が出来る。

[State 700, エフェクト];「テンプレート.txt」参照
type = Explod
trigger1 = NumExplod(130) = 0 ;ＩＤナンバー「130」のExplodが画面中に１枚も出ていない時
anim = f130
facing = -1
postype = p1
pos = -5,0
sprpriority = 3
ownpal = 1
removetime = -1 ;「-1」なのでアニメーションが終わらず常に繰り返す
ID = 130

[State 700, ステート変更]
type = ChangeState
triggerall = var(59) = 1
trigger1 = p2movetype = A ||InGuardDist ||enemynear,NumProj ;AI用
trigger2 = Power = powermax       ;パワーゲージがレベル３まで溜まったら
trigger3 = (abs(p2bodydist X) < 40) && p2movetype != H 
value = 0
ctrl = 1

[State 700, ステート変更]
type = ChangeState
triggerall = var(59) = 0
trigger1 = command != "hold_c" ;「hold_c」のコマンドではない時（Ｃボタンが離されたら）
trigger2 = Power = powermax       ;パワーゲージがレベル３まで溜まったら
value = 0
ctrl = 1

;===========================================================================
;---------------------------------------------------------------------------
; 同人格闘ゲーム『メルティブラッド』よりボタン１個で出せる、
; 相手の攻撃を受け流す防御システム。初代無印版に近い仕様にしてます。
; 複数のテクニックの組み合わせで再現出来る。
;
; これを応用して、ストリートファイター?の『ブロッキング』、
; 餓狼MOTWの『ジャストディフェンス（ＥＦＺのリコイルガード）』も再現出来る。
;---------------------------------------------------------------------------
;シールド（特殊行動）
[Statedef 701] 
type     = U ;前のステートの状態を引き継ぐ
movetype = I
physics  = N
ctrl     = 0
anim     = ifelse(StateType=A,705,ifelse(StateType=C,703,701))

[State 701, 状態変更];自分の状態や体勢などを変えるコントローラ
type = StateTypeSet
trigger1 = StateType = A ;自分が今「空中」の状態なら、
Physics = A              ;「物理的な体勢」を「Ａ」にする。自動で重力が掛かるようになるし、
                         ;「Pos Y」が「0以上」になれば強制的に「着地ステート（[Statedef 52]）」になる。

;こちらは相手のHitDef用
[State 701, 受け止め定義];（※８）
type = ReversalDef
trigger1 = Time = 0
reversal.attr = SCA, AA,AP              ;受け止める相手の攻撃属性を指定
;reversal.attr = SCA, NA,SA,HA,NP,SP,HP ;（↑と意味は同じ）
pausetime     = 0,14
numhits       = 0
sparkno       = -1
sparkxy       = 0,0
hitsound      = -1
P1StateNo     = 702

;こちらは相手のProjectile用
[State 701, 食らい上書き];（※９）
type = HitOverRide
trigger1 = Time = [0,13]
time = 1
attr = SCA, AA,AP              ;上書き出来る相手の攻撃属性を指定
;attr = SCA, NA,SA,HA,NP,SP,HP ;（↑と意味は同じ）
;forceair = 1                  ;上書きしたら「空中状態」にするか否か（デフォルトは０）
stateno = 702                  ;上書き先のステート
;slot = 0                      ;このHitOverRideのスロットナンバー（デフォルトは０）
IgnoreHitPause = 1

[State 701, 画像の色]
type = PalFX
trigger1 = Time = 0
time = 13
add = 20,70,150
sinadd = 64,32,5,3

[State 701, 軸位置]
type = PosSet
trigger1 = StateType != A
y = 0

[State 701, 移動速度]
type = VelSet
trigger1 = StateType != A
x = 0
y = 0

[State 701, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (Time > 19)
value = ifelse(StateType=A,51,ifelse(StateType=C,11,0))
ctrl = 1

;---------------------------------------------------------------------------
; ※８：ReversalDef
;
; 　攻撃判定ボックス（Clsn1）の設置はHitDefを有効にするためだけでなく、
; 　相手の攻撃を受け止める判定を設ける『ReversalDef』にも使う。
;
; 　実際に攻撃を受け止めるには、「attr」の代わりに
;　「reversal.attr」のパラメータを使い、受け止める相手の攻撃属性を指定する。
; 　それ以外はHitDefと設定の仕方が一緒。
;
; 　ReversalDefの設置について二つ注意する事がある。
;
; 　まず、ReversalDefは『Projectileを受け止める事は出来ない』。
; 　あくまでもこのコントローラは「HitDefを受け止めるもの」であるため。
; 
; 　そしてそのHitDefに関係するもう一つの注意点。
;
;　「HitDefを使っている攻撃用ヘルパー」を受け止める場合、
; 　ReversalDefにP2StateNoを設置していたならば
;　『そのヘルパーがそのステートに変わり、相手キャラに分身してしまう』。
; 　波動拳の気弾などにClsn1のあるヘルパーが使われてる場合は明らかにバグになる。
;　「受け止める目標がヘルパーになってしまった場合に、分身するバグを回避する方法」
; 　を自分・相手両方共に駆使する必要がある。コンプリートゲームなら楽だけどね。
;
; 　ちなみに、『MoveReversed』というトリガーは
;　「相手のReversalDef」に「自分のHitDef」が受け止められた時間を計測するトリガー。
; 　逆に「自分のReversalDef」で相手の攻撃を受け止めた事を判断する場合は、
; 　なぜか「MoveHit」が使える。なんでか教えてよエレクバイト先生！（コラ
; 　まぁReversalDefも「攻撃判定を定義する」系統だからなんだろうけどね。
;
;---------------------------------------------------------------------------
; ※９：HitOverRide
;
; 　この命令はその名の如く、攻撃を食らった時
;　『食らい状態を任意のステートで上書きする事が出来る』命令。
; 　これの応用で『ブロッキング』なども作る事が出来る。
;
; 　しかし相手のHitDefに「P2StateNo」がある場合、自分がHitOverRideで
; 　食らい動作を上書き出来る状態なら、
;　『その攻撃を食らわなくなる（相手のHitDefが空振る）』ので注意。
;
;---------------------------------------------------------------------------
;シールド成功
[Statedef 702]
type     = U
movetype = I
physics  = N
ctrl     = 0
velset   = 0,0
anim     = ifelse(StateType=A,706,ifelse(StateType=C,704,702))

[State 702, 音を鳴らす]
type = PlaySnd
trigger1 = Time = 0
value = 1, 1

[State 702, 状態変更]
type = StateTypeSet
trigger1 = StateType = A
Physics = A
IgnoreHitPause = 1

[State 702, ライフ増減]
type = LifeAdd
trigger1 = Time = 0
value = ceil(palno/3)+10 ;ライフが１０ポイント回復
IgnoreHitPause = 1

[State 702, 時間停止];自分も相手も制限時間も一時的に止める（ポーズ）
type = Pause
trigger1 = Time = 0
time = 13      ;ポーズする時間（フレーム）
movetime = 13  ;ポーズ中に動ける時間。timeよりも多いとバグる（デフォルトは０）
IgnoreHitPause = 1

[State 702, コントロール]
type = CtrlSet
trigger1 = Time = 14
value = 1

[State 702, 画面全体の色]
type = EnvColor
trigger1 = Time = 0
value = 255,255,255 ;画面全体を塗り潰す色合い（赤,緑,青）
time = 1

[State 702, 軸位置]
type = PosSet
trigger1 = StateType != A
y = 0

[State 702, 移動速度]
type = VelSet
triggerall = StateType = A
trigger1 = Time = [0,13]
x = 0
y = 0

[State 702, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (Time > 19)
value = ifelse(StateType=A,51,ifelse(StateType=C,11,0))
ctrl = 1





;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
; ■最後に『コモンステート』について■
; コモンステートとは、全キャラ共通の基本動作のステートです。
; 通常は特に変更しない限り、M.U.G.E.N本体のdataフォルダにある
;「common1.cns（コモンステートファイル）」を使います。
;
; しかし、もしもあなたのキャラのステートファイルでcommon1.cnsと同じ番号の
; 基本動作のステートを作った場合は処理が上書きされ、
; common1.cns側の同じ番号のステートは無効になります。
;
; common1.cnsのプログラム優先度は最低に属しているので、
; ステートの作成には番号に注意しないといけません。
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------
;---------------------------------------------------------------------------

;===========================================================================
; 超必殺技
;===========================================================================
;---------------------------------------------------------------------------
; 最初のM.U.G.E.Nから存在するカンフーマンの超必殺技。
; 超必なので攻撃を当ててもゲージを増やさないようにする事に気を付けるだけで、
; 後は結構簡単な処理にまとめられてる。
; 超必時の暗転用の処理（SuperPause）にも刮目せよ！m9っ｀Д´)
;---------------------------------------------------------------------------
;デンプシーロール突っ込み
[Statedef 3100]
type    = S
movetype= A
physics = N
juggle  = 4
velset = 0,0
anim = 1002
ctrl = 0
sprpriority = 2

[State 3100, 物理的なキャラの幅]
type = Width
trigger1 = AnimElem = 2, >= 0
value = 15,0

[State 3100, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 1;2, 1
anim = s6501       ;超必エフェクトのアクションナンバー。通常は「fightfx.air」のアニメを使うが、
                 ;左に「s」を付ければ「自分のairファイル」のアクションナンバーが使える。
pos = 25, -57    ;超必エフェクトの座標（Ｘ軸,Ｙ軸）
sound = 20, 0    ;超必発動サウンド。通常は「common.snd」の音を使うが、
                 ;左に「s」を付ければ「自分のsndファイル」の音が使える。
poweradd = -3000 ;パワーゲージ増減量
time = 50       ;ポーズする時間（フレーム）
movetime = 0    ;ポーズ中に動ける時間。timeよりも多いとバグる（デフォルトは０）
darken = 1      ;ポーズ中画面を暗転するか否か（0=しない・1=する）
                 ;暗転する色は「ownpal」の有無により「Explod」や「ヘルパー」にも影響するので注意。
;p2defmul = 1.0  ;直前のステートを「SuperPauseを設置したステート」でキャンセルした場合、
                 ;『相手に一時的に与える防御力乗算値(float)』。
                 ;デフォルトは０。（相手の防御力が上がり、ダメージ量に下方修正が掛かる）
                 ;１にすれば『ダメージ補正が掛からなくなる』事になる。
                 ;相手が食らい状態以外（相手のMoveTypeが「H」以外）になれば解除される。
;unhittable = 1  ;ポーズ中自分を無敵状態にするか否か（0=しない・1=する）
                 ;デフォルトは１。

[State 3100, 残像]
type = AfterImage
trigger1 = AnimElem = 2, 1
time = 2

[State 3100, 残像表示時間]
type = AfterImageTime
trigger1 = AnimElemTime(2) >= 1 && Time < 65
time = 2

[State 3100, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 11

[State 3100, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(12) < 0
value2 = C, NA
time = 1

[State 3100, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 10
value = 0, 3

[State 3100, 軸位置移動]
type = PosAdd
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(12) < 0
x = 30

[State 3100, ヒット定義]
type = HitDef
trigger1 = time = 0;AnimElem = 10
attr = S, HA ;立ち超必殺技（Standing, Hyper Attack）
animtype  = Hard
damage    = 0,0
getpower  = 0 ;攻撃を当てた時にパワーゲージを増やさないようにしてる
priority  = 6
guardflag = MA
pausetime = 15,15
sparkno = -1
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 30
ground.hittime  = 80
ground.velocity = 0
air.velocity = 0
air.fall = 1
fall.animtype = Hard
fall.recover = 0
forcestand = 1 


[State 3100, ステート変更]
type = ChangeState
trigger1 = movehit
value = 3101

[State 3100, ステート変更]
type = ChangeState
trigger1 = time >= 65
trigger2 = moveguarded
value = 0
ctrl = 1

;デンプシーロール乱舞-----------------------------------------------------------------------------

[Statedef 3101]
type    = S
movetype= A
physics = N
juggle  = 4
velset = 0,0
anim = 1001
ctrl = 0
sprpriority = 2

[State 3101, 物理的なキャラの幅]
type = Width
trigger1 = AnimElem = 2, >= 0
value = 15,0

[State 3101, 残像]
type = AfterImage
trigger1 = AnimElem = 2, 1
time = 2

[State 3101, 残像表示時間]
type = AfterImageTime
trigger1 = AnimElemTime(2) >= 1 && Time < 200
time = 2

[State 3101, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElem = 2
value = , NA, SA, AT
time = 11

[State 3101, 相手の特定の攻撃属性無効]
type = NotHitBy
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(14) < 0
value2 = C, NA
time = 1

;---------------------[相手制御]
[State 3101, 2]
type = TargetBind
trigger1 = time = 0
pos = 50,0



[State 3101, ヒット定義]
type = HitDef
trigger1 = AnimElem = 25
trigger2 = AnimElem = 50
trigger3 = AnimElem = 75
trigger4 = AnimElem = 100
trigger5 = AnimElem = 125
trigger6 = AnimElem = 150
attr = S, HA ;立ち超必殺技（Standing, Hyper Attack）
animtype  = Hard
damage    = 72,4
getpower  = 0 ;攻撃を当てた時にパワーゲージを増やさないようにしてる
priority  = 6
guardflag = MA
pausetime = 15,15
sparkno = s7201
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 30
ground.hittime  = 80
ground.velocity = 0
air.velocity = 0
air.fall = 1
fall.animtype = Hard
fall.recover = 0



[State 3101, ヒット定義];フィニッシュ
type = HitDef
trigger1 = AnimElem = 175
attr = S, HA
animtype  = Hard
damage    = 125,4
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 15,15
sparkno = s7202
sparkxy = -10,-60
hitsound   = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 30
ground.hittime  = 30
ground.velocity = -5, -4
guard.velocity = -12
air.velocity = -5,-4
airguard.velocity = -3,-3
fall.animtype = Hard
fall = 1
fall.recover = 0

[State 3101, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;===========================================================================
; 準常時監視ステート（‐３）
;===========================================================================
;---------------------------------------------------------------------------
; こちらは通常の食らい状態以外の「P2StateNo」や「TargetState」等で制御された、
; 作成者が任意に指定した相手側の食らいステートに限り、
; 登録したステートコントローラが有効にはなりません。
; ‐１や‐２と上手く使い分けて行きましょう。
;---------------------------------------------------------------------------

[Statedef -3]

;-----------------------------------
;ここは「ジャンプ」か「バックステップ」をした後に
;着地する音を鳴らす設定をしています。

[State -3, 音を鳴らす]
type = PlaySnd
triggerall = Time = 1
trigger1 = stateno = 52  ;着地ステート
trigger2 = stateno = 106 ;バックステップ後の着地ステート
value = 40, 0


