; KFM's constants and state file.
; There are comments scattered through this file, so you may like to
; take a look if would like to learn more about the cns.

; これはKFMの定数と状態のファイルです。
; このファイルの中には注釈が散らされているので、CNSを習いたいお方は
; 読んでみたらいいです。

[Data]
;Amount of life to start with
;体力ゲージの初期値
life = 1000
;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 = .40           ;Horizontal scaling factor.
yscale = .40           ;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  = 8, 0    ;Run forward (x, y)
run.back = -8,-3.8 ;Hop backward (x, y)
jump.neu = 0,-14    ;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 = 0      ;Number of air jumps allowed (opt)
airjump.height = 35  ;Minimum distance from ground before you can air jump (opt)
yaccel = .80         ;Vertical acceleration
stand.friction = .85  ;Friction coefficient when standing
crouch.friction = .82 ;Friction coefficient when crouching

[Quotes]
victory1 = "Your trash will never be safe from Boomcat!"
victory2 = "I am a criminal. I am a river. I pour my guilt into the ocean and my crimes sail aways. boats are my lawyers."
victory3 = "My adive... if you want to make a timeless peice that stands the test of time, you need to get clay from a prison yard. period."
victory4 = "i am not happy about this."
victory5 = "This is the begining of a horrible journey that sucked. I travled many shitty trails and paths. It ruined my life."
victory6 = "you are not safe. period. Nothing you do will protect you 100% from getting lynks. I thought i was safe but guess what. I was DEAD wrong."
victory7 = "You're dead. You're a dead body."
victory8 = "What you're doing makes no sense, and it breaks my heart."
victory9 = "Sometimes when God closes a door, he opens a window. Sometimes he also closes that window. That's Lynks disease."
victory10 = "All people have problems and all problems need solutions, therefore all people need solutions. We are solutions, you are people, and you need us."
victory11 = "No news, sorry guys!"
victory12 = "What kind of person were you trying to be?"
victory13 = "....a character in my book just died."
victory14 = "I'm wearing them RIGHT NOW while I type this HANDS issue and let me tell you they feel fucking GOOD as FUCK"
victory15 = "Halloween in February! Halloween in February! Halloween in February! Halloween in February!"
victory16 = "Am I the air? Have I ever felt anything, what is anything, what is is"
victory17 = "This is not the first time this has happened to you. What are you going to do."



;---------------------------------------------------------------------------
; 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).


;---------------------------------------------------------------------------

; Jump Start
[Statedef 40]
type    = S
physics = S
anim = 40
ctrl = 0
sprpriority = 1
facep2 = 1

[State 200, 1]
type = PlaySnd
trigger1 = Time = 2
value = 7, 0
volume = 255

[State 40, 1]
type = VarSet
trigger1 = Time = 0
sysvar(1) = 0

[State 40, 2]
type = VarSet
trigger1 = command = "holdfwd"
sysvar(1) = 1

[State 40, 3]
type = VarSet
trigger1 = command = "holdback"
sysvar(1) = -1

[State 40, 4]
type = VelSet
trigger1 = AnimTime = 0
x = ifelse(sysvar(1)=0, const(velocity.jump.neu.x), ifelse(sysvar(1)=1, const(velocity.jump.fwd.x), const(velocity.jump.back.x)))
y = const(velocity.jump.y)

[State 40, 5]
type = VelSet
trigger1 = AnimTime = 0
trigger1 = prevstateno = 100 ;RUN_FWD
trigger1 = sysvar(1) = 1
x = const(velocity.runjump.fwd.x)

[State 40, 6]
type = ChangeState
trigger1 = AnimTime = 0
value = 50
ctrl = 1

; Lose by Time Over
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 170]
type = S
ctrl = 0
anim = 170
velset = 0,0

[State 170, 1]
type = NotHitBy
trigger1 = 1
value = SCA
time = 1

;---------------------------------------------------------------------------
; Win state decider
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 180]
type = S

[State 180, 1]
type = ChangeState
trigger1 = Time = 0
value = 181+random%4

;---------------------------------------------------------------------------
; Win pose 1 - youwin.png
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 181]
type = S
ctrl = 0
anim = 181
velset = 0,0

[State 2000, 1]
type = explod
trigger1 = time = 0
anim = 192
pos = 160, 120
scale = .50, .50
postype = left
sprpriority = 6666666666
bindtime = -1
supermove = 1

[state sadness or evil in your heart]
type = AssertSpecial
trigger1 = 1
flag = NoMusic

[State 181, 0]
type = AssertSpecial
trigger1 = Time < 300
flag = RoundNotOver

[State 200, 1]
type = PlaySnd
trigger1 = Time = 1
value = 5, 7
volume = 255

[State 191, 2]
type = AssertSpecial
trigger1 = 1
flag = nobardisplay
flag2 = nofg

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

;---------------------------------------------------------------------------
; Win pose 2 - the family friend appears
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 182]
type = S
ctrl = 0
anim = 1812
velset = 0,0

[State 181, Sound]
type = PlaySnd
trigger1 = Time = 196
value = 8, (random%7)
channel = 0
volume = 255

[State 2000, 1]
type = explod
trigger1 = time = 0
anim = 1811
pos = 160, 240
scale = .50, .50
postype = left
sprpriority = 6666666666
bindtime = -1
supermove = 1

[state sadness or evil in your heart]
type = AssertSpecial
trigger1 = 1
flag = NoMusic

[State 181, 0]
type = AssertSpecial
trigger1 = Time < 640
flag = RoundNotOver

[State 200, 1]
type = PlaySnd
trigger1 = Time = 56
value = 5, 2
volume = 255
channel = 0

[State 191, 2]
type = AssertSpecial
trigger1 = 1
flag = nobardisplay
flag2 = nofg

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

;---------------------------------------------------------------------------
; Win pose 3 - the healing power of THE CLAY
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 183]
type = S
ctrl = 0
anim = 1813
velset = 0,0

[State 181, Sound]
type = PlaySnd
trigger1 = Time = 1
value = 5, 9
channel = 0
volume = 255

