Don't forget to read the rules of the forum. No current release restrictions. | Help Search Members Calendar

Logged in as: The Dreamslayer ( Log Out ) | My Controls · 0 New Messages · View New Posts · My Assistant

Mugen DEV Forum -> Development and Help Forums -> Development Discussion

Complete Vism
Track this topic | Email this topic | Print this topic

Messatsu | Posted: Jul 3 2004, 10:03 PM
banneded Group: Members Posts: 310 Member No.: 4158 Joined: 10-October 03
Recording helper setup

CODE
;___________________________________________________________________ [Statedef 500]; // custom combo function anim = 11111 [State Pos X] type = helper
trigger1 = !time
id = 501
stateno = 501
[State Pos Y]
type = helper
trigger1 = !time
id = 502
stateno = 502
[State Anim]
type = helper
trigger1 = !time
id = 503
stateno = 503
[State Stateno]
type = helper
trigger1 = !time
id = 504
stateno = 504
[State Facing]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = fvar((floor(var(0) / 2))) := root, facing
[State Clone]
type = varset
trigger1 = !time
var(1) = 1
[State Next]
type = varset
trigger1 = !time
var(2) = 2
[State Vism]
type = helper
trigger1 = numhelper(666) < 1
trigger1 = time > root, var(15) - 2
trigger1 = helper(504), var((var(2))) != [0, 110)
trigger1 = helper(504), var((var(1))) != helper(504), var((var(2)))
postype = left
pos = helper(500), pos x - helper(501), var((var(2))) + 160, helper(500), pos y - helper(502), var((var(2)))
id = 666
facing = floor(fvar((floor(var(2) / 2))))
stateno = helper(504), var((var(2)))
ignorehitpause = 1
[State Modify]
type = varadd
trigger1 = !(root, hitpausetime)
var(0) = 1
[State Modify]
type = varadd
trigger1 = !(root, hitpausetime)
var(1) = 1
[State Modify]
type = varadd
trigger1 = !(root, hitpausetime)
var(2) = 1
[State Train]
type = varset
trigger1 = var(0) = root, var(15)
var(0) = 0
[State Train]
type = varset
trigger1 = var(1) = root, var(15)
var(1) = 0
[State Train]
type = varset
trigger1 = var(2) = root, var(15)
var(2) = 0
[State X_X]
type = destroyself
trigger1 = power = 0 || root, movetype = H
ignorehitpause = 1
;___________________________________________________________________
[Statedef 501]
anim = 11111
[State 501]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = var(( helper(500), var(0) )):= floor(helper(500), pos x - root, pos x)
[State 501]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = helper(500), var(0) = [0,30)
trigger1 = fvar(( helper(500), var(0) )):= root, vel x
[State X_X]
type = destroyself
trigger1 = numhelper(500) = 0
ignorehitpause = 1
;___________________________________________________________________
[Statedef 502]
anim = 11111
[State 502]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = var(( helper(500), var(0) )):= floor(helper(500), pos y - root, pos y)
[State 502]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = helper(500), var(0) = (29,60)
trigger1 = fvar(( helper(500), var(0) - 30 )):= root, vel x
[State X_X]
type = destroyself
trigger1 = numhelper(500) = 0
ignorehitpause = 1
;___________________________________________________________________
[Statedef 503]
anim = 11111
[State 503]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = var(( helper(500), var(0) )):= root, anim
[State 503]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = helper(500), var(0) = [0,30)
trigger1 = fvar(( helper(500), var(0) )):= root, vel y
[State X_X]
type = destroyself
trigger1 = numhelper(500) = 0
ignorehitpause = 1
;___________________________________________________________________
[Statedef 504]
anim = 11111
[State 504]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = var(( helper(500), var(0) )):= root, stateno
[State 504]
type = null
trigger1 = !(root, hitpausetime)
trigger1 = helper(500), var(0) = (29,60)
trigger1 = fvar(( helper(500), var(0) - 30 )):= root, vel y
[State X_X]
type = destroyself
trigger1 = numhelper(500) = 0
ignorehitpause = 1
;___________________________________________________________________

Note: untested on teh H4X0430 WinMugen.
--------------------
You might think that Elecbyte is dead, but this investigation has not been solved for years.

Messatsu | Posted: Jul 3 2004, 10:07 PM
banneded Group: Members Posts: 310 Member No.: 4158 Joined: 10-October 03
Additional notes:
STATES LISTED AS -4 NEED TO BE IN EVERY STATE THAT THE CLONE CAN POSSIBLY ENTER.
Typically, custom combos have different delays. Your initialization should reflect this by modifying root, var(15):

CODE
[State Vism] type = helper triggerall = numhelper(500) = 0 trigger1 = command = "a" trigger1 = var(15):= 12
trigger2 = command = "b"
trigger2 = var(15):= 36
trigger3 = command = "c"
trigger3 = var(15):= 60
stateno = 500
id = 500
postype = p1
pos = 0,0

