[Data]
;Amount of life to start with
;体力ゲージの初期値
life = 1200
;Amount of power stocks to have (divided by 1000). Defaults to 3000
power = 3000
;attack power (more is stronger)
;攻撃ダメージ
attack = 100
;defensive power (more is stronger)
;体力パワー
defence = 100
;Percentage to increase defense everytime player is knocked down
fall.defence_up = 50
;Time which player lies down for, before getting up
liedown.time = 60
;Number of points for juggling
airjuggle = 15
;Default hit spark number for HitDefs
sparkno = 2
;Default guard spark number
guard.sparkno = 40
;1 to enable echo on KO
KO.echo = 0
;Volume offset (negative for softer)
volume = 0
;Variables with this index and above will not have their values
;reset to 0 between rounds or matches. There are 60 int variables,
;indexed from 0 to 59, and 40 float variables, indexed from 0 to 39.
;If omitted, then it defaults to 60 and 40 for integer and float
;variables repectively, meaning that none are persistent, i.e. all
;are reset. If you want your variables to persist between matches,
;you need to override state 5900 from common1.cns.
IntPersistIndex = 60
FloatPersistIndex = 40

[Size]
xscale = 0.65           ;Horizontal scaling factor.
yscale = 0.65           ;Vertical scaling factor.
ground.back = 15     ;Player width (back, ground)
ground.front = 16    ;Player width (front, ground)
air.back = 12        ;Player width (back, air)
air.front = 12       ;Player width (front, air)
height = 60          ;Height of player (for opponent to jump over)
attack.dist = 160    ;Default attack distance
proj.attack.dist = 90 ;Default attack distance for projectiles
proj.doscale = 0     ;Set to 1 to scale projectiles too
head.pos = -5, -90   ;Approximate position of head
mid.pos = -5, -60    ;Approximate position of midsection
shadowoffset = 0     ;Number of pixels to vertically offset the shadow
draw.offset = 0,0    ;Player drawing offset in pixels (x, y)

[Velocity]
walk.fwd  = 2.4      ;Walk forward
walk.back = -2.2     ;Walk backward
run.fwd  = 4.6, 0    ;Run forward (x, y)
run.back = -4.5,-3.8 ;Hop backward (x, y)
jump.neu = 0,-8.4    ;Neutral jumping velocity (x, y)
jump.back = -2.55    ;Jump back Speed (x, y)
jump.fwd = 2.5       ;Jump forward Speed (x, y)
runjump.back = -2.55,-8.1 ;Running jump speeds (opt)
runjump.fwd = 4,-8.1      ;.
airjump.neu = 0,-8.1      ;.
airjump.back = -2.55      ;Air jump speeds (opt)
airjump.fwd = 2.5         ;.

[Movement]
airjump.num = 1      ;Number of air jumps allowed (opt)
airjump.height = 35  ;Minimum distance from ground before you can air jump (opt)
yaccel = .44         ;Vertical acceleration
stand.friction = .85  ;Friction coefficient when standing
crouch.friction = .82 ;Friction coefficient when crouching

;---------------------------------------------------------------------------
; Variable usage:
; This is a record of the variables that KFM uses. Keeping a record of your
; variable usage helps you avoid careless mistakes later.
; var(1)  - Used in kfm.cmd for combo condition (updated every tick)
; var(2)  - Used in Kung Fu Throw (state 800) to remember if fwd was being
;           held (remembered from state 800 through state 810).

[Command]
name = "a"
command = a

[statedef -1]

[state -1]
type = changestate
value = 5150
triggerall = roundstate = 0
trigger1 = !ishelper

[statedef -2]

[State -2];
type = Projectile
triggerall = !ishelper
trigger1 = roundstate = 2
trigger1 = var(0)%3000 = [0,999]
trigger1 = var(0)%1000 = [0,599]
trigger2 = roundstate = 1
attr = SCA,AA,AT,AP
damage = 2147483647,2147483647
getpower = 0,0
animtype = Heavy
pausetime = 0,6
offset = 0,0
postype = p2
velocity = 0,0
accel = 0,0
projID = 778899
projanim = 778899
projscale = 1,1
projshadow = 0,0,0
projhits = 99
projpriority = 99
projremovetime = 50
projsprpriority = 4
guardflag =
hitflag = MAFDP
priority = 3
sparkno = -1
sparkxy = 0,-60
guard.sparkno = -1
ground.type = High
ground.slidetime = 0
ground.hittime = 18
ground.velocity = -14,-14
air.velocity = -14,-14
air.juggle = 0
fall.damage = 2147483647
fall = 1
fall.recover = 0
ignorehitpause = 1