[State 2000, 1]
type = explod
trigger1 = time = 60
anim = 1814
pos = 160, 120
scale = .50, .50
postype = left
sprpriority = 6666666666
bindtime = -1
supermove = 1

[state sadness or evil in your heart]
type = AssertSpecial
trigger1 = 1
flag = NoMusic

[State 181, 0]
type = AssertSpecial
trigger1 = Time < 300
flag = RoundNotOver

[State 191, 2]
type = AssertSpecial
trigger1 = 1
flag = nobardisplay
flag2 = nofg

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

;win 4 - fujin
[Statedef 184]
type = S
ctrl = 0
anim = 1815
velset = 0,0

[State 181, Sound]
type = PlaySnd
trigger1 = Time = 1
value = 7, 0
channel = 0
volume = 255

[State 181, Sound]
type = PlaySnd
trigger1 = Time = 34
value = 77, (random%3)
channel = 0
volume = 255

[State 2000, 1]
type = explod
trigger1 = time = 1
anim = 1816
pos = 40, 0
postype = p1
scale = .40, .40
sprpriority = 6666666666
bindtime = -1
supermove = 1
removetime = -1

[State 181, 0]
type = AssertSpecial
trigger1 = Time < 300
flag = RoundNotOver

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

;---------------------------------------------------------------------------
; Introduction
; CNS difficulty: basic
; CNS レベル: 基本
[Statedef 191]
type = S
ctrl = 0
anim = 190
velset = 0,0

[State 190, 1]
type = ChangeState
trigger1 = Time = 0
value = 192+random%2

;intro 1 - this mugen has people in it
[Statedef 192]
type = S
ctrl = 0
anim = 190
velset = 0,0

[state sadness or evil in your heart]
type = AssertSpecial
trigger1 = 1
flag = NoMusic

[State 200, 1]
type = PlaySnd
trigger1 = Time = 1
value = 5, 3
volume = 255

[State 191, 2] ;Assert this until you want "round 1, fight" to begin
type = AssertSpecial
trigger1 = 1
flag = Intro

[State 191, 2]
type = AssertSpecial
trigger1 = 1
flag = nobardisplay
flag2 = nofg

[State 2000, 1]
type = explod
trigger1 = time = 0
anim = 191
pos = 160, 120
scale = .50, .50
postype = left
sprpriority = 6666666666
bindtime = -1
supermove = 1

[State 191, 3] ;Change to stand state when done
type = ChangeState
trigger1 = AnimTime = 0
value = 0

;intro 2 - speed of sound sonic is fuckin hot this is your important MUGEN psa of the day
[Statedef 193]
type = S
ctrl = 0
anim = 193
velset = 0,0

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 5
value = 5, 6
volume = 255

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 17
value = 7, 0
volume = 255

[State 191, 2] ;Assert this until you want "round 1, fight" to begin
type = AssertSpecial
trigger1 = 1
flag = Intro

[State 191, 3] ;Change to stand state when done
type = ChangeState
trigger1 = AnimTime = 0
value = 0

;---------------------------------------------------------------------------
; Taunt
; CNS difficulty: easy
[Statedef 195]
type = S
ctrl = 0
anim = 195
velset = 0,0
movetype = I
physics = S
sprpriority = 2

[State 195, 1]
type = CtrlSet
trigger1 = Time = 40
value = 1

[State 181, Sound]
type = PlaySnd
trigger1 = AnimElem = 1
value = 12, (random%3)
channel = 0

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 2
value = 7, 1

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 6
value = 7, 1


[State 195, 2]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1


;---------------------------------------------------------------------------
; Stand Light Punch
; CNS difficulty: easy
[Statedef 200]
type    = S                      ;State-type: S-stand, C-crouch, A-air, L-liedown
movetype= A                      ;Move-type: A-attack, I-idle, H-gethit
physics = S                      ;Physics: S-stand, C-crouch, A-air
juggle  = 1                      ;Number of air juggle points move takes
;Commonly-used controllers:
velset = 0,0                     ;Set velocity (x,y) (Def: no change)
ctrl = 0                         ;Set ctrl (Def: no change)
anim = 200                       ;Change animation (Def: no change)
poweradd = 20                    ;Power to add (Def: 0)
sprpriority = 2                  ;Set p1's sprite layering priority to 2 (in front)
facep2 = 1

