;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;.d88b.             w      w                           
;8P  Y8    88b.    w8ww    w    .d8b.    8d8b.    d88b 
;8b  d8    8  8     8      8    8' .8    8P Y8    `Yb. 
;`Y88P'    88P'     Y8P    8    `Y8P'    8   8    Y88P 
;          8                                           
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[Statedef -3, OPTIONS N' AI]

[state options]
type=null

;toggle origin mode (0=on|1=off)
trigger1=1||var(5):= (0) ;default=0

;amount of power to gain when charging
trigger1=1||var(6):= (9) ;default=9

;auto power regen (0=on|1=off)
trigger1=1||var(7):= (0) ;default=0

;origin power gained when charging
trigger1=1||var(8):= (2) ;default=2

;afterimage helpers (0=on|1=off)
trigger1=1||var(9):= (0) ;default=0

;origin mode power drain
trigger1=1||var(10):= (2) ;default=2

;amount of origin power to gain when hit (when attacking, this value is in half. set to -1 to base off damage recieved)
trigger1=1||var(11):= (15) ;default=15

;only enable this for debugging purposes (0=on|1=off)
;this auto-enables Origin Mode when you press C, so please do not enable this UNLESS if you are editing this character. thanks -- Kuro Aonix
trigger1=1||var(16):= (1) ;default=1

;toggle Origin Mode number display (0=on|1=off)
trigger1=1||var(17):= (0) ;default=0

;amount of power to start with (1000 = 1 power bar. set to -1 to keep power values between rounds)
trigger1=1||var(20):= (0) ;default=0

;amount of power to drain when taunting (power you gain is halved, 1000 = 1 power bar)
trigger1=1||var(21):= (1000) ;default=1000

;toggle 1.0 alert message (0=on|1=off)
trigger1=1||var(22):= (0) ;default=0

;disable voice (0=on|1=off)
trigger1=1||var(23):= (1) ;default=1

;toggle AI parrying (0=on|1=off)
trigger1=1||var(24):= (0) ;default=0

;toggle AI guard break (0=on|1=off)
trigger1=1||var(26):= (0) ;default=0

;Y position of Origin Mode number display?
trigger1=1||var(506):= (225) ;default=225

;debug mode Origin Mode number display offset amount
trigger1=1||var(507):= (25) ;default=25

;Super Dash cooldown amount
trigger1=1||var(510):= (180) ;default=180 (3 seconds. 60 ticks = 1 second)

;Blue Field cooldown amount
trigger1=1||var(512):= (180) ;default=180 (3 seconds. 60 ticks = 1 second)

;Black Flash cooldown amount
trigger1=1||var(513):= (300) ;default=300 (5 seconds. 60 ticks = 1 second)

;toggle Damage Dampener. might cause some issues with the character (0=off|1=on)
trigger1=1||var(514):= (0) ;default=0

;toggle BG during Strong Specials? (0=off|1=on)
trigger1=1||var(518):= (1) ;default=1

;toggle charge pushing? (0=off|1=on)
trigger1=1||var(519):= (1) ;default=1

;Domain Expansion: Infinite Void duration
trigger1=1||var(520):= (540) ;default=540 (9 seconds. 60 ticks = 1 second)

;Domain Expansion: Infinite Void life drain delay
trigger1=1||var(521):= (2) ;default=2

;Origin Mode attack power multiplier amount
trigger1=1||fvar(0):= (1.5) ;default=1.5

;AI level (valid values: 1-8. set to 0 to be MUGEN's Difficulty value)
trigger1=1||var(58):= (0) ;default=0

;do not touch this!!!
triggerall=!ishelper&&roundstate=0
ignorehitpause=1

[State vs. Boss Mode Overrides] ;This activates if you are fighting a boss or a minigame.
type = Null
triggerall=!ishelper
triggerall = var(28)=1
trigger1=1||var(510):=0 ;Super Dash cooldown amount (default 180)
trigger1=1||var(512):=0 ;Blue Field cooldown amount (default 180)
trigger1=1||var(514):=0 ;Toggle Damage Dampener (default 0)
ignorehitpause = 1

;---------------------------------------------------------------------------
; AI DOCUMENTATION STUFF

; PLEASE DO NOT MODIFY ANY OF THIS DOWN BELOW (unless if you're making an AI patch)
;---------------------------------------------------------------------------

[State ]
type = null
trigger1=0
[State ====================]
type = null
trigger1=0
[State =====AI START]
type = null
trigger1=0
[State ====================]
type = null
trigger1=0
[State ]
type = null
trigger1=0

[State AI Lobotomizer 1999]
type = Null
triggerall=!ishelper
trigger1 = var(58)<=4
trigger1=1||var(599):=1
ignorehitpause = 1

[State Ultimate]
type=changestate
triggerall=var(59)&&alive&&roundstate=2
triggerall=var(28)<=0
triggerall = var(1)=1
triggerall = var(5)=0
triggerall = var(3)<=1000
triggerall = enemynear,life <= enemynear,lifemax/3
triggerall=statetype = s
triggerall=(ctrl)||((var(27)&&pos y=0))
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),4,999)
value = 4000

[State Domain Expansion: Infinite Void]
type=changestate
triggerall=var(575)!=1
triggerall = power>=3000
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype = s)&&( ctrl))||((var(27)&&pos y=0))
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),6,999)
value = 3030