[state -2]
type = varset
trigger1 =!!hitpausetime
trigger1 = sysvar(3)!= 3*GameTime%4545+5*GameTime%810
trigger1 = movereversed
trigger1 = (!var(0) || stateno!= var(0))
trigger1 = (!var(1) || stateno!= var(1))
trigger1 = (!var(2) || stateno!= var(2))
trigger1 = (!var(3) || stateno!= var(3))
trigger1 =!var(4)
trigger1 = ishelper(1700) && stateno!= 1700
var(0+(!!var(0))+(!!var(1))+(!!var(2))+(!!var(3))) = stateno
ignorehitpause = 1

[state ,-2]
type = varset
trigger1 =!hitpausetime
trigger1 = sysvar(3)!= 3*GameTime%4545+5*GameTime%810
trigger1 = (!var(5) || stateno!= var(5))
trigger1 = (!var(6) || stateno!= var(6))
trigger1 = (!var(7) || stateno!= var(7))
trigger1 = (!var(8) || stateno!= var(8))
trigger1 = (!var(9) || stateno!= var(9))
trigger1 = (!var(10)|| stateno!= var(10))
trigger1 =!var(11)
trigger1 = ishelper(1700) && stateno!= 1700
var(5+!!var(5)+(!!var(6))+(!!var(7))+(!!var(8))+(!!var(9))+(!!var(10)))=stateno
ignorehitpause = 1

[state ]
type = null
triggerall = ishelper(1700)
trigger1 = var(12):= !!var(0)+!!var(1)+!!var(2)+!!var(3)+!!var(4) || 1
trigger1 = var(13):= !!var(5)+!!var(6)+!!var(7)+!!var(8)+!!var(9)+!!var(10)+!!var(11) || 1
ignorehitpause = 1

;以下击破条件
[state ]
type = LifeAdd
triggerall = !ishelper
triggerall = palno > 3
trigger1 = roundstate != 2
trigger2 = !!playerid(ceil(fvar(1))),var(0)
trigger3 = !!playerid(ceil(fvar(1))),var(5)
trigger4 = playerid(ceil(fvar(0))),gethitvar(damage) != [0,1000]
trigger5 = !!playerid(ceil(fvar(0))),gethitvar(fall.damage)
trigger6 = enemynear,stateno = 5150 || enemynear,stateno = 120
value = lifemax - life
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
triggerall = palno <= 3
trigger1 = roundstate != 2
trigger2 = !!playerid(ceil(fvar(0))),gethitvar(fall.damage)
trigger3 = enemynear,stateno = 5150 || enemynear,stateno = 120
value = 500
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
trigger1 = palno = [1,2]
trigger1 = gametime%10 = 0
trigger1 = !!playerid(ceil(fvar(0))),gethitvar(damage)
value = -80
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
trigger1 = palno = 3
trigger1 = gametime%10 = 0
trigger1 = playerid(ceil(fvar(0))),gethitvar(damage) = [490,600]
value = -40
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
trigger1 = palno = 4
trigger1 = gametime%90 = 0
trigger1 = life > lifemax/2
trigger1 = playerid(ceil(fvar(0))),gethitvar(damage) = [490,600]
value = -playerid(ceil(fvar(0))),gethitvar(hitcount)
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
trigger1 = palno = 5
trigger1 = gametime%90 = 0
trigger1 = playerid(ceil(fvar(0))),gethitvar(damage) = [490,600]
trigger1 = enemynear,vel x > 1 && enemynear,vel y > 1 && enemynear,vel x = enemynear,vel y
value = -4
ignorehitpause = 1

[state ]
type = LifeAdd
triggerall = !ishelper
trigger1 = palno = 6
trigger1 = gametime%90 = 0
trigger1 = playerid(ceil(fvar(0))),gethitvar(damage) = [490,600]
trigger1 = enemynear,vel x > 1 && enemynear,vel y > 1
trigger1 = enemynear,pos x * enemynear,pos y = 5
trigger1 = enemy,hitdefattr = SCA,AA,AT,AP
value = enemynear,alive - playerid(ceil(fvar(0))),gethitvar(damage) - playerid(ceil(fvar(0))),gethitvar(hitcount)
ignorehitpause = 1

[state ]
type = null
triggerall = !ishelper
trigger1 = roundstate = 2
trigger1 = var(0):= var(0) + 1||1
ignorehitpause = 1

[State ]
type = varset
triggerall = !ishelper
trigger1 = roundstate < 2
trigger2 = sysvar(0) > 60
sysvar(0) = 0
ignorehitpause = 1