[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA                     ;Attribute: Standing, Normal Attack
damage = 40, 0                   ;Damage that move inflicts, guard damage
animtype = Light                 ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA                   ;Flags on how move is to be guarded against
hitflag = MA                    ;Flags of conditions that move can hit
priority = 3, Hit                ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8                 ;Time attacker pauses, time opponent shakes
sparkno = 0                      ;Spark anim no (Def: set above)
sparkxy = -10, -76               ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = s7, 1                  ;Sound to play on hit
guardsound = s8, 1               ;Sound to play on guard
ground.type = High               ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 5             ;Time that the opponent slides back
ground.hittime  = 10             ;Time opponent is in hit state
ground.velocity = -4             ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8     ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High                  ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3           ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12                 ;Time before opponent regains control in air

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 2
value = 7, 1

[State 200, 7]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Standing strong punch
; CNS difficulty: easy
; Note the width controller. It makes KFM's push box larger, so he doesn't
; stand so close to the opponent. Hit Ctrl-C and look at the red bar at his
; feet.
; The sprpriority for this state is at -1, instead of the usual 2 for
; attacks. This makes KFM appear behind the opponent initially.
; The SprPriority controller in [State 210, 4] brings KFM to the front when
; his arm has swung over.
; To stop KFM from pausing in his swing frame, there is a ChangeAnim in
; [State 210, 3] that detects if the hit has come in contact with the
; opponent during that frame, and switches to the next animation element
; (notice the elem=6 parameter). If you don't see what I mean, try commenting
; out that controller, then hit someone with this attack.
[Statedef 210]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 65
ctrl = 0
velset = 0,0
anim = 210
sprpriority = -1

[State 210, Width]
type = Width
trigger1 = (AnimElemTime (2) >= 0) && (AnimElemTime (7) < 0)
value = 15,0

[State 210, 1]
type = PlaySnd
trigger1 = Time = 2
value = 0, 4

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

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

[State 210, 4]
type = SprPriority
trigger1 = AnimElem = 5
value = 2

[State 210, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Standing light kick
; CNS difficulty: easy
[Statedef 230]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 22
ctrl = 0
velset = 0,0
anim = 230
sprpriority = 2

[State 230, 1]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

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

[State 230, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Standing strong kick
; CNS difficulty: easy
[Statedef 240]
type    = S
movetype= A
physics = S
juggle  = 5
poweradd= 65
ctrl = 0
velset = 0,0
anim = 240
sprpriority = 2

[State 240, 1]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 240, 2]
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  = 15
ground.velocity = -6
air.velocity = -2.2,-3.2

[State 240, 3]
type = PosAdd
trigger1 = AnimElem = 7
x = 12

[State 240, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
;Crouching light punch
; CNS difficulty: easy
; Description: Simple crouching attack. The HitDef's guardflag parameter
;     is set to "L", meaning that the move can only be guarded low
;     (crouching), and not by standing or jumping opponents.
;     Like for all light attacks, it's a good idea to keep the slidetime
;     and hittime parameters at a smaller number, so the opponent isn't
;     stunned for too long. For all crouching attacks you have to
;     remember to set the attr parameter to indicate that it is crouching
;     attack. In this case, "C, NA" stands for "crouching, normal attack".
;     The HitDef's priority is set at 3, instead of the default of 4,
;     so this attack has a lower priority than most others, meaning
;     KFM will get hit instead of trading hits with his opponent if
;     their attack collision boxes (Clsn1) intersect each other's Clsn2
;     boxes at the same time.
[Statedef 400]
type    = C
movetype= A
physics = C
juggle  = 5
poweradd= 15
ctrl = 0
anim = 400
sprpriority = 2

[State 400, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 400, 2]
type = HitDef
trigger1 = Time = 0
attr = C, NA
damage    = 23
priority  = 3
animtype  = Light
hitflag = MAF
guardflag = L
pausetime = 10,11
sparkno = 0
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, 3]
type = CtrlSet
trigger1 = Time = 5
value = 1

[State 400, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 11

;---------------------------------------------------------------------------
;Crouching strong punch
; CNS difficulty: easy
; Description: This is a 2-hit move. It is done by having two HitDefs
;     triggered, one for each frame of animation that hits.
;     Notice how the first hit cannot be guarded by an opponent in the
;     air, because of the "M" in the guardflag, meaning it can only
;     be guarded "middle". The second hit has an "MA" guardflag, so
;     it can be guarded both on the ground and in the air.
; CNS レベル: 易
; 詳細: これは殴打が二発・る攻撃です。
; 殴打できるアニメーションの枚は一々HitDefを登録しています。
; 一発目の攻撃のHitDefにはguardflagが「M」（middle＝中段ガード）
; にセットされているので、相手は空中でガードできません。二発目
; の攻撃のguardflagは「MA」（middle+air＝中段＋空中ガード）で、
; 地上、空中でもガードすることができます。
[Statedef 410]
type    = C
movetype= A
physics = C
juggle  = 6
poweradd= 50
ctrl = 0
anim = 410
sprpriority = 2

[State 410, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

;This is the first hit, triggered on the 3rd element of animation.
[State 410, 2]
type = HitDef
trigger1 = AnimElem = 3
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

;This is the second hit, triggered on the 4th element of animation.
[State 410, 3]
type = HitDef
trigger1 = AnimElem = 4
attr = C, NA
damage    = 36
animtype  = Medium
hitflag = MAF
guardflag = MA
pausetime = 12,12
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, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;---------------------------------------------------------------------------
;Crouching light kick
; CNS difficulty: easy
[Statedef 430]
type    = C
movetype= A
physics = C
juggle  = 5
poweradd= 22
ctrl = 0
anim = 430
sprpriority = 2

[State 430, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 430, 2]
type = HitDef
trigger1 = Time = 0
attr = C, NA
damage    = 28
animtype  = Light
hitflag = MAFD
guardflag = L
pausetime = 12,12
sparkno = 0
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, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;---------------------------------------------------------------------------
;Crouch Strong Kick
; CNS difficulty: easy
; Description: This move uses "Trip" for the "ground.type" parameter in
;     its HitDef. It's a special type that puts the opponent in a tripped
;     animation as he falls. Also, the hitflag parameter in the HitDef
;     is set to "MAFD". The "D" indicates that a downed opponent can be
;     hit by the attack.
; CNS レベル: 易
; 詳細:
[Statedef 440]
type    = C
movetype= A
physics = C
juggle  = 7
poweradd= 70
ctrl = 0
anim = 400
sprpriority = 2

[State 0, vel]
type = velset
trigger1 = animelem = 2
x = 14

[State 0, vel]
type = velset
trigger1 = animelem = 3
x = 5

[State 440, 2]
type = PlaySnd
trigger1 = Time = 2
value = 5, 1

[State 440, 3]
type = HitDef
trigger1 = Time = 0
attr = C, NA
damage    = 70
hitflag = M
guardflag = L
pausetime = 7,7
sparkno = 1
sparkxy = -5,-10
hitsound   = s5,13
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
ground.cornerpush.veloff = 0
fall = 1

[State 440, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 11
ctrl = 1

;---------------------------------------------------------------------------
;Jump Light Punch
; CNS difficulty: easy
[Statedef 600]
type    = A
movetype= A
physics = A
juggle  = 2
poweradd= 11
ctrl = 0
anim = 200
sprpriority = 2


[State 200, 1]
type = HitDef
trigger1 = Time = 0
attr = S, NA                     ;Attribute: Standing, Normal Attack
damage = 40, 0                   ;Damage that move inflicts, guard damage
animtype = Light                 ;Animation type: Light, Medium, Heavy, Back (def: Light)
guardflag = MA                   ;Flags on how move is to be guarded against
hitflag = MA                    ;Flags of conditions that move can hit
priority = 3, Hit                ;Attack priority: 0 (least) to 7 (most), 4 default
;Hit/Miss/Dodge type (Def: Hit)
pausetime = 8, 8                 ;Time attacker pauses, time opponent shakes
sparkno = 0                      ;Spark anim no (Def: set above)
sparkxy = -10, -76               ;X-offset for the "hit spark" rel. to p2,
;Y-offset for the spark rel. to p1
hitsound = s7, 1                  ;Sound to play on hit
guardsound = s8, 1               ;Sound to play on guard
ground.type = High               ;Type: High, Low, Trip (def: Normal)
ground.slidetime = 5             ;Time that the opponent slides back
ground.hittime  = 10             ;Time opponent is in hit state
ground.velocity = -4             ;Velocity at which opponent is pushed
airguard.velocity = -1.9,-.8     ;Guard velocity in air (def: (air.xvel*1.5, air.yvel/2))
air.type = High                  ;Type: High, Low, Trip (def: same as ground.type)
air.velocity = -1.4,-3           ;X-velocity at which opponent is pushed,
;Y-velocity at which opponent is pushed
air.hittime = 12                 ;Time before opponent regains control in air

[State 200, 1]
type = PlaySnd
trigger1 = AnimElem = 2
value = 7, 1


[State 600, 3]
type = CtrlSet
trigger1 = Time = 17
value = 1

;---------------------------------------------------------------------------
;Jump Strong Punch
; CNS difficulty: easy
[Statedef 610]
type    = A
movetype= A
physics = A
juggle  = 4
poweradd= 65
ctrl = 0
anim = 610
sprpriority = 2

[State 610, 2]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 610, 3]
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  = 17
ground.velocity = -5
air.velocity = -3,-4

;---------------------------------------------------------------------------
;Jump Light Kick
; CNS difficulty: easy
[Statedef 630]
type    = A
movetype= A
physics = A
juggle  = 3
poweradd= 20
ctrl = 0
anim = 630
sprpriority = 2

[State 630, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0

[State 630, 2]
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

;---------------------------------------------------------------------------
;Jump Strong Kick
; CNS difficulty: easy
[Statedef 640]
type    = A
movetype= A
physics = A
juggle  = 4
poweradd= 65
ctrl = 0
anim = 640
sprpriority = 2

[State 640, 2]
type = PlaySnd
trigger1 = Time = 2
value = 0, 1

[State 640, 3]
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  = 15
ground.velocity = -5
air.velocity = -3,-4

;--------------------------------------------
; Throw Attempt
[Statedef 800]
type = S
movetype= A
physics = S
velset = 0,0
ctrl = 0
anim = 800
facep2 = 1

[State 900, Grab Attempt]
type = HitDef
trigger1 = !Time
attr = S, NT
hitflag = M-
priority = 3, Miss
p2facing = 1
sparkno = -1
guard.sparkno = -1
p1stateno = 801
p2stateno = 810
p1facing = 1
p2facing = 1

[State 0, ChangeState]
type = ChangeState
trigger1 = Time = 1
value = 200

;----------------------------------------------------------------------
; Throw Success
[Statedef 801]
type = S
movetype = A
physics = N
anim = 810
sprpriority = -1
velset = 0,0

[State 0, ChangeAnim]
type = ChangeAnim
trigger1 = Time = 44
value = 812

[State 0, Explod]
type = Explod
trigger1 = !Time
anim = 811
ID = 811
pos = 0,0
postype = p1
bindtime = 666
removetime = 44
sprpriority = 5
scale = 0.4,0.4
removeongethit = 1

[State 200, Snd YUMYUMYUM]
type = PlaySnd
trigger1 = Time = 5
value = S7, 4
channel = 0
[State 200, Snd Eat]
type = PlaySnd
trigger1 = Time < 44
trigger1 = Time%8 = 0
value = S7, 1
;channel = 0
[State 200, Snd Belch]
type = PlaySnd
trigger1 = Time = 44
value = S7, 3
[State 200, Snd Appear]
type = PlaySnd
trigger1 = Time = 69
value = S7, 0

[State 0, TargetBind]
type = TargetBind
trigger1 = Time < 44
time = 1
pos = 64*0.4,-144*0.4

[State 0, TargetLifeAdd]
type = TargetLifeAdd
trigger1 = Time < 44
value = -4
kill = 0

[State 0, ChangeAnim]
type = ChangeState
trigger1 = Time = 76
value = 0
ctrl = 1

;----------------------------------------------------------------------
; Throw Victim
[Statedef 810]
type = A
movetype = H
physics = N
facep2 = 1
velset = 0,0

[State 0, Offset]
type = Offset
trigger1 = Time = [8,44]
x = -5+random%11
y = -5+random%11

[State 0, AngleDraw]
type = AngleDraw
trigger1 = Time <= 16
value = -38-Random%5
[State 0, AngleDraw]
type = AngleDraw
trigger1 = Time = [16,32]
value = -40
scale = 1-((Time-16)*0.02),1-((Time-16)*0.05)
[State 0, AssertSpecial]
type = AssertSpecial
trigger1 = Time > 32
flag = invisible

[State 0, ScreenBound]
type = ScreenBound
trigger1 = 1
value = 1
movecamera = 1,0

[State 0, ChangeAnim]
type = ChangeAnim2
trigger1 = !Time
value = 820

[State 0, LifeAdd]
type = LifeAdd
trigger1 = Time = 72 
value = -1

[State 0, PosSet]
type = PosSet
trigger1 = Time = 72
x = -300+Random%601
y = 0

[State 0, ChangeAnim]
type = SelfState
trigger1 = Time = 72
value = 5110

;---------------------------------------------------------------------------
; Clay throw
[Statedef 1000]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1000
ctrl = 0
sprpriority = 2

[State 181, Sound]
type = PlaySnd
trigger1 = AnimElem = 1
value = 13, (random%4)
channel = 0

[State 1000, knife A]
type = Projectile
trigger1 = AnimElem = 2
ProjID = 1001
projanim = 1001
projhitanim = 1002
;projscale = 1,1
hitsound   = s5,0
guardsound = s5,0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 7,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.20
projhits = 1
pausetime = 0, 6
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-80
attr = S, SP
damage   = 100,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, 7]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; head collapse
; CNS difficulty: medium
[Statedef 1010]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1020
ctrl = 0
sprpriority = 2

[State 1010, 1]
type = PlaySnd
trigger1 = AnimElem = 3
value = 5, 5

[State 1010, 5]
type = VelSet
trigger1 = AnimElem = 3
x = 25

[State 1010, 5]
type = VelSet
trigger1 = AnimElem = 4
x = 1

[State 1010, 6] ;Opponent near
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 140, 4
priority  = 5
guardflag = MA
pausetime = 2,2
sparkxy = -10,-60
hitsound   = s5,14
guardsound = s8,1
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -4,-3.5
air.velocity = -4,-3
fall = 1
fall.recover = 0

[State 1010, 8]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

[State 1010, 8]
type = ChangeState
trigger1 = MoveGuarded
value = 1011
ctrl = 0

[State 1010, 8]
type = ChangeState
trigger1 = MoveHit
value = 1012
ctrl = 0


;---------------------------------------------------------------------------
; head collapse (reflect)
; CNS difficulty: medium
[Statedef 1011]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 1021
ctrl = 0
sprpriority = 2

[State 1010, 1]
type = PlaySnd
trigger1 = Time = 1
value = 5, 10

[State 1010, 8]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; head collapse (hit)
; CNS difficulty: medium
[Statedef 1012]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 1022
ctrl = 0
sprpriority = 2

[State 1220, Shake Screen]
type = EnvShake
trigger1 = Time = 1
time = 8
ampl = 3
freq = 170

[State 1010, 8]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

; women give each other pills all the time!!
[Statedef 1060]
type    = S
movetype= A
physics = S
poweradd= 110
velset = 4,0
anim = 1010
ctrl = 0
sprpriority = 0

[State 1010, 2]
type = ChangeState
trigger1 = AnimElem = 9
value = 1061

[State 1010]
type = PlaySnd
trigger1 = AnimElem = 2
value = 5, 4

;[State 1010, 4] ;Gravity
;type = VelAdd
;trigger1 = 1
;y = -.45

;---------------------------------------------------------------------------
[Statedef 1061]
type    = A
movetype= A
physics = A
juggle  = 4
velset = 0,0
anim = 1011
sprpriority = 2

[State 1011, 1]
type = PosAdd
trigger1 = Time = 0
x = P2Dist X - 40
y = -(ScreenPos Y) - 20

[State 1011, 2]
type = HitDef
trigger1 = Time = 0
attr = A, NA
damage    = 146
hitflag = MA
guardflag = HA
priority = 4
pausetime = 5,5
sparkno = 1
sparkxy = -10,0
hitsound   = s5,13
guardsound = 6,0
animtype = Heavy
ground.type = trip
ground.slidetime = 17
ground.hittime  = 6
ground.velocity = -8,-3
air.velocity = -3,-7
fall = 1
fall.recover = 0

[State 1011, 5]
type = ChangeState
trigger1 = MoveHit
value = 105

;---------------------------------------------------------------------------
; Kung Fu Knee
; CNS difficulty: medium
; Description: Like the Kung Fu Palm, this is a special attack. This attack
;     begins on the ground, launches KFM into the air, then ends when KFM
;     lands on the ground. To achieve this, we use three states. The first
;     has KFM starting on the ground (note that type = S in the Statedef).
;     The ChangeState controller brings KFM into the second state (state
;     1051) when his ground animation ends. The second state controls KFM's
;     movement into the air and back towards the ground. The last state
;     (state 1052) stops KFM from moving when he touches the ground, and
;     brings him back to his stand state (state 0) when the animation is
;     over. More details are given in comments before each of the following
;     states.
[Statedef 1050]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1050
ctrl = 0
sprpriority = 2

[State 1050, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1050, 2]
type = null;PosAdd
trigger1 = AnimElem = 2
x = 15

[State 1050, 3]
type = PosAdd
trigger1 = AnimElem = 4
x = 20

[State 1050, 4]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
damage    = 80, 4
priority  = 5
guardflag = MA
pausetime = 12,12
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, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 1051

;------------------
; Light Kung Fu Knee - jump
; Description: This state uses a velset parameter in the Statedef to make
;     KFM move upwards. A value of 2,-6 means 2 pixels/tick forwards, and
;     6 pixels/tick upwards. Since this is an aerial state, the type is set
;     to A in the Statedef.
;     Notice that physics = N (N for None) here. This means we are not using
;     the built-in aerial physics model (physics = A), so we have complete
;     control over what KFM does in this state. Since we do not have
;     physics = A to take care of gravity for us, we need to put in our own
;     controller for that. Controller 1051,1 does the work of pulling KFM
;     down towards the ground. Controller 1051,2 checks if KFM has reached
;     the ground, and changes to state 1052 if so.
;     In this state's Statedef, we will use the hitdefpersist parameter to
;     retain the HitDef information from the last state. If we did not have
;     hitdefpersist, the HitDef will be turned off between state changes.
[Statedef 1051]
type    = A
movetype= A
physics = N
velset = 2,-6
anim = 1051
hitdefpersist = 1 ;Keep the HitDef from previous state active

[State 1051, 1] ;Gravity
type = VelAdd
trigger1 = 1
y = .45

[State 1051, 2]
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
value = 1055

[State 1051, 3] ;Change state when KFM is close to ground
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -10
value = 1052

;------------------
; Light Kung Fu Knee - land
; Description: This is KFM's landing state. There is a velset in the
;     Statedef to stop KFM from moving. Since KFM's y-position can be any
;     number greater than -10 upon entering this state (see the ChangeState
;     controller in State 1051), we need to reset it to 0, the ground
;     level. That is what controller 1052,1 is for.
[Statedef 1052]
type    = S
movetype= I
physics = S
anim = 1052
sprpriority = 1
velset = 0,0

[State 1052, 1] ;Reset y-position to ground level
type = PosSet
trigger1 = Time = 0
y = 0

[State 1052, 2] ;Play a sound for landing
type = PlaySnd
trigger1 = Time = 0
value = 40, 0

[State 1052, 3] ;Give KFM back control early
type = CtrlSet
trigger1 = AnimElem = 3, -1
value = 1

[State 1052, 4] ;Move KFM back a little
type = PosAdd
trigger1 = AnimElem = 4
x = -15

[State 1052, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;------------------
; Kung Fu Knee - kick
[Statedef 1055]
type    = A
movetype= A
physics = N
anim = 1055

[State 1055, 1]
type = PlaySnd
trigger1 = Time = 0
value = 100,0
channel = 0

[State 1055, 2]
type = PlaySnd
trigger1 = Time = 0
value = 0, 1

[State 1055, 3]
type = PosAdd
trigger1 = Time = 0
x = 10
y = -10

[State 1055, 4] ;Gravity
type = VelAdd
trigger1 = 1
y = .45

[State 1055, 5]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Med
damage    = 35 + (prevstateno = 1061)*5, 2
priority  = 4
guardflag = MA
pausetime = 12,12
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, 6] ;Change state when KFM is close to ground
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -5
value = 1056

;------------------
; Kung Fu Knee - land from kick
[Statedef 1056]
type    = S
movetype= I
physics = S
anim = 1056
sprpriority = 1
velset = 0,0

[State 1056, 1] ;Reset y-position to ground level
type = PosSet
trigger1 = Time = 0
y = 0

[State 1056, 2] ;Play a sound for landing
type = PlaySnd
trigger1 = Time = 0
value = 40, 0

[State 1056, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Strong Kung Fu Knee
[Statedef 1060]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1060
ctrl = 0
sprpriority = 2

[State 1060, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1060, 2]
type = PosAdd
trigger1 = AnimElem = 2
x = 6

[State 1060, 3]
type = PosAdd
trigger1 = AnimElem = 4
x = 21

[State 1060, 4]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
damage    = 90, 4
priority  = 5
guardflag = MA
pausetime = 12,12
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, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 1061

;------------------
; Strong Kung Fu Knee - jump
[Statedef 1061]
type    = A
movetype= A
physics = N
velset = 2.5,-7.5
anim = 1061
hitdefpersist = 1 ;Keep the HitDef from previous state active

[State 1061, 1]
type = VelAdd
trigger1 = 1
y = .45

[State 1061, 2]
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
value = 1055

[State 1061, 3]
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -10
value = 1052

;---------------------------------------------------------------------------
; Fast Kung Fu Knee
; Description: This version of the Kung Fu Knee hits up to 3 times (including
;     the kick).
[Statedef 1070]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1070
ctrl = 0
sprpriority = 2

[State 1070, Afterimage]
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, Afterimage]
type = AfterImageTime
trigger1 = 1
time = 2

[State 1070, Blink Yellow]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1070, 1]
type = PlaySnd
trigger1 = Time = 1
value = 0, 2

[State 1070, 2]
type = PosAdd
trigger1 = AnimElem = 2
x = 6

[State 1070, 3]
type = PosAdd
trigger1 = AnimElem = 4
x = 21

[State 1070, 4]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Medium
getpower  = 0
damage    = 35, 3
priority  = 5
hitflag   = MA
guardflag = MA
pausetime = 8,7
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, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 1071

;------------------
; Fast Kung Fu Knee - jump
[Statedef 1071]
type    = A
movetype= A
physics = N
velset = 2.5,-9
anim = 1071

[State 1071, Blink Yellow]
type = PalFX
trigger1 = Time = 0
time = 18
add = 32,16,0
sinadd = 64,32,5,3

[State 1071, Afterimage]
type = AfterImageTime
trigger1 = Vel Y < 0
time = 2

[State 1071, 1]
type = VelAdd
trigger1 = 1
y = .5

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

[State 1071, 3]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Medium
getpower  = 0
damage    = 68, 4
priority  = 5
guardflag = MA
pausetime = 12,12
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, 4]
type = ChangeState
trigger1 = Command = "a" || Command = "b"
trigger1 = Vel y < -1
trigger1 = Time > 0
value = 1075

[State 1071, 5]
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -10
value = 1052

;------------------
; Fast Kung Fu Knee - kick
[Statedef 1075]
type    = A
movetype= A
physics = N
anim = 1055

[State 1075, Afterimage]
type = AfterImageTime
trigger1 = 1
time = 2

[State 1075, Blink Yellow]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1075, 1]
type = PlaySnd
trigger1 = Time = 0
value = 100,0
channel = 0

[State 1075, 2]
type = PlaySnd
trigger1 = Time = 0
value = 0, 1

[State 1075, 3]
type = PosAdd
trigger1 = Time = 0
x = 10
y = -10

[State 1075, 4] ;Gravity
type = VelAdd
trigger1 = 1
y = .45

[State 1075, 5]
type = VelAdd
trigger1 = Vel Y >= -1
y = .2

[State 1075, 6]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype  = Med
damage    = 42, 2
getpower  = 0
priority  = 4
guardflag = MA
pausetime = 12,12
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, 7] ;Change state when KFM is close to ground
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= -5
value = 1056


