
; State of Mamahaha [Helper]

;++++++++++++++
;--------------


;--- mamahaha - stand-by

[statedef 8000]
type=a
movetype=i
physics=n
anim=8000
sprpriority=-3
velset=0,0
ctrl=0

;---
;---
[state 0]
	type=velmul
	trigger1=(anim=[8000,8002])
	x=0.9
	y=0.9

;---
;--- turn
[state 0]
	type=changeanim
	trigger1=(anim=8000) && (facing!=root,facing) && (parentdist x=[10,30])
	trigger2=(anim=8001) && (vel x<0)
	value=8002
[state 0]
	type=turn
	trigger1=(anim=8002) && (animtime=0)
[state 0]
	type=changeanim
	trigger1=(anim=8002) && (animtime=0)
	value=8000

;---
;--- normal
[state 0]
	type=changeanim
	trigger1=(anim!=8000) && (anim!=8002) && (parentdist x=[10,30])
	value=8000

[state 0]
	type=veladd
	trigger1=(anim=8000) && (parentdist x!=[10,30])
	x=ifelse(parentdist x>20,1,-1)*0.25
[state 0]
	type=veladd
	trigger1=(anim=[8000,8002]) && (pos y!=[-160,-150])
	y=ifelse(pos y>-155,-1,1)*0.25
[state 0]
	type=veladd
	trigger1=(anim=8000) && (parentdist x=[10,30]) && (pos y=[-160,-150])
	y=((gametime%31)-15)*0.01

;---
;--- run
[state 0]
	type=changeanim
	trigger1=(anim=8000) && (parentdist x!=[-30,70])
	value=8001
[state 0]
	type=veladd
	trigger1=(anim=8001) && (parentdist x!=[10,30])
	x=ifelse(parentdist x>20,1,-1)*0.75

;---
[state 0]
	type=playsnd
	trigger1=(time%13=0) && (anim=8001)
	value=3,1
	channel=2

;---
;--- action

;--- action_flag
[state 0]
	type=parentvarset
	trigger1=(anim=8000) && (parentdist x=[10,30])
	var(20)=1

;--- catch
[state 0]
	type=changestate
	trigger1=(parent,stateno=1501) ;; && parent,var(20)
	value=8320

;--- special-assist
[state 0]
	type=changestate
	trigger1=(parent,stateno=1300) && (parent,animelem=4)  && parent,var(20)
	value=8300 +(var(5):=parent,var(5))*0

;--- super-assist
[state 0]
	type=changestate
	trigger1=(parent,stateno=3300) && (parent,animelem=4)  && parent,var(20)
	value=8350 +(var(5):=parent,var(5))*0


;--- idling
[state 0]
	type=changestate
	trigger1=(parentdist x=[10,30]) && (parent,stateno=0) && (parent,movetype!=h) && time>128
	trigger2=(parent,anim=170) || (parent,anim=182)
	value=8050

;---
[state 0]
	type=selfstate
	triggerall=animtime=0
	trigger1=(parent,alive=0) || (parent,pos y>100) || (parent,stateno=[190191,190192])
	trigger2=(parent,backedgebodydist<-60) || (parent,frontedgebodydist<-60)
	value=8008



;--------------
;--- mamahaha - destroyself

[statedef 8008]
type=a
movetype=i
physics=n
sprpriority=-3
ctrl=0

;---
; * WinMUGEN
; ȏ̒Oɏo"Explod"΂
; (P2̓ԍ"Anim"\?)
; "Projectile"őp

;[state 0]
;	type=explod
;	trigger1=!time && ishelper
;	anim=8000
;	postype=p1
;	pos=0,0
;	sprpriority=-3
;	scale=const(size.xscale),const(size.yscale)
;	removetime=60
;	vel=vel x,vel y
;	accel=0,-0.12
;	ignorehitpause=1

;---
[state 0]
	type=projectile
	trigger1=!time && ishelper
	projanim=8000
	projhitanim=-1
	projsprpriority=-3
	projscale=const(size.xscale),const(size.yscale)
	projremovetime=60
	offset=0,0
	ownpal=1
	velocity=vel x,vel y
	accel=0,-0.12
	ignorehitpause=1

;---
[state 0]
	type=destroyself
	trigger1=ishelper
	ignorehitpause=1






;++++++++++++++
;--------------
;--- ڋ
;--- st=0,170,180,190