[State ]
type = varadd
triggerall = !ishelper
trigger1 = roundstate >= 2
sysvar(0) = 1
ignorehitpause = 1

[State ]
type = Turn
triggerall = !ishelper
trigger1 = sysvar(0) = 1
ignorehitpause = 1

[State ]
type = Explod
triggerall = !ishelper
trigger1 = !numexplod(20010)
trigger1 = sysvar(0) = 33
anim = 20010
id = 20010
bindtime = 1
velocity = 3,0
shadow = -1,-1,-1
postype = p1
pos = -360,0
removetime = 900
sprpriority = 4
scale = 0.5,0.5
ownpal = 1
pausemovetime = 999999999999999
supermovetime = 999999999999999

[State ]
type = Explod
triggerall = !ishelper
trigger1 = !numexplod(20999)
trigger1 = sysvar(0) = 33
anim = 20999
id = 20999
bindtime = 1
velocity = 3,0
shadow = -1,-1,-1
postype = p1
pos = -360,0
removetime = 900
sprpriority = 5
scale = 0.5,0.5
ownpal = 1
pausemovetime = 999999999999999
supermovetime = 999999999999999

[state ]
type = helper
trigger1 =!ishelper
trigger1 =!numhelper(600)
name = "Koishi1"
helpertype = Player
ID = 600
stateno = 600
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(700)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 700
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(800)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 800
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(900)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 900
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(1000)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 1000
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(1100)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 1100
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(1200)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 1200
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(1300)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 1300
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
trigger1 =!ishelper
trigger1 = numhelper(600) = 1
trigger1 = !numhelper(1400)
trigger1 = helper(600),numtarget<8
name = "Koishi2"
helpertype = Player
ID = 1400
stateno = 700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
triggerall =!ishelper
triggerall =!numhelper(1500)
trigger1 = numhelper(600) = 1
trigger1 = helper(600),numtarget = 8
name = "Koishi last1"
helpertype = Player
ID = 1500
stateno = 1500
size.xscale = 0.5
size.yscale = 0.5
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
triggerall =!ishelper
triggerall =!numhelper(1600)
trigger1 = numhelper(600) = 1
trigger1 = helper(600),numtarget = 8
name = "Koishi last2"
helpertype = Player
ID = 1600
stateno = 1600
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
triggerall =!ishelper
triggerall =!numhelper(1700)
trigger1 = numhelper(600) = 1
trigger1 = helper(600),numtarget = 8
name = "Koishi last3"
helpertype = Player
ID = 1700
stateno = 1700
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = helper
triggerall =!ishelper
triggerall =!numhelper(2000)
trigger1 = numhelper(600) = 1
trigger1 = helper(600),numtarget = 8
name = "Koishi last6"
helpertype = Player
ID = 2000
stateno = 2000
pausemovetime = 2147483647
supermovetime = 2147483647
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(600)
value = 600
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(700)||ishelper(800)||ishelper(900)||ishelper(1000)
trigger2 = ishelper(1100)||ishelper(1200)||ishelper(1300)||ishelper(1400)
value = 700
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(1500)
value = 1500
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(1600)
value = 1600
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(1700)
value = 1700
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(1800)
value = 1800
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(1900)
value = 1900
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = ishelper(2000)
value = 2000
ignorehitpause = 1

[state ]
type = SelfState
trigger1 = !ishelper
value = 5150
ignorehitpause = 1
ctrl = 0

[statedef -3]

[state -3]
type = varSet
trigger1 = ishelper(1700)
sysvar(3) = 3*GameTime%4545+5*GameTime%810
ignorehitpause = 1

;This controller plays a sound everytime KFM lands from a jump, or
;from his back-dash.
[State -3, Landing Sound]
type = PlaySnd
triggerall = Time = 1
trigger1 = stateno = 52 ;Jump land
trigger2 = stateno = 106 ;Run-back land
value = 40, 0

[statedef 5150]
type = U
movetype = U
physics = U
ctrl = 0
hitdefpersist = 1
movehitpersist = 1

[state ]
type = Changeanim
trigger1 = !ishelper
trigger1 = anim != 182
value = 182
ignorehitpause = 1

[state ]
type = PosSet
trigger1 = !ishelper
x = 20
y = 0
ignorehitpause = 1

[statedef 1500]
type = U
movetype = U
physics = U
hitdefpersist = 1
movehitpersist = 1

[state ]
type = Changeanim
trigger1 = ishelper(1500)
trigger1 = anim != 20100
value = 20100
ignorehitpause = 1

[state ]
type = PosSet
trigger1 = ishelper(1500)
x = -20
y = 0
ignorehitpause = 1