[State Hollow Purple]
type=changestate
triggerall=!numhelper(1021)&&!numhelper(1041)&&!numexplod(3020)
triggerall = power>=2000
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype = s)&&( ctrl))||((var(27)&&pos y=0))
trigger1=p2bodydist x=[-10,260]
trigger1=p2bodydist y=[-10,140]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),4,8)
value = 3020

[State Red Blast]
type=changestate
triggerall=!numexplod(3000)
triggerall = power>=1000
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype != a)&&( ctrl))||((var(27)&&pos y=0))
trigger1=p2bodydist x=[-10,260]
trigger1=p2bodydist y=[-10,150]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),4,8)
value = 3000

[State Guard Break]
type = selfstate
value = 360
triggerall=var(28)<=0
triggerall = (var(59)>=1)
triggerall = var(26)=0 ;GUARD BREAK ON
triggerall = roundstate = 2
triggerall = statetype != A
triggerall = p2statetype!=l
triggerall = p2bodydist x = [-10,150]
triggerall = p2bodydist y = [-90,30]
triggerall=!numhelper(66672)
triggerall = power>=250
triggerall = random < (var(59) * (var(59)*12))*ifelse(!var(599),2,0)
trigger1 = ctrl
trigger2=var(27)

[State Grab]
type = SelfState
value = 350
triggerall=var(28)<=0
triggerall = (var(59)>=1)
triggerall = var(25)=0 ;GRAB ON
triggerall = roundstate = 2
triggerall = statetype != A
triggerall = p2statetype!=l
triggerall = p2bodydist x = [-10,130]
triggerall=!numhelper(66671)
triggerall = power>=150
triggerall = random < (var(59) * (var(59)*12))/3
trigger1 = ctrl
trigger2=var(27)&&pos y=0

[State Taunt]
type = SelfState
value = 198
triggerall = (var(59)>=1)
triggerall=!numhelper(3031)
triggerall = p2bodydist x > 70
triggerall=!numexplod(66673)
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),6,999)
trigger1 = statetype = S
trigger1 = enemynear,statetype = L
trigger1 = ctrl
trigger2 = statetype = S
trigger2 = ctrl

[State Black Flash]
type=changestate
triggerall=!numhelper(66670)
triggerall = power>=500
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype != a)&&( ctrl))||((var(27)&&pos y=0))
trigger1=p2bodydist x=[-10,200]
trigger1=p2bodydist y=[-10,150]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,12)
value = 1070

[State Blue Field]
type=changestate
triggerall=!numhelper(66669)
triggerall = power>=500
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( ctrl))||((var(27)))
trigger1=p2bodydist x=[-10,135]
trigger1=p2bodydist y=[-10,150]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,12)
value = 1050

[State Red Reversal]
type=changestate
triggerall=!numhelper(1021)&&!numhelper(1041)&&!numexplod(1040)
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype != a)&&( ctrl))||((var(27)&&pos y=0))
trigger1=p2bodydist x=[-10,260]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,12)
value = 1040