;___________________________________________________________________
Disable all afterimage controllers by using a numhelper(500) = 0 triggerall except for one like this in the player's initialization state:

CODE
[State Chaser] type = afterimage trigger1 = numhelper(500) = 1 && !ishelper time = 99999999 length = var(15)
timegap = 1
framegap = floor(var(15) / 3)
palcontrast = 144, 0, 256

;___________________________________________________________________
Palfx cannot apply to helpers so you can leave the clone the same color as the player but adjust the sprpriority in the statedef shortcut somewhat like this:

CODE
[Statedef 666] ... sprpriority = ifelse(ishelper, -1, 2)

Or to apply a fake palfx that has the clone visually delayed by 1 tick:

CODE
[State -4] type = assertspecial trigger1 = ishelper flag = invisible [State -4]
type = afterimage
trigger1 = ishelper
time = 999999
length = 2
timegap = 1
framegap = 1
palcontrast = 96, 96, 256

;___________________________________________________________________
The clone cannot be hit by anything:

CODE
[State -4] type = nothitby trigger1 = ishelper time = 2 value = AA, AP, AT

;___________________________________________________________________
This allows for the clone to combo:

CODE
[State -4] type = changestate trigger1 = ishelper trigger1 = helper(666), stateno != helper(504), var(( helper(500), var(2) )) trigger1 = helper(504), var(( helper(500), var(2) )) != [0,110)
value = helper(504), var(( helper(500), var(2) ))

There will result in a slight error from the helper missing an attack where the player made contact resulting in a completely different position for the clone. To fix this and use a changestate, you need to apply constant position adjustment:

CODE
[State -4] type = posset trigger1 = ishelper postype = p1 x = helper(500), pos x - helper(501), var((var(1))) + 160
y = helper(500), pos y - helper(502), var((var(1)))

Alternatively, you can use a destroyself using similar restrictions to the changestate and allow the respawning in the correct position to be handled by the helper, 500. I have found this fairly unreliable so far, but would be more efficient.
;___________________________________________________________________
Aerial states need to have their velocity adjusted. Otherwise they start with nothing and sink to the ground.

CODE
[State -4] type = velset trigger1 = ishelper && !time trigger1 = helper(500), var(2) = [0,30) X = helper(501), fvar( helper(500), var(2) )
Y = helper(503), fvar( helper(500), var(2) )
[State -4]
type = velset
trigger1 = ishelper && time = 0
trigger1 = helper(500), var(2) = (29,60)
X = helper(502), fvar( helper(500), var(2) - 30 )
Y = helper(504), fvar( helper(500), var(2) - 30 )

;___________________________________________________________________
When two states are followed by each other, the second state won't be entered by the clone. To avoid this, make the states wheel, if in state 200, then go to the exact same state 201 (only difference in 200 and 201 is stateno) given conditions to go into a state.
;___________________________________________________________________
States 0 and 11 need destroyselfs set.
This post has been edited by Messatsu on Jul 3 2004, 11:14 PM
--------------------
You might think that Elecbyte is dead, but this investigation has not been solved for years.

Messatsu | Posted: Jul 3 2004, 10:08 PM
banneded Group: Members Posts: 310 Member No.: 4158 Joined: 10-October 03
Necessary properties of Vism that I won't cover in this tutorial:
-The player cannot block during this time period
-Hit velocity doubles for fairness.
-Normals chain MVC style.
-Specials can limitlessly cancel into specials except into the same attack.
-Charging attacks no longer need to be charged.
-Projectile of the helper doesn't affect the spawning of the player's projectiles. For example, Shin Gouki in SFZ3U can throw four aerial hadokens on the screen.
-More than half of a full power bar is necessary to initialize.
-Power is drained every tick.
-You cannot perform a super attack.
--------------------
You might think that Elecbyte is dead, but this investigation has not been solved for years.

Messatsu | Posted: Jul 3 2004, 10:16 PM
banneded Group: Members Posts: 310 Member No.: 4158 Joined: 10-October 03
Known issues:
-Y position is off at times. Mostly following a jumping attack.
-The clone has a one tick lag if you want them colored correctly.
-Sprpriority of the clone is shifty during hits or other situations.
--------------------
You might think that Elecbyte is dead, but this investigation has not been solved for years.

« Next Oldest | Development Discussion | Next Newest »

Close Topic Options
Track this topic
Receive email notification when a reply has been made to this topic and you are not active on the board.
Subscribe to this forum
Receive email notification when a new topic is posted in this forum and you are not active on the board.
Download / Print this Topic
Download this topic in different formats or view a printer friendly version.
- M.U.G.E.N Development Forum - Contact an admin - ELECBYTE - Shin Mugen -
Powered by Invision Power Board(U) v1.2 © 2003 IPS, Inc.