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.
;========================<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
;========================<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
;---------------------------------------------------------------------------
;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.
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.
[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.
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)
[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.
[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)
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.
[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).
[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.
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.
[State -3, Cancel Reset]
type = VarSet
trigger1 = 1
var(6) = 0
ignoreHitPause = 1
and also
;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" ?
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
(https://i.imgur.com/I0DyvyI.png)
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.