Jump to content
  • 0

Any way to do a proper "move reverse time machine" in MUGEN?


Werewood

Question

Any way to do a proper "move reverse time machine" in MUGEN?
Don't be mistaken with "move reversal".

This of my "move reverse time machine" idea might be the first one in all fighting games/engines history (correct me if I am wrong).

What I mean by "move reverse time machine" is, a feature that when during a MUGEN character's move, upon pressing some button or something like that, his/her/its move reverses the animation and/or any velocity/position changes. Simply put, I want to do something like a simple time machine for a MUGEN character's move.

Let me explain by the KFM Light Kung Fu Palm special move.

This is when the KFM Light Kung Fu Palm is performed normally:
AdIWMvS.png

The result is not hard to be predicted (KFM gets hit by Haohmaru's standing strong slash):
cIRhjsk.png

First of all, I add an extra Action 1001 to kfm.air which is a reversed same animation of Action 1000:

; Light Kung Fu Palm
[begin Action 1000]
Clsn2: 2
Clsn2[0] = -14, 0, 15, -80
Clsn2[1] = -6, -94, 7, -80
200,0, -5,0, 1
Clsn2: 3
Clsn2[0] = 32, -39, -25, 0
Clsn2[1] = 16, -39, -10, -73
Clsn2[2] = 2, -86, 13, -72
1000,0, 0,0, 2
Clsn2Default: 3
Clsn2[0] = 31, 0, -34, -33
Clsn2[1] = -8, -67, 20, -33
Clsn2[2] = 5, -81, 18, -67
1000,1, 0,0, 2
1000,2, 0,0, 2
1000,3, 0,0, 1
Clsn1: 1
Clsn1[0] = 68, -66, 9, -44
Clsn2: 4
Clsn2[0] = 29, 0, -37, -32
Clsn2[1] = 21, -32, -8, -65
Clsn2[2] = 5, -74, 17, -61
Clsn2[3] = 21, -66, 68, -46
1000,4, 0,0, 3
Clsn2: 4
Clsn2[0] = 29, 0, -37, -32
Clsn2[1] = 21, -32, -8, -65
Clsn2[2] = 5, -74, 17, -61
Clsn2[3] = 21, -64, 68, -46
1000,5, 0,0, 7
1000,7, 0,0, 4
1000,2, 0,0, 3
1000,1, 0,0, 3
Clsn2: 3
Clsn2[0] = 32, -39, -25, 0
Clsn2[1] = 16, -39, -10, -73
Clsn2[2] = 2, -86, 13, -72
1000,0, 0,0, 3
Clsn2: 2
Clsn2[0] = -14, 0, 15, -80
Clsn2[1] = -6, -94, 7, -80
200,0, -5,0, 2

; Reversed Light Kung Fu Palm
[begin Action 1001]
Clsn2: 2
Clsn2[0] = -14, 0, 15, -80
Clsn2[1] = -6, -94, 7, -80
200,0, -5,0, 2
Clsn2: 3
Clsn2[0] = 32, -39, -25, 0
Clsn2[1] = 16, -39, -10, -73
Clsn2[2] = 2, -86, 13, -72
1000,0, 0,0, 3
Clsn2: 3
Clsn2[0] = -34, -39, 32, 0
Clsn2[1] = -5, -73, 21, -39
Clsn2[2] = 7, -85, 18, -71
1000,1, 0,0, 3
Clsn2: 3
Clsn2[0] = -34, -39, 32, 0
Clsn2[1] = -5, -73, 21, -39
Clsn2[2] = 7, -85, 18, -71
1000,2, 0,0, 3
Clsn2: 4
Clsn2[0] = -34, -39, 32, 0
Clsn2[1] = -5, -73, 21, -39
Clsn2[2] = 7, -85, 18, -71
Clsn2[3] = 18, -63, 54, -46
1000,7, 0,0, 4
Clsn2: 4
Clsn2[0] = 29, 0, -37, -32
Clsn2[1] = 21, -32, -8, -65
Clsn2[2] = 5, -74, 17, -61
Clsn2[3] = 21, -64, 68, -46
1000,5, 0,0, 7
Clsn1: 1
Clsn1[0] = 68, -66, 9, -44
Clsn2: 4
Clsn2[0] = 29, 0, -37, -32
Clsn2[1] = 21, -32, -8, -65
Clsn2[2] = 5, -74, 17, -61
Clsn2[3] = 21, -66, 68, -46
1000,4, 0,0, 3
Clsn2: 4
Clsn2[0] = 29, 0, -37, -32
Clsn2[1] = 21, -32, -8, -65
Clsn2[2] = 5, -74, 17, -61
Clsn2[3] = 16, -66, 63, -46
1000,3, 0,0, 1
Clsn2: 3
Clsn2[0] = 6, -86, 18, -65
Clsn2[1] = -6, -73, 18, -41
Clsn2[2] = -31, -46, 34, 0
1000,2, 0,0, 2
Clsn2: 3
Clsn2[0] = 6, -86, 18, -65
Clsn2[1] = -6, -73, 18, -41
Clsn2[2] = -31, -46, 34, 0
1000,1, 0,0, 2
Clsn2: 3
Clsn2[0] = 32, -39, -25, 0
Clsn2[1] = 16, -39, -10, -73
Clsn2[2] = 2, -86, 13, -72
1000,0, 0,0, 2
Clsn2: 2
Clsn2[0] = -14, 0, 15, -80
Clsn2[1] = -6, -94, 7, -80
200,0, -5,0, 1


Now I try to edit the KFM Light Kung Fu Palm Statedef 1000 to let KFM be able to reverse his special move:
(The bolded MUGEN code is the one I edit and add):

[statedef 1000]
type = S
movetype= A
physics = S
juggle = 4
poweradd= 55
velset = 0,0
anim = 1000
ctrl = 0
sprpriority = 2

[state 1000, 1]
type = PlaySnd
triggerall = Anim = 1000
trigger1 = Time = 8
value = 0, 3

[state 1000, 2]
type = PosAdd
triggerall = Anim = 1000
trigger1 = AnimElem = 2
x = 20

[state 1000, 3]
type = PosAdd
triggerall = Anim = 1000
trigger1 = AnimElem = 3
trigger2 = AnimElem = 13
x = 10

[state 1000, 4]
type = PosAdd
triggerall = Anim = 1000
trigger1 = AnimElem = 5
x = 5

[state 1000, 5] ;Opponent near
type = HitDef
trigger1 = AnimElem = 5
trigger1 = p2bodydist X < 40
attr = S, SA
animtype = Hard
damage = 90, 4
priority = 5
guardflag = MA
pausetime = 15,15
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime = 17
ground.velocity = -4,-3.5
air.velocity = -4,-3
fall = 1

[state 1000, 6] ;Opponent not near
type = HitDef
trigger1 = AnimElem = 5
trigger1 = p2bodydist X >= 40
attr = S, SA
animtype = Hard
damage = 85, 4
priority = 4
guardflag = MA
pausetime = 15,15
sparkxy = -10,-60
hitsound = 5,4
guardsound = 6,0
ground.type = Low
ground.slidetime = 12
ground.hittime = 17
ground.velocity = -7
air.velocity = -4,-2.5

[state 1000, 6]
type = PosAdd
triggerall = Anim = 1000
trigger1 = AnimElem = 9
x = -5

;;;; "move reverse time machine start" ;;;;

[state 1000, AssertSpecial]
triggerall = AnimTime < 0 && !movecontact
trigger1 = time <= -AnimTime
trigger1 = command = "c"
flag = timerfreeze
flag2 = nomusic
ignorehitpause = 1

[state 1000, SuperPause]
type = SuperPause
triggerall = AnimTime < 0 && !movecontact
trigger1 = command = "c"
time = -AnimTime
endcmdbuftime = 1
anim = -1
sound = -1
darken = 1
poweradd = 0
unhittable = 0
movetime = -AnimTime/2
pausebg = 1
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(1) >= 0 && AnimElemTime(2) < 0
trigger1 = command = "c"
value = 1001
elem = 12
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(2) >= 0 && AnimElemTime(3) < 0
trigger1 = command = "c"
value = 1001
elem = 11
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(3) >= 0 && AnimElemTime(4) < 0
trigger1 = command = "c"
value = 1001
elem = 10
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(4) >= 0 && AnimElemTime(5) < 0
trigger1 = command = "c"
value = 1001
elem = 9
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(5) >= 0 && AnimElemTime(6) < 0
trigger1 = command = "c"
value = 1001
elem = 8
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(6) >= 0 && AnimElemTime(7) < 0
trigger1 = command = "c"
value = 1001
elem = 7
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(7) >= 0 && AnimElemTime(8) < 0
trigger1 = command = "c"
value = 1001
elem = 6
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(8) >= 0 && AnimElemTime(9) < 0
trigger1 = command = "c"
value = 1001
elem = 5
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(9) >= 0 && AnimElemTime(10) < 0
trigger1 = command = "c"
value = 1001
elem = 4
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(10) >= 0 && AnimElemTime(11) < 0
trigger1 = command = "c"
value = 1001
elem = 3
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime < 0 && !movecontact
trigger1 = AnimElemTime(11) >= 0 && AnimElemTime(12) < 0
trigger1 = command = "c"
value = 1001
elem = 2
ignorehitpause = 1

[state 1000, ChangeAnim]
type = ChangeAnim
triggerall = Anim = 1000 && AnimTime <= 0 && !movecontact
trigger1 = AnimElemTime(12) >= 0 && AnimTime <= 0
trigger1 = command = "c"
value = 1001
elem = 1
ignorehitpause = 1


[state 1000, 1]
type = PlaySnd
triggerall = Anim = 1001
trigger1 = Time = 26
value = 0, 3
ignorehitpause = 1

[state 1000, 2]
type = PosAdd
triggerall = Anim = 1001
trigger1 = AnimElem = 11
x = -20
ignorehitpause = 1

[state 1000, 3]
type = PosAdd
triggerall = Anim = 1001
trigger1 = AnimElem = 3
;trigger2 = AnimElem = 13
x = -10
ignorehitpause = 1

[state 1000, 4]
type = PosAdd
triggerall = Anim = 1001
trigger1 = AnimElem = 8
x = -5
ignorehitpause = 1

[state 1000, 6]
type = PosAdd
triggerall = Anim = 1001
trigger1 = AnimElem = 4
x = 5
ignorehitpause = 1

;;;; "move reverse time machine end" ;;;;


[state 1000, 7]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

When I try to perform the edited KFM Light Kung Fu Palm and press the button "c" before its end time, the Action 1000 stops at the animation element at the time I press the button "c", then it change to the corresponding animation element of Action 1001, with a SuperPause effect:
8A32nsn.png

Then KFM is trying to reverse his Light Kung Fu Palm before he gets hit by Haohmaru's standing strong slash:
yYbBURg.png

As a result, KFM seems to be safe now, while Haohmaru is still in the middle of his standing strong slash.

In my edited KFM Light Kung Fu Palm MUGEN code, the SuperPause state controller actually is not needed. I use that in order to slow down the whole "move reverse time machine" as the motion is too fast for me to take screen shots.

Now, I want some help on this as you can see my MUGEN AIR/CNS edit method is very half-assed (hey I am The King of MUGEN Half-Ass!), is there any full-assed method to make it more effective and efficient?

I have a future MUGEN WIP in which I want to achieve this kind of "move reverse time machine" feature.....

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

this is a interesting idea, im sure it would take a long time to properly master (coding it as well as doing it)

 

but i know what your capable of, and i can't wait to test it out.

Link to comment
Share on other sites

  • 0

Boss Ryon you are back!!!!!!!!!!!  :hi:

 

How was your relaxing vacation doing?  Took some cool pictures?

 

Well,  for that "move reverse time machine" what help I want is, how to simplify the whole process by just working on the CNS MUGEN code.

i.e. only one (1) ChangeAnim rather than a bunch, shall be needed to do the animation reverse, even no need to duplicate a reversed an AIR action........now I would like to know a MUGEN Pro's hint......

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...