I developed a simple Juggle system for some of my chars, feel free to use it if you find it useful.
In a negative state:
;------------------------------------------------------------------------------
;Custom Juggle Checking
;==================
;This SCTRL sets the total ammount of available juggle points to a var
;as soon as the nearest enemy leaves the ground
;We need !(var20) in the trigger because if we don't use it, var(21) will increase over time.
[State -2, VarSet]
type = VarSet
trigger1 = (enemyNear, statetype=A) && !var(20)
var(21) = 15
ignorehitpause = 1
;If the nearest enemy lands, we disable juggle checking
[State -2, VarSet]
type = VarSet
trigger1 = enemyNear, statetype!=A
var(20) = 0
ignorehitpause = 1
;If the nearest enemy jumps, we activate juggle checking
[State -2, VarSet]
type = VarSet
trigger1 = (enemyNear, statetype=A)
var(20) = 1
ignorehitpause = 1
;This is just to keep triggers clean. We use a variable to simplify
;the expression that determines whenever a move should hit
;(talking only in terms of juggle points, not actual move triggering, like !movecontact)
[State -2, VarSet]
type = VarSet
trigger1 = 1
var(22) = ((var(20) && var(21)>0) || !var(20))
;We decrease the juggle counter.
;The number we compare against HitPauseTime is the
;actual pausetime of the HitDef minus 1
;... a bit annoying, because you have to put every move you
;want to affect juggling, but I can't find another way...
;The value we susbtract from var(21) is the "cost" of the move.
[State -2, Juggle--]
type = VarAdd
triggerall = Var(20) && movehit
trigger1 = (stateno=200) && HitPauseTime=10
trigger2 = (stateno=210) && HitPauseTime=11
trigger3 = (stateno=220) && HitPauseTime=18
trigger4 = (stateno=300) && HitPauseTime=10
trigger5 = (stateno=310) && HitPauseTime=11
trigger6 = (stateno=320) && HitPauseTime=18
trigger7 = (stateno=400) && HitPauseTime=10
trigger8 = (stateno=410) && HitPauseTime=11
trigger9 = (stateno=420) && HitPauseTime=18
trigger10 = (stateno=600) && HitPauseTime=10
trigger11 = (stateno=610) && HitPauseTime=11
trigger12 = (stateno=620) && HitPauseTime=18
trigger13 = (stateno=700) && HitPauseTime=10
trigger14 = (stateno=710) && HitPauseTime=11
trigger14 = (stateno=711) && HitPauseTime=11
trigger15 = (stateno=720) && HitPauseTime=18
trigger16 = (stateno=1030) && HitPauseTime=18
trigger17 = (stateno=1031) && HitPauseTime=11
var(21) = -15
ignorehitpause = 1
;------------------------------------------------------------------------------
In your hitdef, you just have to check if var(22) is not zero.
[State 200, HitDef1]
type = HitDef
trigger1 = !movecontact && !movereversed && var(22)
trigger1 = !(enemynear, Hitfall)
attr = S, NA
damage = 20, 0
animtype = Light
guardflag = M
hitflag = MAF
priority = 3, Hit
pausetime = 11, 11
guard.pausetime = 11,11
sparkno = S800
sparkxy = -10, -29
hitsound = S200, 3
guardsound = S200, 11
ground.type = High
ground.slidetime = 13
ground.hittime = 13
ground.velocity = -4
airguard.velocity = -1.5,-1
air.type = High
air.velocity = -3,-5
air.hittime = 25
getpower = 0,0
givepower = 20,20
Hope this helps; it works fine, but I had some problems in characters like P.o.t.S Duck Hunt bonus, because the freaking ducks -obviously- never land.
Edit: It's only me or code tags look like crap in Opera and Chrome?