So, I tried the solution Odb718 suggested and it didn't work.
But, Nocturnis's idea of a custom Air Jump state worked a treat, once I figured out how to go about it.
To anyone curious:
;Air Jump Custom
[Statedef 51]
type = A
physics = A
velset = 0, 0
[State 51, Jump limit]
type = Varset
trigger1 = Time = 0
var(5) = 1
[State 51, up set]
type = VarSet
trigger1 = var(1) = 0
sysvar(1) = 0
[State 51, forward set]
type = VarSet
trigger1 = var(1) = 1
sysvar(1) = 1
[State 51, backward set]
type = VarSet
trigger1 = var(1) = 2
sysvar(1) = -1
[State 51, Velocity]
type = VelSet
trigger1 = time = 0
x = ifelse(sysvar(1)=0, const(velocity.airjump.neu.x), ifelse(sysvar(1)=1, const(velocity.airjump.fwd.x), const(velocity.airjump.back.x)))
y = const(velocity.airjump.y)
[State 51, Animation]
type = ChangeAnim
trigger1 = anim != 41 && anim != 42 && anim != 43
value = cond(command = "holdfwd", 42, cond(command = "holdback", 43, 41))
[State 51, Control]
type = CtrlSet
trigger1 = Vel Y > 0
value = 1
[State 51, Land]
type = ChangeState
trigger1 = Pos Y >= 0
value = 52
Basically copy/paste of the Air Jump state but tying things to my own variables rather than the in-engine ones.
var(5) dictates the either or not the air jump is still available an resets on both landing and standing:
[State 0, Air Jump reset]
type = VarSet
trigger1 = statetype = S
v = 5
value = 0
[State 52, Air Jump reset]
type = VarSet
trigger1 = Time = 0
v = 5
value = 0
And the Air jump operates on the following command:
[State -1, Air Jump]
type = ChangeState
value = 51
triggerall = statetype = A
triggerall = var(5) = 0
triggerall = pos y <= -35
trigger1 = command = "u"
trigger1 = (var(1) := 0)||1
trigger1 = ctrl
trigger2 = command = "uf"
trigger2 = (var(1) := 1)||1
trigger2 = ctrl
trigger3 = command = "ub"
trigger3 = (var(1) := 2)||1
trigger3 = ctrl
Could it be more refined? Probably, but it works as is.
Thanks for the help.