This is my randomizer to determine which states to go into.
[State -3, VarRandom]
type = VarRandom
triggerall = AILevel && numenemy
trigger1 = statetype != A && roundstate = 2
v = 12
range = 0,7
These are my randomizer states in .cmd
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 0
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 1
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 2
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 3
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 4
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 5
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 6
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
[State -1, Randomizer]
type = ChangeState
triggerall = AILevel && numenemy
triggerall = statetype != A && roundstate = 2
triggerall = Var(12) = 7
triggerall = p2bodydist x < 20 && random < 40
triggerall = p2bodydist y = [-25,25]
triggerall = enemynear,stateno != 5100
triggerall = enemynear,stateno != 5101
triggerall = enemynear,stateno != 5110
triggerall = enemynear,stateno != 5120
trigger1 = ctrl
value = 235
Pretty self explanatory (Though I dont even know why I have random < 40 in there lol could of been testing for something else). All my randomizers go to 235 stand close light kick to start things up. Now Var(12) = 0 to 5 are perfect and connect well and are all statetype = s so character doesnt leave the ground. My problem lies in Var(12) = 6 and 7
I'll show you my chains for Var(12) = 6 (7 is generaly the same attacks) So going in order for Var(12) = 6
[State 235, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 230
ctrl = 1
[State 230, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 200
ctrl = 1
[State 200, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 210
ctrl = 1
[State 210, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 240
ctrl = 1
[State 240, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 220
ctrl = 1
[State 220, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 400
ctrl = 1
Simple combo that goes from standing default attack stateno to crouching:
[State 400, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 410
ctrl = 1
[State 410, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 420
ctrl = 1
[State 420, ChangeState]
type = ChangeState
triggerall = AILevel
triggerall = Var(12) = 6
trigger1 = MoveHit
value = 1020
ctrl = 1
^ Thats where my problem lies. 1020 is a special move:
;---------------------------------------------------------------------------
; Kuusajin
[StateDef 1020]
type = S
movetype = A
physics = S
juggle = 13
ctrl = 0
anim = 1020
velset = 0,0
sprpriority = 2
[State 1020, VarSet]
type = VarSet
trigger1 = Time = 0
v = 32
value = 0
[State 1020, Kuusajin Input Check Variable]
type = VarSet
trigger1 = Time = 0
v = 34
value = IfElse(command = "Medium Kuusajin",2,IfElse(command = "Heavy Kuusajin",1,0))
[State 1020, StateTypeSet]
type = StateTypeSet
trigger1 = 1
statetype = A
movetype = A
physics = N
[State 1020, Width]
type = Width
trigger1 = FrontEdgeBodyDist < 100
edge = 20,20
player = 0,0
[State 1020, VelSet]
type = VelSet
trigger1 = AnimElem = 1
x = 0
[State 1020, VelSet]
type = VelSet
trigger1 = AnimElemTime(3) = 1
x = 3.5*1
y = -6.5
[State 1020, VelAdd]
type = VelAdd
trigger1 = AnimElemTime(3) > 1
y = .25
[State 1020, VelAdd]
type = VelAdd
trigger1 = AnimElemTime(11) > 0
trigger2 = AnimElemTime(15) > 0
y = .3
[State 1020, Kick One]
type = HitDef
trigger1 = AnimElem = 3
attr = S, NA
damage = IfElse(Var(34)=0,55,IfElse(Var(34)=2,60,65)),5
animtype = Hard
air.animtype = Back
fall.animtype = Back
guardflag = MA
hitflag = MAF
priority = 3, Hit
pausetime = 10, 9
sparkno = -1
guard.sparkno = -1
sparkxy = -1
hitsound = s2, 3
guardsound = s10, 0
ground.type = Low
ground.slidetime = 5
ground.hittime = 20
ground.velocity = -1, -7.5
airguard.velocity = -1.9,-.8
air.type = High
air.velocity = 2.5, -2
air.hittime = 20
fall = 1
air.fall = 1
fall.recover = 0
air.recover = 0
getpower = 50,0
givepower = 0,0
[State 1020, Kick Two]
type = HitDef
trigger1 = AnimElem = 7
attr = S, NA
damage = IfElse(Var(34)=0,55,IfElse(Var(34)=2,60,65)),5
animtype = Hard
air.animtype = Back
fall.animtype = Back
guardflag = MA
hitflag = MAF
priority = 3, Hit
pausetime = 10, 10
sparkno = -1
guard.sparkno = -1
sparkxy = -1
hitsound = s2, 3
guardsound = s10, 0
ground.type = Low
ground.slidetime = 5
ground.hittime = 12
ground.velocity = 1.5, -7.5
airguard.velocity = -1.9,-.8
air.type = High
air.velocity = -4.8, -7.4
air.hittime = 20
fall = 1
air.fall = 1
fall.recover = 0
air.recover = 0
getpower = 50,0
givepower = 0,0
yaccel = .4
[State 1020, Voice]
type = PlaySnd
trigger1 = Time = 1
value = s19,9
[State 1020, PlaySnd]
type = PlaySnd
trigger1 = AnimElemTime(2) = 0
value = S8,5
[State 1020, PlaySnd]
type = PlaySnd
trigger1 = AnimElemTime(6) = 0
value = S8,5
[State 1020, ChangeState]
type = ChangeState
trigger1 = Pos Y >= 0 && Vel Y > 0
value = 1021
And cmd for 1020:
; Kuusajin
[State -1, Kuusajin]
type = ChangeState
value = 1020
triggerall = !AILevel
triggerall = command = "Light Kuusajin"||command = "Medium Kuusajin"||command = "Heavy Kuusajin"
trigger1 = ctrl || stateno = 40
trigger1 = statetype != a
trigger2 = (stateno = 400) || (stateno = 410) ||(stateno = 420) || (stateno = 430) || (stateno = 440)
trigger2 = movecontact
The problem that Mugen is performing is that as soon as Var(12) = 6 enters the ChangeState to 400 after the 400 MoveHit into 410 the character stops. Sometimes he will continue to 410 to 420 to 1020 as told but can also stop prematurely half way anywhere from 400/410/420/1020.
What I did was tell my -3 randomizer to only play range 6,6 to test the combo and as long as it's 6,6 it plays flawlesly. If I set it to 6,7 (7 is also an air bourne move special finisher) then thats fine. Setting range 5,7 so 5 is an all out standing assault also seems to play 6 and 7 in full connection. 4,7 starts to make the character end prematurely.
I tried removing random trigger from .cmd randomizers, inserting !AILevel trigger in the Input Check Variable for the air moves. Tried playing StateTypeSet within the air move states but I cannot fully make the character finalize his 6 and 7 ground combo that goes to crouching that ends with a air type finisher.
Also, I ifelsed the pausetimes for Normal/AI values to make sure the moves from 400-420 are not links do to higher p1/p2 stun so there no inbetween times for another Var(12) = X to hit but that also didnt work.
Also, I was told that VarRandom and Var in general read lower values first so I put the 6 and 7 into 0 and 1 positions, so pretty much simply swap but same problem persisted. Played around with IntPersistIndex but nothing new.
When I did AI in old mugen using Var(59) and the same VarRandom method I could start in air to gound to crouch to air finisher similar here flawlessly every time no matter what value I set my randomizer to.