YesNoOk
avatar

Coding Chain Combos (Read 381 times)

Started by First Lt. Ding, November 06, 2014, 10:43:19 pm
Share this topic:
Coding Chain Combos
#1  November 06, 2014, 10:43:19 pm
  • ****
  • The 666th Inning
    • USA
Well, I'm working on something (updating a friend's character actually) and he's almost done (other than implementation of a Lvl.2 super and touching up on frame data and such) and also one that I've been having trouble finding the answer to.
Chain combos.
Something like normal move into normal move into special move into super move. I've been looking but to no avail, so I'm just gonna leave this here.
Last Edit: November 07, 2014, 09:57:46 pm by First Lt. Ding
Re: Coding Chain Combos
#2  November 06, 2014, 10:50:41 pm
  • **
  • May the power protect you.
    • USA
    • zordonthe1stranger@gmail.com
Trigger=stateno=200&&movecontact

You would put that in the command of your attack your trying to chain INTO.

Say you want to chain state 200 into 210,  you would put that trigger in 210.

So it looks kinda like this
[State-1, Mp]
Type=changestate
Value=210
Triggerall=command="y"
Triggerall=statetype!=A
Trigger1=ctrl
Trigger2=stateno=200&&movecontact <----here is your chain
Re: Coding Chain Combos
#3  November 07, 2014, 01:07:20 am
  • **
Go ahead and use my code, it´s very combo friendly

;-----------------------------------------------------------------------
;4 buttons chars
;   Standing
;   200      210   
;   220      230
;
;   Crouching
;   400      410   
;   420      430
;
;   Air
;   600      610   
;   620      630
;-----------------------------------------------------------------------
; Taunt
[State -1, Taunt]
type = ChangeState
value = 195
triggerall = command = "s"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) || (stateno = [400,430]) && movecontact
;------------------------------------------------------------------------
; Standing Light Punch
[State -1, Standing Light Punch]
type = ChangeState
value = 200
triggerall = command = "x" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,220]) && (stateno != 210) && movecontact
trigger3 = (stateno = [400,420]) && (stateno != 410) && movecontact
;------------------------------------------------------------------------
; Standing Heavy Punch
[State -1, Standing Heavy Punch]
type = ChangeState
value = 210
triggerall = command = "y" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != 210) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != 420) && movecontact
;------------------------------------------------------------------------
; Standing Light Kick
[State -1, Standing Light Kick]
type = ChangeState
value = 230
triggerall = command = "a" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != [410,420]) && movecontact
;------------------------------------------------------------------------
; Standing Heavy Kick
[State -1, Standing Heavy Kick]
type = ChangeState
value = 240
triggerall = command = "b" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != 220) && movecontact
trigger3 = (stateno = [400,440]) && (stateno != 420) && movecontact
;------------------------------------------------------------------
;Crouching Light Punch
[State -1, Crouching Light Punch]
value = 400
triggerall = command = "x" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [200,230]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != [410,420]) && movecontact
;------------------------------------------------------------------------
; Crouching Heavy Punch
[State -1, Crouching Heavy Punch]
type = ChangeState
value = 410
triggerall = command = "y" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [200,240]) && (stateno != 220) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != 420) && movecontact
;------------------------------------------------------------------
; Crouching Light Kick
[State -1, Crouching Light Kick]
type = ChangeState
value = 430
triggerall = command = "a" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = movecontact && (stateno = 200 || stateno = 230)
trigger3 = movecontact && (stateno = 400 || stateno = 430)
;--------------------------------------------------------------
; Crouching Heavy Kick
[State -1, Crouching Heavy Kick]
type = ChangeState
value = 440
triggerall = command = "b" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = movecontact && (stateno = [200,210])
trigger3 = movecontact && (stateno = [230,240])
trigger4 = movecontact && (stateno = [400,410])
trigger5 = movecontact && (stateno = 430)
;----------------------------------------------------------------
; Jump Light Punch
[State -1, Jump Light Punch]
type = ChangeState
value = 600
triggerall = command = "x" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------
; Jump Heavy Punch
[State -1, Jump Heavy Punch]
type = ChangeState
value = 610
triggerall = command = "y" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;---------------------------------------------------------------------
; Jump Light Kick
[State -1, Jump Light Kick]
type = ChangeState
value = 630
triggerall = command = "a" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------
; Jump Heavy Kick
[State -1, Jump Heavy Kick]
type = ChangeState
value = 640
triggerall = command = "b" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------

