Wow, I think I got it? I don't want to be too sure, so here's the code:
Spoiler, click to toggle visibilty
;---------------------------------------------------------------------------
; Special 1
[Statedef 1000]
type = S
movetype = A
physics = S
juggle = 0
poweradd = 55
velset = 0,0
anim = 1000
ctrl = 0
sprpriority = 2
[State 1000, 1]
type = playsnd
trigger1 = time = 1
value = 777,15
channel = 31
[State 1000, 2]
type = HitDef
trigger1 = AnimElem = 5
attr = S, NT
P1StateNo = 1010
P2StateNo = 1020
animtype = Hard
damage = 0, 0
priority = 5
hitflag = MA
;guardflag = MA
pausetime = 15,15
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime = 17
ground.velocity = -4,-3.5
air.velocity = -4,-3
guard.kill = 0
kill = 0
fall = 1
[State 1000, 2]
type = HitDef
triggerall = P2StateNo = 1020
trigger1 = AnimElem = 5
attr = S, NT
animtype = Hard
damage = 100, 10
priority = 5
hitflag = MA
;guardflag = MA
pausetime = 15,15
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime = 17
ground.velocity = -4,-3.5
air.velocity = -4,-3
guard.kill = 0
kill = 0
fall = 1
[State 1000, 3]
type = ChangeState
trigger1 = Time >= 33
value = 0
ctrl = 1
[State 1000, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;---------------------------------------------------------------------------
; Special 1 Hit
[Statedef 1010]
type = S
movetype= A
physics = N
poweradd = 50
anim = 1010
ctrl = 0
[State 1070, Blink Yellow]
type = PalFX
triggerall = StateNo = 1010
trigger1 = Time = 0
time = 60
add = 32,16,0
sinadd = 64,32,5,3
[State 1010, State End]
type = SelfState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
[State 1010, State End]
type = SelfState
trigger1 = P2StateNo != 1020
value = 0
ctrl = 1
;---------------------------------------------------------------------------
; Special 1 Get Hit
[Statedef 1020]
type = A
movetype= H
physics = N
velset = 0,0
[State 1070, Blink Yellow]
type = PalFX
triggerall = StateNo = 1020
trigger1 = Time = 0
time = 60
add = 32,16,0
sinadd = 64,32,5,3
[State 1020, 1]
type = ChangeAnim2
Trigger1 = Time = 0
value = 1020
[State 1020, 2]
type = SelfState
triggerall = Time > 60
trigger1 = !gethitvar(isbound)
value = 5050
Thanks for explaining the ChangeState/SelfState thing for me, it finally clarified what I was doing wrong with her regular throw as well! After testing this out, I think it needs a code that tells P1 and P2 not to be able to be pushed around while they're in State 1010 and 1020, and maybe a few safety net codes