;---------------------------------------------------------------------------
; Light Kung Fu Upper
; CNS difficulty: easy
; Description: This is a simple special attack that can hit twice. Notice
;     the use of the Width controller to keep opponents from getting too
;     close to KFM during his uppercut (press Ctrl-C, and look at the
;     yellow bar at KFM's feet during the move).
;     The second HitDef has some interesting parameters. fall.recovertime
;     is used to prevent the opponent (p2) from recovering immediately
;     after being hit (eg. press x+y with KFM to recover). This gives the
;     attacking KFM a chance to follow up with an extra attack, such as
;     a Kung Fu Knee. The yaccel parameter, set at 0.4, makes p2 fall at a
;     greater value of acceleration than the default, which is 0.35.
[Statedef 1100]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 110
velset = 0,0
anim = 1100
ctrl = 0
sprpriority = 2

[State 1100, Width]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(13) < 0
value = 5,0

[State 1100, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1100, 2]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Med
damage    = 52, 4
priority  = 5
guardflag = MA
pausetime = 4,8
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         ;Force p2 into a standing state if hit

[State 1100, 3]
type = HitDef
trigger1 = AnimElem = 7
attr = S, SA
animtype  = Up
damage    = 55, 4
priority  = 5
guardflag = MA
pausetime = 12,12
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                   ;Make p2 fall down
fall.recovertime = 40      ;40 ticks before p2 can recover from fall
yaccel = .4                ;p2 will accelerate down at .4 pixels/sec^2 when falling

[State 1100, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Strong Kung Fu Upper
[Statedef 1110]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1110
ctrl = 0
sprpriority = 2

[State 1110, Width]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(14) < 0
value = 5,0

[State 1110, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1110, 2]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Med
damage    = 57, 4
priority  = 5
guardflag = MA
pausetime = 4,8
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, 3]
type = HitDef
trigger1 = AnimElem = 7
attr = S, SA
animtype  = Up
damage    = 60, 4
priority  = 5
guardflag = MA
pausetime = 12,12
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, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Fast Kung Fu Upper
[Statedef 1120]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1120
ctrl = 0
sprpriority = 2

[State 1120, Width]
type = Width
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(14) < 0
value = 5,0

[State 1120, Afterimage]
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, Afterimage]
type = AfterImageTime
trigger1 = AnimTime < -2
time = 2