[statedef 8050]
type=a
movetype=i
physics=n
anim=8000
sprpriority=-2
velset=0,0
ctrl=0

;---
[state 0]
	type=null
;;def;	trigger1=(parent,anim=182)
	trigger1=1|| var(1):=floor(12*parent,const(size.xscale)) || var(2):=floor(78*parent,const(size.yscale))
[state 0]
	type=null
	trigger1=(parent,anim=0)
	trigger1=1|| var(1):=floor(5*parent,const(size.xscale)) || var(2):=floor(70*parent,const(size.yscale))
[state 0]
	type=null
	trigger1=(parent,anim=170)
	trigger1=1|| var(1):=floor(5*parent,const(size.xscale)) || var(2):=floor(35*parent,const(size.yscale))


;---
[state 0]
	type=velmul
	trigger1=1
	x=0.9
	y=0.9
[state 0]
	type=veladd
	trigger1=(parentdist x!=[var(1)-1,var(1)+1])
	x=ifelse(parentdist x>var(1),1,-1)*0.1
[state 0]
	type=veladd
	trigger1=(parentdist y!=[var(2)-1,var(2)+1])
	y=ifelse(parentdist y>var(2),1,-1)*0.15
;---
[state 0]
	type=turn
	trigger1=(facing!=parent,facing)

;--- go-standing
[state 0]
	type=changestate
	trigger1=(parentdist x=[var(1)-1,var(1)+1])
	trigger1=(parentdist y=[var(2)-1,var(2)+1])
	value=ifelse((parent,stateno=0), 8051, 8052)

;--- go-back
[state 0]
	type=changestate
	triggerall=roundstate=2
	trigger1=(parent,stateno!=0)
	trigger2=(parentdist x!=[-32,32])
	trigger3=(p2bodydist x=[-65,65])
	value=8000


;--------------
;--- standing at shoulder
;--- ɏƂ

[statedef 8051]
type=a
movetype=i
physics=n
anim=8050
sprpriority=-2
velset=0,0
ctrl=0
;---
[state 0]
	type=bindtoparent
	trigger1=(parent,anim=0) && (animelem=1)
	pos=-var(1),-var(2)
	facing=1
[state 0]
	type=posadd
	triggerall=(parent,anim=0)
	trigger1=(parent,animtime=0)
	trigger2=(parent,animelem=5)
	trigger3=(parent,animelem=6)
	trigger4=(parent,animelem=9)
	trigger5=(parent,animelem=10)
	y=1
[state 0]
	type=posadd
	triggerall=(parent,anim=0)
	trigger1=(parent,animelem=2)
	trigger2=(parent,animelem=3)
	trigger3=(parent,animelem=4)
	trigger4=(parent,animelem=7)
	trigger5=(parent,animelem=8)
	y=-1
;---
[state 0]
	type=changeanim
	trigger1=animtime=0
	value=8051+(random%4)
;---
[state 0]
	type=playsnd
	trigger1=(animelem=2) && ((anim=8051)||(anim=[8053,8054]))
	value=3,(anim=[8053,8054])
	channel=2
;---
;--- go-back
[state 0]
	type=changestate
	trigger1=(parent,stateno!=0)
	trigger2=(parentdist x!=[-32,32])
	trigger3=(p2bodydist x=[-65,65])
	trigger4=(facing!=parent,facing)
	trigger5=roundstate!=2
	value=8000


;--------------
;--- for_intro

[statedef 8052]
type=a
movetype=i
physics=n
anim=8000
sprpriority=-2
velset=0,0
ctrl=0
;---
[state 0]
	type=bindtoparent
	trigger1=!time
	pos=-var(1),-var(2)
	facing=1
;---
[state 0]
	type=explod
	trigger1=(parent,anim=170)
	trigger2=(parent,animelem=4,>6) && (parent,anim=182)
	anim=10000+(parent,anim)
	postype=p1
	pos=0,0
	sprpriority=-3
	scale=const(size.xscale),const(size.yscale)
	persistent=0
;---
[state 0]
	type=destroyself
	trigger1=(parent,anim=170)
	trigger2=(parent,animelem=4,>6) && (parent,anim=182)







;++++++++++++++
;--------------

;--------------
;--- pre catch
;--- ͂ޗ\

[statedef 8320]
type=a
movetype=i
physics=n
anim=8300
velset=0,0
ctrl=0
;; facep2=1

