;---------------------------------------------------------------------------
; States that are executed when in self's state file (use statedef -3)
;---------------------------------------------------------------------------
[Statedef -3]
[State BGM]
type = VarSet
triggerall = alive && roundstate=2 && !ishelper
trigger1 = 0;0 BGM off, 1 BGM on
var(50) = 1 

[State AI]
type = VarSet
triggerall = alive && roundstate=2 && !ishelper && ctrl
trigger1 = AILevel
trigger2 = 0;0 auto-AI off, 1 auto-AI on
var(59) = 1

;CONFIG ENDS HERE

[State -3]
Type = Varset
Trigger1 = NumEnemy=1
var(55)  = EnemyNear(0),ID
ignorehitpause = 1

[State -3]
Type = Varset
Trigger1 = !NumPartner
Trigger1 = NumEnemy>=2
var(55)  = ifelse((EnemyNear(0),Alive),(EnemyNear(0),ID),(EnemyNear(1),ID))
ignorehitpause = 1

[State -3]
Type = Varset
TriggerAll = NumPartner
TriggerAll = NumEnemy>=2
Trigger1 = !NumTarget
Trigger1 = !Partner,NumTarget
Trigger2 = NumTarget>=2
Trigger3 = Partner,NumTarget>=2
Trigger4 = NumTarget||Partner,NumTarget
Trigger4 = (!EnemyNear(0),Alive)||(!EnemyNear(1),Alive)
var(55)  = ifelse((EnemyNear(0),Alive),(EnemyNear(0),ID),(EnemyNear(1),ID))
ignorehitpause = 1

[State -3,EnemyNear0ID]
Type       = Varset
TriggerAll = NumPartner
TriggerAll = NumEnemy>=2
TriggerAll = EnemyNear(0),ID!=var(55)
TriggerAll = (EnemyNear(0),Alive)&&(EnemyNear(1),Alive)
Trigger1   = !Numtarget
Trigger1   = Partner,NumTarget=1
Trigger1   = EnemyNear(1),MoveType = H
Trigger1   = EnemyNear(0),MoveType != H
Trigger2   = Numtarget=1
Trigger2   = Abs(EnemyNear(0),Pos X - Pos X) <= Abs(EnemyNear(0),Pos X - Partner,Pos X)
Trigger2   = Partner,NumTarget=1
Trigger2   = EnemyNear(1),MoveType = H
Trigger2   = EnemyNear(0),MoveType != H
Trigger3   = Numtarget=1
Trigger3   = Partner,NumTarget=1
Trigger3   = EnemyNear(1),MoveType = H
Trigger3   = EnemyNear(0),MoveType = H
var(55)    = EnemyNear(0),ID
ignorehitpause = 1

[State -3,EnemyNear1ID]
Type       = Varset
TriggerAll = NumPartner
TriggerAll = NumEnemy>=2
TriggerAll = EnemyNear(1),ID!=var(55)
TriggerAll = (EnemyNear(0),Alive)&&(EnemyNear(1),Alive)
Trigger1   = !Numtarget
Trigger1   = Partner,NumTarget=1
Trigger1   = EnemyNear(0),MoveType = H
Trigger1   = EnemyNear(1),MoveType != H
Trigger2   = Numtarget=1
Trigger2   = Abs(EnemyNear(1),Pos X - Pos X) <= Abs(EnemyNear(1),Pos X - Partner,Pos X)
Trigger2   = Partner,NumTarget=1
Trigger2   = EnemyNear(0),MoveType = H
Trigger2   = EnemyNear(1),MoveType != H
var(55)    = EnemyNear(1),ID
ignorehitpause = 1

[State ]
type = DisplayToClipboard
trigger1 = 1
text = "dist X=%d, dist Y=%d"
params = floor(p2bodydist X),floor(p2bodydist Y)

;==========================================================================================
[State on]
type = Varset
triggerall = !var(59) && roundstate=2 && ctrl && !ishelper 
trigger1 = AILevel
var(59) = 1
ignorehitpause = 1

[State off]
type = Varset
trigger1 = !alive || roundstate!=2
var(59) = 0
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && sysvar(4)
trigger1 = p2bodydist X<0
trigger1 = random<=600
value = 7006
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && sysvar(4)
trigger1 = (p2bodydist X=[0,80])
trigger1 = random<=600
value = 7000
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && sysvar(4)
trigger1 = (p2bodydist X=[0,140])
trigger1 = random<=600
value = 7001+random%2
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && sysvar(4)
trigger1 = p2bodydist X>=140
trigger1 = random<=600
value = 7003+random%5
ignorehitpause = 1

[State ]
type = ChangeState
trigger1 = var(59) && statetype!=A && ctrl && sysvar(4)
value = 7000+random%7
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = power>=1000 && p2bodydist X>=0
trigger1 = random<=200
value = 7020
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X=[-50,50]) && (p2bodydist Y=[-70,10])
trigger1 = random<=400
value = 7010+random%3
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X=[-50,50]) && (p2bodydist Y<=-70)
trigger1 = random<=600
value = 7012
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X=[40,100]) && (p2bodydist Y=[-70,50])
trigger1 = random<=400
value = 7013+random%2
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X=[60,120]) && (p2bodydist Y=[-70,50])
trigger1 = random<=400
value = 7015
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X=[0,180]) && (p2bodydist Y<=-70)
trigger1 = random<=600
value = 7016
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist X>=0)
trigger1 = random<=800
value = 7017
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist Y<=-70)
trigger1 = random<=800
value = 7019
ignorehitpause = 1

[State ]
type = ChangeState
triggerall = var(59) && statetype!=A && ctrl && !sysvar(4)
triggerall = (p2bodydist Y=[-70,50])
trigger1 = random<=600
value = 7018+random%2
ignorehitpause = 1

[State ]
type = ChangeState
trigger1 = var(59) && statetype!=A && ctrl && !sysvar(4)
trigger1 = power>=1000 && random<=150
value = 7020
ignorehitpause = 1

[State ]
type = ChangeState
trigger1 = var(59) && statetype!=A && ctrl && !sysvar(4)
value = 7010+random%10
ignorehitpause = 1

[State -3, Lose]
type = ChangeState
triggerall = StateNo!=5150 && roundstate>=2
trigger1 = !Alive || life=0
value = 5150

;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

;---------------------------------------------------------------------------
;AI
[Statedef 7000]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 300
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7001]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 310
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7002]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 340
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7003]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 320
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7004]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 330
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7005]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 350
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7006]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 400
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7007]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 410
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7010]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7011]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7012]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7013]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7014]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 220
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7015]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7016]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7017]
type    = S 
movetype= A 
physics = S

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

;---------------------------------------------------------------------------
;AI
[Statedef 7018]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 250
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7019]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 1300
ctrl = 0

;---------------------------------------------------------------------------
;AI
[Statedef 7020]
type    = S 
movetype= A 
physics = S

[State ]
type = ChangeState
trigger1 = 1
value = 2000
ctrl = 0