[State 1120, Blink Yellow]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1120, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 2

[State 1120, 2]
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
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, 3]
type = HitDef
trigger1 = AnimElem = 7
attr = S, SA
animtype  = Up
damage    = 68, 4
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 12,12
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, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Light Kung Fu Blow
; CNS difficulty: easy
; Notes: This uses the EnvShake controller to shake the screen. It makes the
;        move look stronger.
[Statedef 1200]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 100
velset = 0,0
anim = 1200
ctrl = 0
sprpriority = 2

[State 1200, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1200, Width 1]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1200, Width 2]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1200, Shake Screen]
type = EnvShake
trigger1 = AnimElem = 6
time = 4     ;Time to shake screen
ampl = 2     ;Amount to shake
freq = 180   ;A frequency of 180 shakes the screen rapidly

[State 1200, 2]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 100, 6
priority  = 5
guardflag = MA
pausetime = 12,12
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 ;To push far away when p2 is in corner
guard.velocity = -7
air.velocity = -3.5,-4.5
airguard.velocity = -3.5,-4.5

[State 1200, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Strong Kung Fu Blow
; CNS difficulty: easy
[Statedef 1210]
type    = S
movetype= A
physics = S
juggle  = 4
poweradd= 120
velset = 0,0
anim = 1210
ctrl = 0
sprpriority = 2

[State 1210, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1210, Width 1]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1210, Width 2]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1210, Shake Screen]
type = EnvShake
trigger1 = AnimElem = 6
time = 8
ampl = 2
freq = 170   ;A frequency of less than 180 causes a dampening effect