[State Red Counter]
type = selfstate
value = 1030
triggerall = (var(59)>=1)
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,8)
triggerall = roundstate = 2
triggerall = p2movetype = A ;Enemy is attacking
triggerall = enemynear,movetype = A ;Failsafe?
triggerall = facing=-enemynear,facing ;Am I facing the same direction the enemy is?
triggerall = ctrl ;Can I control myself?
triggerall=statetype!=A ;Am I standing?
triggerall = inguarddist ;Am I in guarding distance?
trigger1 = stateno=100 ;So she doesn't get hit while running, since Ctrl is 0 when she is running when AI is active
trigger2 = enemynear,hitdefattr=sca,aa,ap ;Standing Crouching Air, All Attacks, All Projectiles
trigger3 = enemynear,numproj>0 ;Is there a projectile near me? If so, start blocking pls
trigger4 = enemynear,numproj ;Just the same thing above but slightly different. Only here if something goes wrong

[State Blue Max]
type=changestate
triggerall=!numhelper(1021)&&!numhelper(1041)&&!numexplod(1020)
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( ctrl))||((var(27)))
trigger1=p2bodydist x=[-10,260]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,12)
value = 1020

[State ]
type=changestate
triggerall=var(59)&&alive&&roundstate=2
triggerall=(( statetype != a)&&( ctrl))||((var(27)&&pos y=0))
triggerall=enemynear,statetype!=l
trigger1=p2bodydist x=[-10,110]
trigger1=p2bodydist y=[-70,30]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
value = 1010

[State ]
type=changestate
triggerall=var(59)&&alive&&roundstate=2
triggerall=!numhelper(1021)&&!numhelper(1041)&&!numexplod(1040)
triggerall=(( statetype = s)&&( ctrl))||((var(27)&&pos y=0))
triggerall=enemynear,statetype!=l
trigger1=p2bodydist x=[-10,260]
trigger1=p2bodydist y=[-85,30]
trigger1=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
value = 1000

[State Attempt to parry the attacks pls (AI) ]
type = hitoverride
triggerall = (var(59)>=1)
triggerall = var(24)=0 ;PARRY ON
triggerall=stateno!=[195,198]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
;triggerall = power>=250
triggerall = roundstate = 2
trigger1 = movetype!=A
trigger1 = movetype!=H
stateno = 311
attr = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT
time = 2

[State Dodge the attacks pls (AI) ]
type = selfstate
value = ifelse(random%2=1,300,ifelse(random%2=1,301,302))
triggerall = (var(59)>=1)
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
triggerall = power>=var(515)
triggerall = roundstate = 2
triggerall = ctrl && statetype = S ;Can I control myself, and am I standing?
triggerall = p2movetype = A ;Enemy is attacking
triggerall = p2bodydist x = [-5,100]
trigger1 = enemynear,hitdefattr=sca,aa,ap,at ;Standing Crouching Air, All Attacks, All Projectiles, All Throws
trigger2 = enemynear,numproj>0 ;Is there a projectile near me? If so, start blocking pls
trigger3 = enemynear,numproj ;Just the same thing above but slightly different. Only here if something goes wrong

[State Don't guard pls (AI) ]
type = AssertSpecial
trigger1 = (var(59)>=1)
flag = nostandguard
flag2= nocrouchguard
flag3 = noairguard
ignorehitpause = 1

[State Guard]
type = SelfState
value = 120
triggerall = var(59)>=1
triggerall = StateNo!=[120,155]
triggerall = inguarddist
trigger1 = Ctrl||stateno=100

[State Super Dash]
type = selfstate
value = 800
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = p2bodydist x >=20
triggerall=!numhelper(66668)
triggerall = power>=500
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = ctrl
trigger2=var(27)

[State Combo Breaker]
type = SelfState
value = 750
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = statetype != C
triggerall = var(1)=1
triggerall = var(5)=0
triggerall = var(3)<=1000
triggerall=!numhelper(66667)
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = movetype = H

[State Air Z]
type = selfstate
value = 620
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = statetype = A
triggerall = p2bodydist x = [-10,85]
triggerall = p2bodydist y = [-65,110]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl

[State Air Y]
type = selfstate
value = 610
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = stateno!=630
triggerall = ctrl && statetype = A
triggerall = p2bodydist x = [-10,35]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl
trigger1 = ctrl||((stateno=221)&&movecontact)&&animelemtime(1)>=18

[State Air X]
type = selfstate
value = 600
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = stateno!=630
triggerall = ctrl && statetype = A
triggerall = p2bodydist x = [-10,75]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl||((stateno=221)&&movecontact)&&animelemtime(1)>=18

[State Crouch Z]
type = selfstate
value = ifelse(statetype!=a,420,421)
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall=var(33)<2
triggerall = p2bodydist x = [-10,50]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl||(stateno=[400,410])&&movecontact

[State Crouch Y]
type = selfstate
value = 410
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = p2statetype=l
triggerall = p2bodydist x = [-10,50]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl||stateno=400&&movecontact

[State Z]
type = selfstate
value = 220
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = p2statetype=l
triggerall = p2bodydist x = [-10,110]
triggerall = p2bodydist y = [-130,40]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl

[State Y]
type = selfstate
value = 210
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = ctrl && statetype = S
triggerall = p2statetype!=l
triggerall = p2bodydist x = [-10,80]
triggerall = p2bodydist y = [-110,40]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl

[State X]
type = selfstate
value = 200
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = ctrl && statetype = S
triggerall = p2statetype!=l
triggerall = p2bodydist x = [-10,50]
triggerall = p2bodydist y = [-90,40]
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),1,4)
trigger1 = ctrl