[state 0]
	type=parentvarset
	trigger1=!time
	var(20)=0

[state 0]
	type=velset
	trigger1=(anim=8300)
	x=-(screenpos x-parent,screenpos x)*0.005*facing
	y=-(pos y-parent,pos y-75)*0.005

;---
[state 0]
	type=changeanim
	triggerall=(anim=8300)
	trigger1=(parent,stateno=[1502,1503])
	trigger2=(parent,stateno=1510)
	value=8100
;---
[state 0]
	type=bindtoparent
	trigger1=(anim=8100)
	pos=0,-75
	facing=1

;---
;--- special-assist
[state 0]
	type=changestate
	trigger1=(parent,stateno=1450)
	value=8310 + (var(5):=parent,var(5))*0

;---
;---
[state 0]
	type=changestate
	trigger1=time>16
	trigger1=(parent,stateno!=[1502,1503])
	trigger1=(parent,stateno!=1510)
	value=8000






;++++++++++++++
;--------------
;--- special-assist
;--------------
;--- pre

[statedef 8300]
type=a
movetype=i
physics=n
anim=8300
velset=0,0
ctrl=0
facep2=1

[state 0]
	type=parentvarset
	trigger1=!time
	var(20)=0
;---
[state 0]
	type=palfx
	trigger1=(time%4=0)
	time=2
	add=128,128,128

;;--- pos set in 10f
;x;[state 0]
;x;	type=veladd
;x;	trigger1=1
;x;	x= (parentdist x-10)*0.1
;x;	y=-(pos y+160)*0.1

[state 0]
	type=velset
	trigger1=1
	x=-(screenpos x-parent,screenpos x+2*facing)*0.1*facing
	y=-(pos y+160)*0.1

;---
[state 0]
	type=playsnd
	trigger1=time=10
	value=3,0
	channel=2

[state 0]
	type=changestate
	trigger1=time>10 && (var(5)=[0,3])
	value=8310 +var(5)/2
[state 0]
	type=changestate
	trigger1=time>10
	value=8000



;--------------
;--------------
;--- attack (type: 0,1)

[statedef 8310]
type=a
movetype=a
physics=n
anim=8500
velset=0,0
ctrl=0
facep2=1

;---
[state 0]
	type=hitby
	trigger1=1
	value=sca,na,sa,ha,np,sp,hp
	ignorehitpause=1
[state 0]
	type=hitoverride
	trigger1=1
	attr=sca,na,sa,ha,np,sp,hp
	stateno=8318
;x;	forceair=1
	ignorehitpause=1

;---
[state 0]
	type=velset
	trigger1=!time
	x=ifelse(var(5),7.2,4.9)
	y=ifelse(var(5),4.2,5.8)

;---
[state 0]
	type=explod
	trigger1=(time%3=1) && numexplod(1000)<9
	id=1000
	anim=1060
	postype=p1
	pos=floor(((random%40)-20)*const(size.xscale)), floor(-(random%40)*const(size.yscale))
	sprpriority=1
	ownpal=1
	scale=(gametime%8)*0.1+0.5, (gametime%8)*0.1+0.5
	vel=-vel x*0.5,-vel y*0.5
	ignorehitpause=1
	removeongethit=1

;---
[state 0]
	type=hitdef
	trigger1=!time
	attr=a,sp
	animtype=hard
	air.animtype=back
	fall.animtype=back
	air.type=low
	ground.type=low
	hitflag=mafp
	guardflag=ma
	damage=60,6
	pausetime=4,13
	;ad; sparkno=3+(random%4)*10
	;ad; guard.sparkno =41
	sparkxy=-10,-10
	hitsound=300,4
	guardsound=41,0
	ground.slidetime=16
	ground.hittime=18
	air.hittime=18
	ground.velocity=-2,-8
	air.velocity=   -2,-8
	;---
	fall=1
	air.fall=1
	fall.recover=0
	yaccel=0.5
	id=1000
	persistent=0
	;---
	palfx.time=50
	palfx.add=208,10,-208
	palfx.mul=256,200,200
	palfx.sinadd=256,196,196,20
	;---
	guard.ctrltime=     id +0*(var(31):=3 || var(30):= 510510 )
	fall.envshake.time= id
	fall.envshake.ampl= 0