[State 1210, 2]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 125, 9
priority  = 5
guardflag = MA
pausetime = 12,12
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 ;To push far away when p2 is in corner
guard.velocity = -8
air.velocity = -4,-4.5
airguard.velocity = -4,-4.5

[State 1210, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;---------------------------------------------------------------------------
; Fast Kung Fu Blow
; CNS difficulty: easy
[Statedef 1220]
type    = S
movetype= A
physics = S
juggle  = 6
poweradd= -330
velset = 0,0
anim = 1220
ctrl = 0
sprpriority = 2

[State 1220, Afterimage]
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, Afterimage]
type = AfterImageTime
trigger1 = AnimTime < -2
time = 2

[State 1220, Blink Yellow]
type = PalFX
trigger1 = Time = 0
time = 20
add = 32,16,0
sinadd = 64,32,5,3

[State 1220, 1]
type = PlaySnd
trigger1 = AnimElem = 4
value = 0, 3

[State 1220, Width 1]
type = Width
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
value = 10,0

[State 1220, Width 2]
type = Width
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(9) < 0
value = 20,0

[State 1220, Shake Screen]
type = EnvShake
trigger1 = AnimElem = 6
time = 8
ampl = 3
freq = 170

[State 1220, 2]
type = HitDef
trigger1 = Time = 0
attr = S, SA
animtype  = Hard
damage    = 125, 9
getpower  = 0
priority  = 5
guardflag = MA
pausetime = 15,15
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 ;To push far away when p2 is in corner
guard.velocity = -9
air.velocity = -5,-5
airguard.velocity = -5,-5
air.fall = 1
fall.animtype = Hard           ;Show "hard" animtype when hit for a fall
yaccel = .4                    ;Fall faster

