You know, I think that after reading your post, all I would need to do is change the number in trigger all to a number greater than five... But, I'll have to test it later, it's bed time, and I'm really pushing it.
;north east
[statedef 4011]
type = a
movetype= a
physics = n
ctrl = 0
anim = 1004
sprpriority = 1
velset = 7,-7
[state 1003,1]
type = playerpush
trigger1 = hitcount = 3
value = 0
[state 820, 1]
type = varadd
trigger1 = time = 0
v = 10
value = 1
[state 1003]
type = varadd
trigger1 = movecontact
v = 11
value = 1
[state 1003]
type = movehitreset
trigger1 = movecontact
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "n"
value = 4020
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "ne"
value = 4021
etc. for sw, se, n; compass direction;blah
....
[state 1003]
type = changestate
trigger1 = time = 30
value = 4018
ETC, and so on, for each other possible direction, similar to above.
From the command def (just in case)
[command]
name = "e"
command = /F,a
time = 15
[command]
name = "e"
command = /F,b
time = 15
[command]
name = "e"
command = /F,c
time = 15
Forward+X, or Y, or Z for east, Up+any attack for north, and so on, for each compass direction. I think you get the gist without me posting what is basically the same thing with one button change. I just don't want the player to be able to cancel directions before the previous direction has reached maximum distance.
Spoiler, click to toggle visibilty
;---------------------------------------------------------------------------
;north
[statedef 4010]
type = a
movetype= a
physics = n
ctrl = 0
anim = 1005
sprpriority = 1
velset = 0,-10
[state 1003,1]
type = playerpush
trigger1 = hitcount = 3
value = 0
[state 820, 1]
type = varadd
trigger1 = time = 0
v = 10
value = 1
[state 820, 1]
type = playsnd
trigger1 = time = 0
value = 5,5
channel = 5
[state 820, 1]
type = playsnd
trigger1 = time = 5
value = 3,1
channel = 0
[state 1003]
type = explod
trigger1 = time = 0
anim = 40050
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = 2
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time = 0
anim = 40051
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = 3
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time = 0
anim = 40052
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = -2
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time%10 = 7
anim = 40053
pos = 0,0
postype = p1
facing = 1
bindtime = 1
sprpriority = 2
vel = 0,10
ownpal = 1
ignorehitpause = 1
removetime = 20
removeongethit = 1
[state 1003]
type = varset
trigger1 = time = 0
v = 11
value = 0
[state 1003]
type = hitdef
trigger1 = time%5 = 0
trigger1 = var(11) <= 2
attr = s, sa
animtype = Up
damage = 32,5
guarDFlag = ma
pausetime = 4,3
sparkno = s6006
guard.sparkno = s6000
sparkxy = -10,-70
hitsound = s0,6
guardsound = s0,8
ground.type = high
ground.slidetime = 12
air.hittime = 18
ground.hittime = 30
ground.velocity = -2, -8
air.velocity = -2, -8
yaccel = .7
fall = 1
fall.recover = 0
[state 1003]
type = varadd
trigger1 = movecontact
v = 11
value = 1
[state 1003]
type = movehitreset
trigger1 = movecontact
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "n"
value = 4020
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "ne"
value = 4021
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "e"
value = 4022
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "se"
value = 4023
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "s"
value = 4024
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "sw"
value = 4025
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "w"
value = 4026
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "nw"
value = 4027
[state 1003]
type = changestate
trigger1 = time = 30
value = 4018
;---------------------------------------------------------------------------
;north east
[statedef 4011]
type = a
movetype= a
physics = n
ctrl = 0
anim = 1004
sprpriority = 1
velset = 7,-7
[state 1003,1]
type = playerpush
trigger1 = hitcount = 3
value = 0
[state 820, 1]
type = varadd
trigger1 = time = 0
v = 10
value = 1
[state 820, 1]
type = playsnd
trigger1 = time = 0
value = 5,5
channel = 5
[state 820, 1]
type = playsnd
trigger1 = time = 5
value = 3,1
channel = 0
[state 1003]
type = explod
trigger1 = time = 0
anim = 40040
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = 2
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time = 0
anim = 40041
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = 3
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time = 0
anim = 40042
pos = 0,0
postype = p1
facing = 1
bindtime = -1
sprpriority = -2
id = 40030
ownpal = 1
ignorehitpause = 1
removetime = -1
removeongethit = 1
[state 1003]
type = explod
trigger1 = time%10 = 7
anim = 40043
pos = 0,0
postype = p1
facing = 1
bindtime = 1
sprpriority = 2
vel = -7,7
ownpal = 1
ignorehitpause = 1
removetime = 20
removeongethit = 1
[state 1003]
type = varset
trigger1 = time = 0
v = 11
value = 0
[state 1003]
type = hitdef
trigger1 = time%5 = 0
trigger1 = var(11) <= 2
attr = s, sa
animtype = Up
damage = 32,5
guarDFlag = ma
pausetime = 4,3
sparkno = s6006
guard.sparkno = s6000
sparkxy = -10,-70
hitsound = s0,6
guardsound = s0,8
ground.type = high
ground.slidetime = 12
air.hittime = 18
ground.hittime = 30
ground.velocity = -2, -8
air.velocity = -2, -8
yaccel = .7
fall = 1
fall.recover = 0
[state 1003]
type = varadd
trigger1 = movecontact
v = 11
value = 1
[state 1003]
type = movehitreset
trigger1 = movecontact
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "n"
value = 4020
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "ne"
value = 4021
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "e"
value = 4022
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "se"
value = 4023
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "s"
value = 4024
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "sw"
value = 4025
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "w"
value = 4026
[state 1003]
type = changestate
triggerall = var(10) < 5
trigger1 = command = "nw"
value = 4027
[state 1003]
type = changestate
trigger1 = time = 30
value = 4018
The spoiler is just the first two directions complete code.... just in case. Should I post the code for the sublimation?