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.