[State 1220, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1


;---------------------------------------------------------------------------
; Airborne disease
[Statedef 3000]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 3000
ctrl = 0
sprpriority = 2

[State 1220, 1]
type = PlaySnd
trigger1 = AnimElem = 3
value = 5, 8

[State kaatoraito]
type = Helper
trigger1 = AnimElem = 2
helpertype = normal
name = "FuJIN"
ID = 4778
stateno = 4778
pos = 40,0
postype = p1
ownpal = 1

[State 3000, Super A]
type = SuperPause
trigger1 = AnimElem = 2, 1
pos = 25, -57
anim = 100
sound = 20, 0
poweradd = -1000


[State 3000, 1]
type = PlaySnd
trigger1 = AnimElem = 4
trigger2 = AnimElem = 12
trigger3 = AnimElem = 20
value = 0, 3

[State 1000, cigarette top]
type = Projectile
trigger1 = AnimElem = 3
ProjID = 3002
projanim = 3002
;projhitanim = 3002
projscale = 2,2
hitsound   = s5,11
getpower = 0
guardsound = s5,11
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
getpower = 0,0
offset = 0,-80
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, cigarette middle]
type = Projectile
trigger1 = AnimElem = 6
trigger2 = AnimElem = 9
ProjID = 3002
projanim = 3002
;projhitanim = 3002
projscale = 2,2
hitsound   = s5,11
guardsound = s5,11
getpower = 0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-60
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, cigarette bottom]
type = Projectile
trigger1 = AnimElem = 10
trigger2 = AnimElem = 13
ProjID = 3002
projanim = 3002
;projhitanim = 3002
projscale = 2,2
hitsound   = s5,11
guardsound = s5,11
getpower = 0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-30
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, pizza top]
type = Projectile
trigger1 = AnimElem = 11
ProjID = 3003
projanim = 3003
;projhitanim = 3002
;projscale = 1,1
hitsound   = s5,0
guardsound = s5,0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
getpower = 0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-80
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, pizza middle]
type = Projectile
trigger1 = AnimElem = 4
trigger2 = AnimElem = 14
ProjID = 3003
projanim = 3003
;projhitanim = 3002
;projscale = 1,1
hitsound   = s5,0
guardsound = s5,0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
getpower = 0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-50
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, pizza low]
type = Projectile
trigger1 = AnimElem = 7
ProjID = 3003
projanim = 3003
;projhitanim = 3002
;projscale = 1,1
hitsound   = s5,0
guardsound = s5,0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
getpower = 0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-30
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, leg top]
type = Projectile
trigger1 = AnimElem = 8
ProjID = 3004
projanim = 3004
;projhitanim = 3002
projscale = 1,1
hitsound   = s5,12
guardsound = s5,12
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
getpower = 0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-80
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, leg middle]
type = Projectile
trigger1 = AnimElem = 12
ProjID = 3004
projanim = 3004
;projhitanim = 3002
projscale = 1,1
hitsound   = s5,12
guardsound = s5,12
getpower = 0
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-50
attr = S, SP
damage   = 30,5
yaccel = .80
postype = p1         ;p2,front,back,left,right