;---
; burn_spark
[state 0]
	type=helper
	trigger1=(movehit=1) && numtarget && (hitpausetime=3) && (root,sysfvar(0)>0)
	id=152200
	stateno=152200
	size.height=(target,id)*10
	ignorehitpause=1
	persistent=0

;---
[state 0]
	type=changestate
	trigger1=movecontact
	trigger2=(backedgebodydist<-100) || (frontedgebodydist<-25) || (pos y >-15) || (time>196)
	value=8000


;--------------
;--------------
;--- attack (type: 2,3)

[statedef 8311]
type=a
movetype=a
physics=n
anim=8505
velset=3,3
ctrl=0
facep2=1

;---
[state 0]
	type=hitby
	trigger1=1
	value=sca,na,sa,ha,np,sp,hp
	ignorehitpause=1
[state 0]
	type=hitoverride
	trigger1=1
	attr=sca,na,sa,ha,np,sp,hp
	stateno=8318
;x;	forceair=1
	ignorehitpause=1

;---
[state 0]
	type=velset
	trigger1=time<6 && numenemy
	x=((p2dist x))*0.02 +0.5
	y=(p2dist y-50)*0.02 +0.5
;---
[state 0]
	type=velset
	trigger1=time<6 && root,sysfvar(0)>0 && playeridexist(floor(root,sysfvar(0)))
	trigger1=playerid(floor(root,sysfvar(0))),var(0)=90900
	trigger1=var(0):=playerid(floor(root,sysfvar(0))),var(16)
	trigger1=playeridexist(var(0))
	trigger1=playerid(var(0)),alive
	x=-(screenpos x-playerid(var(0)),screenpos x)*0.02*facing +0.5
	y=-(pos y-playerid(var(0)),pos y-playerid(var(0)),const(size.mid.pos.y))*0.02 +0.5

;---
[state 0]
	type=hitdef
	trigger1=!time
	attr=a,sp
	animtype=hard
	air.animtype=back
	fall.animtype=back
	air.type=low
	ground.type=low
	hitflag=mafp
	guardflag=ma
	damage=20,0
	pausetime=4,13
	;ad; sparkno=3+(random%4)*10
	;ad; guard.sparkno =41
	sparkxy=-10,-10
	hitsound=300,4
	guardsound=41,0
	ground.slidetime=16
	ground.hittime=18
	air.hittime=18
	ground.velocity=-5
	air.velocity=   -4,-5
	id=1000
	persistent=0
	;---
	guard.ctrltime=     id +0*(var(31):=3 || var(30):= 510510 )
	fall.envshake.time= id
	fall.envshake.ampl= 0

;---
[state 0]
	type=changestate
	trigger1=movecontact
	value=ifelse(var(5)=3, 8312, 8000)
[state 0]
	type=changestate
	trigger1=(backedgebodydist<-100) || (frontedgebodydist<-25) || (pos y >-15) || (time>128)
	trigger2=(parent,movetype=h && parent,gethitvar(damage)>0) || (parent,alive=0)
	value=8000


;--------------
;--- attack (type: 3)

[statedef 8312]
type=a
movetype=a
physics=n
anim=8000
velset=-5,-8
ctrl=(var(5):=0)
facep2=1
[state 0]
	type=velmul
	trigger1=1
	x=0.925
	y=0.915
[state 0]
	type=changestate
	trigger1=time=36
	value=8311 ;; 2nd-attack
[state 0]
	type=changestate
	trigger1=(parent,movetype=h && parent,gethitvar(damage)>0) || (parent,alive=0)
	value=8000

;--------------
;--------------
;--- get_hit

[statedef 8318]
type=a
movetype=a
physics=n
anim=8300
velset=-3,-6
ctrl=(var(5):=0)
[state 0]
	type=velmul
	trigger1=1
	x=0.96
	y=0.96
[state 0]
	type=playsnd
	trigger1=time=2
	value=3,0
	channel=2
[state 0]
	type=palfx
	trigger1=!time
	time=6
	add=0,0,0
	mul=328,0,0
	color=0
;---
[state 0]
	type=explod
	trigger1=(time%2) && numexplod(1000)<9
	id=1000
	anim=1050
	postype=p1
	pos=floor(((random%40)-20)*const(size.xscale)), floor(-(random%40)*const(size.yscale))
	sprpriority=1
	ownpal=1
	scale=(gametime%6)*0.1+0.45, (gametime%6)*0.1+0.45
	ignorehitpause=1
	removeongethit=1
