The Mugen Fighters Guild

Help => M.U.G.E.N Development Help => Topic started by: Momotaro on November 14, 2020, 01:46:59 pm

Title: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on November 14, 2020, 01:46:59 pm
As a reminder.

"I'm coding one more move from Kotaro.
Her special jump move (some kind of air roll jump. SFA Guy type, or Cammy's Holligan combination)
This move have an afterimage.

I'm still using existing characters as a reference to get how it's coded."

Now, concentrate on the follow ups.

These are the rules I will use. (pretty similar to the source character.)
I call the move "ROLL JUMP"

-The move is possible from ground and from mid air. (it uses the same states)
-the states are start, the jump(itself), landing.
-you can usually cancel this jump into any jump attack and 2 air special moves
-you can cancel jump attacks into this move
-you cannot cancel air special moves into this move
-you cannot use more than 1 jump attack once you started this move. (I would like some help with that)

So, I would like that to be possible.
Jump, jump attack, ROLL JUMP, air special move.
or
ROLL JUMP, jump attack, ROLL JUMP, air special move.

But this should not be possible
Jump, jump attack, ROLL JUMP, jump attack.
or
ROLL JUMP, jump attack, ROLL JUMP, jump attack.

Thanks for any help

This is the states code for the moment.

Code:
;========================<ROLL JUMP START (stand)>=============================
[StateDef 1400]
type = U; unchanged
physics = N
moveType = A
anim = 1400
ctrl = 0
velSet = 0,0
sprPriority = 1
powerAdd = 72 * !var(20)
;faceP2 = 1

[State 1400, Button Detect]
type = VarSet
trigger1 = !Time && !AILevel
;ifElse((command = "c" || command = "rlsc"), 2, ifElse((command = "b" || command = "rlsb"), 1, 0))
var(10) = ifElse((NumExplod(90000250) || NumExplod(90000255)), 2, ifElse((NumExplod(90000240) || NumExplod(90000245)), 1, 0))

[State 1400, Button Detect (AI)]
type = VarSet
trigger1 = !Time && AILevel
var(10) = ifElse((P2MoveType = H || Random < 333), 2, ifElse(Random < 500, 1, 0))

[State 50, ]
type = attackdist
trigger1 = 1
value = 0

[State 5120, “Š‚°–³“G]
type = NotHitBy
trigger1 = 1
value = , NT,ST,HT
time = 1

[State 40, ˆÚ“®];special version (STAND)
type = velset
trigger1 = time=0
trigger1 = Statetype != A
y = -9.02
;light 0.5(au début)
;strong 3.3(au début)
x = ifElse(var(10) = 2, 4.2, ifElse(var(10) = 1, 2.55, 0.9));;;;;explic : 2 = strong, 1 = medium, rien = light

[State 40, ˆÚ“®E‹ó’†];special version (AIR) = saute moins haut
type = VelSet
trigger1 = Time=0
trigger1 = Statetype = A
y = -6.5;-9.02
;light 0.5(au début)
;strong 3.3(au début)
x = ifElse(var(10) = 2, 4.2, ifElse(var(10) = 1, 2.55, 0.9));;;;;explic : 2 = strong, 1 = medium, rien = light

[State 5100, 8]
type = posfreeze
trigger1 = 1

[State 1002, Jumping Sound]
type = PlaySnd
trigger1 = animtime=0||statetype=A
value = 41,0;;;52,0

[State 40, 6]
type = ChangeState
trigger1 = animtime=0||statetype=A
value = 1405

Code:
;========================<ROLL JUMP - THE MOVE>=============================
;LE ROLL JUMP EN LUI MEME (L M H EX) (mais pas le air cancel, sauf the air cancel ex)
[Statedef 1405]
type = A
physics = A
moveType = A
;anim = 1405
ctrl = 0
;velSet = 0,0
;sprPriority = 1
;powerAdd = -500
;faceP2 = 1

;ajout - désactiver le player push
[State 181, player push]
Type = PlayerPush
trigger1 = 1
Value = 0

[State 50, Žc‘œ]
type = attackdist
trigger1 = 1
value = 0

[State -2, Žc‘œ]
type = AfterImage
;Trigger1 = var(31) = 1 ;“V‘ä•‘ƒtƒ‰ƒO
trigger1 = time = 0
palBright = 0, 0, 0
palContrast = 128, 128, 128
paladd = 0,0,0
palmul = 1,1,1
trans = add1 ;none
TimeGap  = 1 ; Žc‘œ‰æ‘œ‚Ì•Û‘¶ŠÔŠu
FrameGap = 4 ;Žc‘œ‚Ì•\Ž¦ŠÔŠu
length = 13 ; Žc‘œ—pî•ñ‚Ì•Û‘¶–‡”
time = 30;20;2

[State 50, 2]
type = ChangeAnim
trigger1 = Time = 0
value = 42

;;;;;;NEW
[State 1000, 3]
type = ChangeState
trigger1 = pos y > -vel y
value = 1406

Code:
;---------------------------------------------------------------------------
;ROLL JUMP LAND (tous)
[StateDef 1406]
type = S
physics = N;S
moveType = I
anim = 47
ctrl = 0
velSet = 0,0
poweradd= 0
sprPriority = 1

;ajout - réactiver le player push
[State 181, player push]
Type = PlayerPush
trigger1 = 1
Value = 1

[State 1406, PosSet]
type = PosSet
trigger1 = 1
y = 0

[State 1406, CtrlSet]
type = CtrlSet
trigger1 = Time = 1
value = 1

[State 1406, Landing Sound]
type = PlaySnd
trigger1 = !Time
value = 52,0

[State 1406, Landing Dust Explod]
type = Explod
trigger1 = !Time
anim = 8102
sprPriority = -3
posType = P1
scale = 0.5,0.5
pauseMoveTime = -1
superMoveTime = -1
ownPal = 1

[State 1406, ChangeAnim to Turning]
type = ChangeAnim
trigger1 = ctrl && P2Dist x < 0
trigger1 = Anim != 5
value = 5

[State 1406, Turn]
type = Turn
trigger1 = Anim = 5 && AnimElem = 1

[State 1406, End]
type = ChangeState
trigger1 = !AnimTime
value = 0
ctrl = 1

After that, I will have to code the EX version.
It will be easier, because the EX version "conditions" will allow any cancel at any moment.
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: NotAGoodName on November 14, 2020, 03:20:55 pm
Ok.  This is pretty much all things you need to do from your CMD file.

-The move is possible from ground and from mid air. (it uses the same states)
No problem.  Don't define a required statetype as a trigger to perform the move.

-the states are start, the jump(itself), landing.
very good.

-you can usually cancel this jump into any jump attack and 2 air special moves
Ok.  All of those attacks need to have the appropriate triggers to know that they can work during the roll jump state.

-you can cancel jump attacks into this move
Make sure that the roll jump CMD state has triggers to say this.  If it's too convoluted (maybe you have a complicated combo system or something), just add another CMD state specifically for this situation.  No one is going to comb through your code and laugh at you for making sure that something works.

-you cannot cancel air special moves into this move
No problem. You do not need to do anything about this.

-you cannot use more than 1 jump attack once you started this move. (I would like some help with that)
Choose a variable for having performed a jump attack.  Have all of your jump attacks set the variable to 1.  Use another sctrl to set the variable to 0 when you aren't in the air.  You can do that in your CMD file, too.  Then you have your air attacks require the variable to be 0.

Code:
[State -1, variable thing]
type = varset
triggerall = StateType != A
v = 7 ;whatever number you're not currently using
value = 0

Boom.  Bob's your uncle.
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on November 14, 2020, 10:59:20 pm

Thanks, since I have no other clue, I will follow your steps.

Since, cancel the roll jump into one of the air special is always possible.
I will start with that.

It tried with this code, but the special never occur.
state "1405" is the secon state of roll jump (the actual jump part)

Special move from regular jump (WORKS perfectly)
Code:
[State -1, Aerial Raijinken];circle blade
type = ChangeState
value = 1050
triggerAll = !AILevel
;command = "QCF"
triggerAll = ifElse(Facing = 1, NumExplod(90010006), NumExplod(90010104))
;x / y / z
triggerAll = NumExplod(90000200) || NumExplod(90000205) || NumExplod(90000210) || NumExplod(90000215) || NumExplod(90000220) || NumExplod(90000225)
triggerAll = RoundState = 2 && StateType = A && pos y <= -32 && !NumProjID(131035)
trigger1 = ctrl
trigger2 = var(6)

special move from special "roll jump" (don't work)
Step by step I added more "Semicolon" to debut what makes the move never working.
I don't uncerstand what is wrong.

Code:
[State -1, Aerial Raijinken]circle blade (VERSION FROM ROLL JUMP)
type = ChangeState
value = 1050
triggerAll = !AILevel
;command = "QCF"
triggerAll = ifElse(Facing = 1, NumExplod(90010006), NumExplod(90010104))
;x / y / z
triggerAll = NumExplod(90000200) || NumExplod(90000205) || NumExplod(90000210) || NumExplod(90000215) || NumExplod(90000220) || NumExplod(90000225)
;triggerAll = RoundState = 2;;; && pos y <= -32 && !NumProjID(131035)
trigger1 = StateNo = 1405
;trigger2 = var(6)
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: NotAGoodName on November 15, 2020, 12:27:04 am
Hmm, well it's hard to tell what the original state should be with all the edits, but I'll try to reverse engineer it.

Code:
    [State -1, Aerial Raijinken];circle blade
    type = ChangeState
    value = 1050
    triggerAll = !AILevel
    triggerall = command = "QCF" ;; must have a command as a trigger
    triggerAll = ifElse(Facing = 1, NumExplod(90010006), NumExplod(90010104))
    ;x / y / z
    triggerAll = NumExplod(90000200) || NumExplod(90000205) || NumExplod(90000210) || NumExplod(90000215) || NumExplod(90000220) || NumExplod(90000225)
    triggerAll = RoundState = 2 && StateType = A && pos y <= -32 && !NumProjID(131035)
    trigger1 = ctrl
    trigger2 = var(6)
    trigger3 = stateno = 1405 ;; this makes it possible to use the move from the roll jump without ctrl=1
    trigger4 = stateno = 1400 ;; I don't know if you want this effect or not, but you programmed it correctly to work.

Also, I don't understand all of these numexplod triggers.  If none of those explods are present when you are in the roll jump, you will need a new state (or redefined triggers).

Code:
    [State -1, Aerial Raijinken];circle blade cancel from roll jump
    type = ChangeState
    value = 1050
    triggerAll = !AILevel
    triggerall = command = "QCF" ;; must have a command as a trigger
    triggerAll = RoundState = 2 && StateType = A && pos y <= -32 && !NumProjID(131035)
    trigger1 = stateno = 1405 ;; this makes it possible to use the move from the roll jump without ctrl=1
    trigger2 = stateno = 1400 ;; I don't know if you want this effect or not, but you programmed it correctly to work.

Also, since you have the pos y trigger, there is still the same requirement for jump height before the move works.
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on November 15, 2020, 11:49:40 am
The numexplods are some command detect stuff from the POTS system.
It refers to some commands and replace the command itself.


EDIT : OK, my problem was in the "title" I forgot a semicolon.

[State -1, Aerial Raijinken]circle blade (VERSION FROM ROLL JUMP)

to

[State -1, Aerial Raijinken];circle blade (VERSION FROM ROLL JUMP)
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 01, 2021, 07:14:32 pm
I'm bumping my own thread, because I started updating this move after a break.

Still with some cancel problems. (many problems I talked about in the FIRST POST)

I try to fix it one by one. But with my skills It sometimes take me 1 day to fix a little bug... ^^;

Basically, the current problem is the move cancels into itself.
I don't know why.

In CMD I have a triggerall that should avoid that but it does not work for some reason.
I can repeat the move in mid air again and again.

When the move should be possible from stand and from NORMAL jump

stand version
[State -1, Shinku Katategoma];special jump (roll jump)
type = ChangeState
value = 1400
triggerAll = !AILevel
;command = "QCB"
triggerAll = (ifElse(P2dist x < 0, Facing = -1, Facing = 1) && NumExplod(90010104)) || (ifElse(P2dist x < 0, Facing = 1, Facing = -1) && NumExplod(90010006))
;a / b / c
triggerAll = NumExplod(90000230) || NumExplod(90000235) || NumExplod(90000240) || NumExplod(90000245) || NumExplod(90000250) || NumExplod(90000255)
triggerAll = RoundState = 2 && StateType != A && !NumProjID(131035)
triggerall = StateNo != [1400, 1405]; eviter l'infini roll jump to roll jump
trigger1 = ctrl || StateNo = 40 || StateNo = 52 || (StateNo = [100,101])
trigger2 = var(6)

mid air version
[State -1, Aerial special jump];aerial special jump (roll jump)
type = ChangeState
value = 1400
triggerAll = !AILevel
;command = "QCB"
triggerAll = (ifElse(P2dist x < 0, Facing = -1, Facing = 1) && NumExplod(90010104)) || (ifElse(P2dist x < 0, Facing = 1, Facing = -1) && NumExplod(90010006))
;a / b / c
triggerAll = NumExplod(90000230) || NumExplod(90000235) || NumExplod(90000240) || NumExplod(90000245) || NumExplod(90000250) || NumExplod(90000255)
triggerAll = RoundState = 2 && StateType = A && pos y <= -32 && !NumProjID(131035)
triggerall = StateNo != [1400, 1405]; eviter l'infini roll jump to roll jump
trigger1 = ctrl
trigger2 = var(6)

can you guys tell me what is wrong ?
As a reminder 1400 special jump start
1405 the jump
1406 jump land

Thanks
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 02, 2021, 05:21:24 pm
When I put a semicolon to this line :

;trigger2 = var(6)

there is no auto cancel problem. (cancel to same state)
But there is no way to do a normal move cancel.

In the character base I use (Benimaru by Jmorphman) var 6 is meant to allow normal move canel into the actual move.


I remember why I took a break on coding this move 3 months ago ^^;
the idea is not to be accurate, but at least avoiding strange bugs like using this move in a infinite way.


Note to myself.
If there is no way to fix it. I can try cloning the state.
stand and mid air version will not use the same state.
It can avoid this kind of cancel problem (perhaps)
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: BurningSoul on March 02, 2021, 05:40:18 pm
you probably have var(6) in statedef -3 with a trigger that says triggerx(any number)=stateno = 1400
remove that trigger and it will just work fine
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 02, 2021, 05:51:22 pm
you probably have var(6) in statedef -3 with a trigger that says triggerx(any number)=stateno = 1400
remove that trigger and it will just work fine

I have that.
Code:
[State -3, Cancel Reset]
type = VarSet
trigger1 = 1
var(6) = 0
ignoreHitPause = 1

and also
Code:
;cancel vers speciaux
[State -3, Cancel Check]
type = VarSet
trigger1 = var(20) && (StateNo = [200,699])
trigger2 = var(20) && (StateNo = [1000,2999]) && (MoveContact || var(18))
trigger3 = (StateNo = [200,699]) && Time <= 2
trigger4 = StateNo = 200 && MoveContact
trigger5 = StateNo = 215 && MoveContact
trigger6 = StateNo = 225 && MoveContact && AnimElemTime(6) < 0
trigger7 = StateNo = 230 && MoveContact
trigger8 = StateNo = 255 && MoveContact && AnimElemTime(5) < 0
trigger9 = StateNo = 400 && MoveContact
trigger10 = StateNo = 410 && AnimElemTime(5) < 0
trigger11 = StateNo = 420 && MoveContact && AnimElemTime(6) < 0
trigger12 = StateNo = 430 && MoveContact
trigger13 = StateNo = 440 && MoveContact && AnimElemTime(6) < 0

trigger14 = StateNo = 600 && MoveContact
trigger15 = StateNo = 610 && MoveContact
trigger16 = StateNo = 620 && MoveContact
trigger17 = StateNo = 630 && MoveContact
trigger18 = StateNo = 640 && MoveContact
trigger19 = StateNo = 650 && MoveContact

trigger20 = StateNo = 246 && MoveContact && AnimElemTime(4) < 0;;;;après le target;;;;après le target knee-low-Kick

;;;;;trigger8 = (StateNo = [248,249]) && MoveContact && AnimElemTime(7) < 0

var(6) = 1
ignoreHitPause = 1

No other mention of var(6) in -3
But I'm not sure the problem is there.

Should I post again the code of "special jump" ?
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: BurningSoul on March 02, 2021, 07:04:29 pm
triggerall = PrevStateNo != [1400, 1405] try this instead in  cmd code maybe that will work
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 02, 2021, 07:56:20 pm
triggerall = PrevStateNo != [1400, 1405] try this instead in  cmd code maybe that will work

Good deduction buddy!
That fixed the self cancel problem!
Thanks!

Now, my next step would be to find a way to fix a small cancel into attack bug.
I will explain.

The command is QCB + K
It can be done standing or in mid air (using the same states)

In from stand version, no problem.
But for the mid air version, if I hold slightly to long Kick button in end of QCB + K, Kotaro will cancel into the jumping kick corresponding to the kick button.

The CMD part of jump attack have a specific line for cancel from "special jump"
exemple.
[State -1, Jumping Heavy Kick]
type = ChangeState
value = 650
triggerAll = !AILevel
;command = "c"
triggerAll = NumExplod(90000250) || command = "c"
triggerAll = StateType = A
trigger1 = ctrl || StateNo = 1405 && time > 2;possible depuis roll jump
trigger2 = var(4)

It might be the problem.
But I don't know how to edit it.
Any idea?

--------------------------------------------EDIT
To avoid a double post, I will just edit this one.

OK, I find out that the problem can be due to the following part in the end of starting state (before KOTARO leave the ground)
1405 is the state where she actually jumps.

[State 40, 6]
type = ChangeState
trigger1 = animtime=0||statetype=A
value = 1405

It's meant to cancel into 1405. either if.
-she do it from stand, it changes to 1405 at the end of the "ready pose"
-she do it from mid air, mugen will skip the "ready pose" and go to  1405

So, I edited it to
[State 40, 6]
type = ChangeState
trigger1 = animtime=0||statetype=A && time > 0
value = 1405

The bug does not happen now. (she will not auto cancel to a jump attack)

But now, she plays the "ready" stand animation for one tick.
Do you guys think, I did the right edit, or should I change to something else ?
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Odb718 on March 04, 2021, 09:26:50 pm
You should just make 2 changestates in the CMD. One that is for Air and one that's for ground.

I read through your post. I feel like an addition to Var(6) would work best. If air attacks check to see if var(6)=0 to activate, once you do the air attack and it sets the variable to 1, the 2nd air attack wouldn't be allowed to work.

If you use VarAdd, you could check to see if var(6) >= 100 to work. This would allow each attack to add +1 to it. You'd be able to do 100 attacks in the air without a problem. BUT you would use varadd to add 100 to var(6) when you preform the ROLL JUMP. This would instantly bring it up to 100. If you had done a basic attack, it would be 1+100, 101. So in the CMD the basic attack would see 101 and not work. If you had not used a basic attack and did the ROLL JUMP, the value would be 100 and it would work normal.
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 04, 2021, 09:48:44 pm
You should just make 2 changestates in the CMD. One that is for Air and one that's for ground.

I read through your post. I feel like an addition to Var(6) would work best. If air attacks check to see if var(6)=0 to activate, once you do the air attack and it sets the variable to 1, the 2nd air attack wouldn't be allowed to work.

If you use VarAdd, you could check to see if var(6) >= 100 to work. This would allow each attack to add +1 to it. You'd be able to do 100 attacks in the air without a problem. BUT you would use varadd to add 100 to var(6) when you preform the ROLL JUMP. This would instantly bring it up to 100. If you had done a basic attack, it would be 1+100, 101. So in the CMD the basic attack would see 101 and not work. If you had not used a basic attack and did the ROLL JUMP, the value would be 100 and it would work normal.

Thanks for your help.
Right now, I avoided the problem with a changeanim depending on the version of move (from ground or mid air)
So you don't have the stand/ready pose in mid air for 1 frame.

You helped me understand something really useful.
I will need it to work with juggle/cancel limitation.

My next problem is about possible cancel limitation... still about var(6) I think.

I'll talk about 2 situations :

1 = NORMAL jump,
then any jump attack HITS,
then cancel into ROLL jump. (works)

2 = ROLL jump from ground,
then any jump attack HITS,
then ROLL jump cancel (not possible for some reason)

What should I do to allow the 2nd roll jump in 2nd situation?
Also, I would like to have the limit of only one jump attack in any situation to avoid cheap/infinite combo.
Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Odb718 on March 13, 2021, 07:22:19 pm
1 = NORMAL jump,
then any jump attack HITS,
then cancel into ROLL jump. (works)

2 = ROLL jump from ground,
then any jump attack HITS,
then ROLL jump cancel (not possible for some reason)

What should I do to allow the 2nd roll jump in 2nd situation?
Also, I would like to have the limit of only one jump attack in any situation to avoid cheap/infinite combo.
The two different 3rd sentences are throwing me off.  The way I understand it is you want to do the roll jump 1 time in the air if you either regular jump or roll jump? If that's the case you would just use a varadd inside the normal jump, and you'd increase the varadd in the air roll jump. You'd have to adjust the trigger in your cmd to reflect those updates.
OR
You could take away the varadd on a ground roll jump. Just have it add 100 in the air. Then it wouldn't allow it a 2nd time. But if you're on the ground and roll jump, the value would still be < 100.

Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Momotaro on March 13, 2021, 08:40:55 pm

Thanks for taking the time to reply

I'm sorry, my english is really bad to explain technical stuffs or descibe advanced things.
The problem is a bit different now.

I will update the sittuation with something I just asked JMorphman about. (evn if I don't want to abuse of his kindness and free time)

Basically the problem seems to be in CMD. Il call thi problem "1"

just a reminder.
1400 is starter of Roll Jump
1405 is the actual air part of the jump.
1406 the landing state

When the move is done in air, it uses exactly the same states but with slightly different velocity etc

The problem is some impossible cancel (B in the picture)
A : I can do : Jump-> air attack (HIT)-> roll jump (OK!)
B : I cannot do : roll jump-> air attack (HIT)-> roll jump again. (Not possible)
PICTURE :
Spoiler, click to toggle visibilty

The actual element causing problem is this part. for mid air CMD version of roll jump.

[State -1, Aerial special jump];aerial special jump (roll jump)
type = ChangeState
value = 1400
triggerAll = !AILevel
;command = "QCB"
triggerAll = (ifElse(P2dist x < 0, Facing = -1, Facing = 1) && NumExplod(90010104)) || (ifElse(P2dist x < 0, Facing = 1, Facing = -1) && NumExplod(90010006))
;a / b / c
triggerAll = NumExplod(90000230) || NumExplod(90000235) || NumExplod(90000240) || NumExplod(90000245) || NumExplod(90000250) || NumExplod(90000255)
triggerAll = RoundState = 2 && StateType = A && pos y <= -32 && !NumProjID(131035)
triggerall = PrevStateNo != [1400, 1405]; eviter l'infini roll jump to roll jump
trigger1 = ctrl
trigger2 = var(6)


When I use "stateno" instead of "PrevStateNo", or simply delete the line, the problem "1" is not a problem anymore.
I can finally cancel the move.

BUT, this part : triggerall = PrevStateNo != [1400, 1405]; eviter l'infini roll jump to roll jump
was actually a way to fix the older problem in this thread. let's call it problem "0"

The problem was, in mid air you can roll jump any freaking tick you want, like doing it 10 or 20 times in mid air. (infinite cancels with same move)
It was definitely a big problem.

But fixing problem "0" created problem "1"

If there is another way to fix problem "0" without removing possibility of cancels I need for "1", I would like to know.
Any help is welcome.

Title: Re: Follow up triggers to avoid cheap cancels move
Post by: Odb718 on March 14, 2021, 04:51:15 am
I think
trigger2 = var(6)
might be the issue. When I mentioned using var(6) in the cmd, it should be used as a triggerall. And you want it to check to make sure the roll jump's only been done in the air 1 time. With those two things, the
triggerall = PrevStateNo != [1400, 1405]; eviter l'infini roll jump to roll jump
would not be needed.

Are you setting the var(6) in the roll jump?

You want
Triggerall = var(6) <= 99
in your CMD.
And put a VarAdd in the 1400 or 1405 to add 100 to var(6) in the same manner that you check to see if it's in the air. The same Triggers you use to adjust the velocity/anim should be the ones you want for the varadd.