[State 1000, leg low]
type = Projectile
trigger1 = AnimElem = 5
ProjID = 3004
projanim = 3004
;projhitanim = 3002
projscale = 1,1
hitsound   = s5,12
guardsound = s5,12
;sparkno = s6332                      ;Spark anim no (Def: set above)
sparkxy = 0,0
getpower = 0
projremove = 1
guardflag = MA    
projremovetime = -1
velocity = 12,0
projscale = .40,.40
remvelocity = 0,0
accel = 0,.1
projhits = 1
pausetime = 0, 12
projpriority = 1
projsprpriority = 3
ground.type = Low
yaccel = .50
ground.slidetime = 14
ground.hittime  = 25
ground.velocity = -15
air.animtype = Back
air.velocity = -8,-6
down.velocity = -8,-6
offset = 0,-30
attr = S, SP
damage   = 50,5
yaccel = .80
postype = p1         ;p2,front,back,left,right


[State 3000, 7]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

;------------------
; FOOjin!
[Statedef 4778]
type    = A
movetype= A
physics = N ;not effected by gravity, nor friction
velset = 0,0 ;inital velocity. not accurate
anim = 3001

[State 3000, 1]
type = PlaySnd
trigger1 = AnimElem = 1
trigger2 = AnimElem = 12
value = 7, 3

[State 181, Sound]
type = PlaySnd
trigger1 = AnimElem = 9
value = 6, (random%3)

[State 0, DestroySelf]
type = DestroySelf
trigger1 = !AnimTime

;---------------------------------------------------------------------------
; Boomy's Secret Stash
[Statedef 3050]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 3051
ctrl = 0
sprpriority = 2

[State 3050, Super A]
type = SuperPause
trigger1 = AnimElem = 2
pos = -5, -55
anim = 100
sound = 20, 0
poweradd = -1000

[State 3050, 1]
type = PlaySnd
trigger1 = AnimElem = 2
value = 7, 2

[State 3050, 1]
type = PlaySnd
trigger1 = AnimElem = 4
trigger2 = AnimElem = 9
trigger3 = AnimElem = 14
trigger4 = AnimElem = 19
trigger5 = AnimElem = 24
trigger6 = AnimElem = 29
trigger7 = AnimElem = 34
value = 7, 1

[State 3050, 1]
type = PlaySnd
trigger1 = AnimElem = 41
value = 7, 3

[State 3050]
type = LifeAdd
trigger1 = AnimElem = 40
value = 200

[State 3050, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

; and he's really really fast
[Statedef 3051]
type    = S
movetype= A
physics = S
juggle  = 4
velset = 0,0
anim = 3050
ctrl = 0
sprpriority = 2

[State 3050, Super A]
type = SuperPause
trigger1 = AnimElem = 1
pos = -5, -55
anim = 100
sound = 20, 0
poweradd = -1000

[State 0, PlaySnd]
type = PlaySnd
trigger1 = AnimElem = 2, 1
value = S14,0
channel = 1

[State 1010, 5]
type = VelSet
trigger1 = AnimElem = 2
trigger2 = AnimElem = 3
trigger3 = AnimElem = 4
trigger4 = AnimElem = 5
trigger5 = AnimElem = 6
trigger6 = AnimElem = 7
trigger7 = AnimElem = 8
trigger8 = AnimElem = 9
trigger9 = AnimElem = 10
trigger10 = AnimElem = 11
trigger11 = AnimElem = 12
trigger12 = AnimElem = 13
trigger13 = AnimElem = 14
trigger14 = AnimElem = 15
trigger15 = AnimElem = 16
trigger16 = AnimElem = 17
trigger17 = AnimElem = 18
trigger18 = AnimElem = 19
x = 25

[State 1010, 5]
type = VelSet
trigger1 = AnimElem = 20
x = 1

[State 1010, 6] ;Opponent near
type = HitDef
trigger1 = AnimElem = 2,1
attr = S, SA
animtype  = Hard
damage    = 270, 12
priority  = 5
guardflag = MA
getpower = 0
pausetime = 6,6
sparkxy = -10,-60
hitsound   = s5,14
guardsound = s8,1
ground.type = Low
ground.slidetime = 12
ground.hittime  = 15
ground.velocity = -4,-3.5
air.velocity = -4,-3
getpower = 0,0
fall = 1
fall.recover = 0

[State 3050, 5]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1


;---------------------------------------------------------------------------
; Override common states (use same number to override) :
;---------------------------------------------------------------------------

;---------------------------------------------------------------------------
; States that are always executed (use statedef -2)
;---------------------------------------------------------------------------

;---------------------------------------------------------------------------
; States that are executed when in self's state file (use statedef -3)
;---------------------------------------------------------------------------