Six Buttons Style
;----------------------------------------------------------
;6 buttons chars
;   Standing
;   200      210      220
;   230      240      250         
;
;   Crouching
;   400      410      420
;   430      440      450
;
;    Air
;   600      610      620
;   630      640      650
;----------------------------------------------------------
; Taunt
[State -1, Taunt]
type = ChangeState
value = 195
triggerall = command = "s"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,250]) || (stateno = [400,450]) && movecontact
;------------------------------------------------------------------------
; Standing Light Punch
[State -1, Standing Light Punch]
type = ChangeState
value = 200
triggerall = command = "x" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != [410,420]) && movecontact
;------------------------------------------------------------------------
; Standing Medium Punch
[State -1, Standing Medium Punch]
type = ChangeState
value = 210
triggerall = command = "y" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,240]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,440]) && (stateno != 420) && movecontact
;------------------------------------------------------------------------
; Standing Strong Punch
[State -1, Standing Strong Punch]
type = ChangeState
value = 220
triggerall = command = "z" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [210,250]) && (stateno != [220,230]) && movecontact
trigger3 = (stateno = [410,440]) && (stateno != 430) && movecontact
;------------------------------------------------------------------------
; Standing Light Kick
[State -1, Standing Light Kick]
type = ChangeState
value = 230
triggerall = command = "a" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != [410,420]) && movecontact
;------------------------------------------------------------------------
; Standing Medium Kick
[State -1, Standing Medium Kick]
type = ChangeState
value = 240
triggerall = command = "b" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [200,230]) && (stateno != 220) && movecontact
trigger3 = (stateno = [400,440]) && (stateno != 420) && movecontact
;------------------------------------------------------------------
; Standing Heavy Kick
[State -1, Standing Heavy Kick]
value = 250
triggerall = command = "c" && command != "holddown"
trigger1 = statetype != A && ctrl
trigger2 = (stateno = [210,240]) && (stateno != 230) && movecontact
trigger3 = (stateno = [410,440]) && (stateno != 430) && movecontact
;------------------------------------------------------------------
;Crouching Light Punch
[State -1, Crouching Light Punch]
value = 400
triggerall = command = "x" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [200,230]) && (stateno != [210,220]) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != [410,420]) && movecontact
;------------------------------------------------------------------------
; Crouching Medium Punch
[State -1, Crouching Medium Punch]
type = ChangeState
value = 410
triggerall = command = "y" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [200,240]) && (stateno != 220) && movecontact
trigger3 = (stateno = [400,430]) && (stateno != 420) && movecontact
;------------------------------------------------------------------
; Crouching Strong Punch
[State -1, Crouching Strong Punch]
type = ChangeState
value = 420
triggerall = command = "z" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [210,240]) && (stateno != 230) && movecontact
trigger3 = (stateno = [410,440]) && (stateno != [420,430]) && movecontact
;------------------------------------------------------------------------
; Crouching Light Kick
[State -1, Crouching Light Kick]
type = ChangeState
value = 430
triggerall = command = "a" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = movecontact && (stateno = 200 || stateno = 230)
trigger3 = movecontact && (stateno = 400 || stateno = 430)
;--------------------------------------------------------------
; Crouching Medium Kick
[State -1, Crouching Medium Kick]
type = ChangeState
value = 440
triggerall = command = "b" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = movecontact && (stateno = [200,210])
trigger3 = movecontact && (stateno = [230,240])
trigger4 = movecontact && (stateno = [400,410])
trigger5 = movecontact && (stateno = 430)
;----------------------------------------------------------------
; Crouching Strong Kick
[State -1, Crouching Strong Kick]
type = ChangeState
value = 450
triggerall = command = "c" && command = "holddown"
trigger1 = statetype = C && ctrl
trigger2 = (stateno = [210,240]) && (stateno !=230) &&  movecontact
trigger3 = movecontact && (stateno = [240,250])
trigger4 = movecontact && (stateno = [410,420])
trigger5 = movecontact && (stateno = 440)
;------------------------------------------------------------------
; Jump Light Punch
[State -1, Jump Light Punch]
type = ChangeState
value = 600
triggerall = command = "x" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------
; Jump Medium Punch
[State -1, Jump Medium Punch]
type = ChangeState
value = 610
triggerall = command = "y" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;---------------------------------------------------------------------
; Jump Strong Punch
[State -1, Jump Strong Punch]
type = ChangeState
value = 620
triggerall = command = "z" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 610 || stateno = 640)
;------------------------------------------------------------------
; Jump Light Kick
[State -1, Jump Light Kick]
type = ChangeState
value = 630
triggerall = command = "a" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------
; Jump Medium Kick
[State -1, Jump Medium Kick]
type = ChangeState
value = 640
triggerall = command = "b" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 600 || stateno = 630)
;-----------------------------------------------------------------
; Jump Strong Kick
[State -1, Jump Strong Kick]
type = ChangeState
value = 650
triggerall = command = "c" && statetype = A
trigger1 = ctrl
trigger2 = movecontact && (stateno = 610 || stateno = 640)
;-----------------------------------------------------------------

Any feedback is welcome... hope you find them useful