;---
[state 0]
	type=changestate
	trigger1=time=9
	value=8000







;++++++++++++++
;--------------
; super-assist
;--------------
;--- pre

[statedef 8350]
type=a
movetype=i
physics=n
anim=8300
velset=0,0
ctrl=0
facep2=1

[state 0]
	type=parentvarset
	trigger1=!time
	var(20)=0
;---
;--- type - 1
[state 0]
	type=velset
	trigger1=!time && (var(5)=[0,1])
	x=-6
	y= (-75-pos y)*0.025 +0.025
[state 0]
	type=velmul
	trigger1=(var(5)=[0,1])
	x=0.9
	y=1.025
;---
;--- type - 2
;x;[state 0]
;x;	type=veladd
;x;	trigger1=(var(5)=[2,3])
;x;	x= (parentdist x-10)*0.1
;x;	y=-(pos y+150)*0.1

[state 0]
	type=velset
	trigger1=(var(5)=[2,3])
	x=-(screenpos x-parent,screenpos x+2*facing)*0.1*facing
	y=-(pos y+150)*0.1

;---
;---
[state 0]
	type=changestate
	trigger1=((pos y>=-50) || (time>128)) && (var(5)=[0,1])
	trigger2=(time>10) && (var(5)=[2,3])
	value=8351



;--------------
;--- type1: horizontal-dash
;--- type2: slash

[statedef 8351]
type=a
movetype=a
physics=n
anim=8550+(var(5)=[2,3])*5
velset=0,0
ctrl=0

[state 0]
	type=playsnd
	trigger1=time=3
	value=3,0
	channel=2
;---
[state 0]
	type=palfx
	trigger1=1
	time=1
	add=ifelse(time%2,256,0),ifelse(time%2,128,-128),ifelse(time%2,0,-256)
	ignorehitpause=1
;---
[state 0]
	type=explod
	trigger1=(frontedgebodydist>0) && (backedgebodydist>0)
	trigger1=(time%2) && numexplod(1000)<9
	id=1000
	anim=1050
	postype=p1
	pos=floor(((random%40)-20)*const(size.xscale)), floor(-(random%40)*const(size.yscale))
	sprpriority=1
	ownpal=1
	scale=(gametime%6)*0.1+0.5, (gametime%6)*0.1+0.5
	ignorehitpause=1
	removeongethit=1

;---
[state 0]
	type=veladd
	trigger1=(var(5)=[0,1]) && (vel x<20)
	x=ifelse(var(5)=1,3.5,3)
[state 0]
	type=velset
	trigger1=!time && (var(5)=[2,3])
	x=9+var(5)
	y=4+var(5)

;---
[state 0]
	type=hitdef
	trigger1=!time
	attr=a,hp
	hitflag=maf
	guardflag=m
	animtype=hard
	air.animtype=diagup
	fall.animtype=diagup
	air.type=low
	ground.type=high
	hitflag=mafp
	damage=ifelse((var(5)%2),280,180), ifelse((var(5)%2),20,15)
	pausetime=4,13
	;ad; sparkno=4+(random%4)*10
	;ad; guard.sparkno =41
	sparkxy=-10,-10
	hitsound=300,4
	guardsound=41,0
	ground.slidetime=16
	ground.hittime=18
	air.hittime=18
	ground.velocity=-3,-10
	air.velocity=   -3,-10
	fall=1
	air.fall=1
	fall.recover=0
	yaccel=0.5
	;---
	id=3000
	persistent=0
	;---
	palfx.time=50
	palfx.add=208,10,-208
	palfx.mul=256,200,200
	palfx.sinadd=256,196,196,20
	;---
	guard.ctrltime=     id +0*(var(31):=4 || var(30):= 510510 )
	fall.envshake.time= id
	fall.envshake.ampl= 0

;---
[state 0] ; burn_spark
	type=helper
	trigger1=(movehit=1) && numtarget && (hitpausetime=3) && (root,sysfvar(0)>0)
	id=152200
	stateno=152200
	size.height=(target,id)*10
	ignorehitpause=1
	persistent=0

;---
[state 0]
	type=changestate
	trigger1=(backedgebodydist<-100) || (frontedgebodydist<-25) || (pos y >-15) || (time>56)
	value=8000









;[EOF]