[State Charge] ;Regular options
type = SelfState
value = 195
triggerall = (var(59)>=1)
triggerall = var(1)=0
triggerall = var(5)=0
triggerall = var(3)<1000 ;Origin power
triggerall = p2bodydist x > 100
triggerall=!numhelper(3031)
triggerall=enemy,alive ;This is so she doesn't charge when the enemy is dead
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = statetype != A
trigger1 = ctrl
trigger2 = statetype = S
trigger2 = enemynear,statetype = L
trigger2 = ctrl
[State Charge] ;Origin Mode is enabled
type = SelfState
value = 195
triggerall = (var(59)>=1)
triggerall = var(1)=1
triggerall = power<powermax
triggerall = p2bodydist x > 100
triggerall=!numhelper(3031)
triggerall=enemy,alive ;This is so she doesn't charge when the enemy is dead
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = statetype = S
trigger2 = enemynear,statetype = L
trigger2 = ctrl
[State Charge] ;Origin Mode is enabled
type = SelfState
value = 195
triggerall = (var(59)>=1)
triggerall = var(1)=1
triggerall = power<powermax&&var(3)>=1000
triggerall = p2bodydist x > 100
triggerall=!numhelper(3031)
triggerall=enemy,alive ;This is so she doesn't charge when the enemy is dead
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = statetype = S
trigger2 = enemynear,statetype = L
trigger2 = ctrl
[State Charge]
type = SelfState
value = 195
triggerall = (var(59)>=1)
triggerall = var(1)=0
triggerall = var(5)=1
triggerall = power<powermax
triggerall = p2bodydist x > 100
triggerall=!numhelper(3031)
triggerall=enemy,alive ;This is so she doesn't charge when the enemy is dead
triggerall = random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = statetype = S
trigger2 = enemynear,statetype = L
trigger2 = ctrl

[State Block the attacks pls (AI) ]
type = null;selfstate
value = 120
triggerall = (var(59)>=1)
;triggerall = random < (var(59) * (var(59)*12))
triggerall = roundstate = 2
triggerall = p2movetype = A ;Enemy is attacking
triggerall = enemynear,movetype = A ;Failsafe?
triggerall = facing=-enemynear,facing ;Am I facing the same direction the enemy is?
triggerall = ctrl ;Can I control myself?
triggerall = inguarddist ;Am I in guarding distance?
trigger1 = stateno=100 ;So she doesn't get hit while running, since Ctrl is 0 when she is running when AI is active
trigger2 = enemynear,hitdefattr=sca,aa,ap,at ;Standing Crouching Air, All Attacks, All Projectiles, All Throws
trigger3 = enemynear,numproj>0 ;Is there a projectile near me? If so, start blocking pls
trigger4 = enemynear,numproj ;Just the same thing above but slightly different. Only here if something goes wrong

[State Run or walk to the enemy (AI)]
type = selfstate
value = 100
triggerall = (var(59)>=1)
triggerall = roundstate = 2
triggerall = ctrl && statetype = S
triggerall = p2bodydist x = [19,500] ;this is just a direct copypaste from yagjus lmfao
triggerall=random < (var(59) * (var(59)*12))/ifelse(!var(599),2,6)
trigger1 = ctrl