\\\" It`s so easy to rewrite history when the few that know the truth are made unable to speak for themselves\\\"
Alexander, the last scenario...
Re: Coding Chain Combos
#4  November 07, 2014, 02:31:00 am
  • ****
  • The 666th Inning
    • USA
I should have mentioned I'm making a 4-button character too.
Re: Coding Chain Combos
#5  November 07, 2014, 03:47:11 am
  • avatar
  • *
    • Anguilla
    • beeschen.belson@yandex.com
I should have mentioned I'm making a 4-button character too.
Wow. Wow.


Seriously. Literally, this is all you need. 4-button or 6 button does not matter. It depends on the amount of states you're using.
Trigger=stateno=200&&movecontact
You would put that in the command of your attack your trying to chain INTO.
Say you want to chain state 200 into 210,  you would put that trigger in 210.

So it looks kinda like this
[State-1, Mp]
Type=changestate
Value=210
Triggerall=command="y"
Triggerall=statetype!=A
Trigger1=ctrl
Trigger2=stateno=200&&movecontact <----here is your chain
Last Edit: November 07, 2014, 03:52:14 am by GentleOne
Re: Coding Chain Combos
#6  November 07, 2014, 04:11:29 am
  • **
  • Prince of Latis
    • Canada
    • Skype - whiplash-1
Re: Coding Chain Combos
#7  November 07, 2014, 06:50:28 pm
  • avatar
  • *
    • Anguilla
    • beeschen.belson@yandex.com
Woah. Dude, there is no need to overcomplicate literally the 3rd easiest trigger in Mugen


Literally, the explanation comes down to this.
"movecontact" means as soon as you touch the opponent when you're in a specific state number (stateno), you can use the new state number you set as your value. So if your current stateno is 200, which is usually your light punch, and you want to chain into state 230, which is usually your light kick, after you press command "a", all you 'basically' have to do is:

type = changestate
trigger1 = command = "a"
trigger1 = stateno = 200&&movecontact
value = 230



At Default:
movecontact literally means "this move has made contact"
!movecontact is the same as saying movecontact = 0    which is a miss or else has not reached the attacking frame
Last Edit: November 07, 2014, 07:09:46 pm by GentleOne
Re: Coding Chain Combos
#8  November 07, 2014, 06:56:51 pm
  • ****
  • [MUFFLED ROCK MUSIC PLAYING IN THE DISTANCE]
    • Chile
    • koakoa@jabber.org
movecontact is the same as saying movecontact = 1    which is literally "movecontact"

Not quite, movecontact is the ammount of ticks that have passed after the move has been blocked or has hit, beginning from 1 just as the attack has made contact, this number freezes during hitpause, writing "movecontact = 1" means you can only cancel from the FIRST tick the attack has been blocked or has hit or only during hitpause, which would make the char feel stiff. Which is why we use plain "movecontact" as a trigger to detect move cancels.
Re: Coding Chain Combos
#9  November 07, 2014, 07:08:36 pm
  • avatar
  • *
    • Anguilla
    • beeschen.belson@yandex.com
Not quite, movecontact is the ammount of ticks that have passed after the move has been blocked or has hit, this number freezes during hitpause, writing "movecontact = 1" means you can only cancel from the FIRST tick the attack has been blocked or has hit or only during hitpause, which would make the char feel stiff. Which is why we use plain "movecontact" as a trigger to detect move cancels.
Wow. Holy Crap. For years I've been looking at "= 1" in movecontact as a true/false statement. Thanks for the correction.

Will update my post and repost so onlookers do not go through that overcomplicated tutorial to do literally the most simple thing. Thanks Dan.



Edit: This Makes it as simple as it actually is:
Literally, chaining comes down to this.

"movecontact" means as soon as you touch the opponent when you're in a specific state number (stateno), you can use the new state number you set as your value. So if your current stateno is 200, which is usually your light punch, and you want to chain into state 230, which is usually your light kick, after you press command "a", all you 'basically' have to do is:

[state -1]
type = changestate
trigger1 = command = "a"
trigger1 = stateno = 200&&movecontact
value = 230

At Default:
movecontact literally means "this move has made contact"
!movecontact is the same as saying movecontact = 0    which is a miss or else has not reached the attacking frame
Last Edit: November 07, 2014, 07:13:56 pm by GentleOne
Re: Coding Chain Combos
#10  November 07, 2014, 09:57:25 pm
  • ****
  • The 666th Inning
    • USA
Well that works, and also the fact that I've been idiotic enough to put the ChangeState in the attack I wanted to chain into.
Thanks everyone.
Re: Coding Chain Combos
#11  November 09, 2014, 06:13:46 am
  • ***
    • USA
Dont forget to solve your topics. I spent a few minutes reading to catch up to the end of the post. (Im at work)