working on Scripted slams. (ground moves)

NED

Well-known member
I re-started working on scripted slams.
I try to edit Maxima's suplex in Bloodbane's "Crime Buster" mod.
I think, this give me some esy way to understand it...

As an experiment, I would like to give to maxima an X velocity during the suplex.
I would like him to go back and the enemy still binding to him during this time.

I tryed to add move -20 (just as a test) but it's completly ignored.
I don't have any explanation for it. I'm stuck... one more time.

this is the suplex code only "move -20" and "move 0" are my editing.

Code:
anim freespecial6
	offset	52 140
        quakeframe 8 1 6
        attackone 0
	delay	6
        @cmd    position 7 30 60 -1 1
	frame	data/chars/maxima/slam05.gif
	delay	20
        attack16 68 29 49 92 7 0
        @cmd    position 7 50 -5 -1 1
        @cmd    spawn01 "Break" 47 44 1
	frame	data/chars/maxima/slam06.gif
	delay	5
        attack  0
        @cmd    hurt2 40
	frame	data/chars/maxima/slam06.gif

	delay	20
	move	-20
	offset	82 115
        @cmd    position 0 20 25 -1 1
	frame	data/chars/maxima/throw001.gif
	delay	5
        @cmd    antiwall -85 25 -1
        @cmd    position 1 -16 35 -1 1
        attack4 4 14 89 37 15 1 1
        sound	data/chars/maxima/suplex.wav
	frame	data/chars/maxima/throw002.gif
        @cmd    antiwall -85 30 -1
        @cmd    position 2 -41 53 -1 1
	frame	data/chars/maxima/throw003.gif

	move	0
	delay	10
        @cmd    antiwall -85 30 -1
        @cmd    position 6 -84 2 -1 1
        attack4 -22 33 44 83 15 1 1
	frame	data/chars/maxima/throw004.gif
	delay	10
        @cmd    spawner "QFX" -73 0 0
	frame	data/chars/maxima/throw004.gif
        attack  0
	delay	5
        @cmd    depost 0
        @cmd    finish 45 2 -2 2 0 0
	frame	data/chars/maxima/throw005.gif
	delay	8
	frame	data/chars/maxima/throw006.gif
	frame	data/chars/maxima/throw007.gif
	frame	data/chars/maxima/throw008.gif

Can you explain how to give a velocity to this move? X velocity and also some Y velocity for some kind of hop-back move.

Thanks in advance.
 
I don't see anything wrong with that though from rough prediction, Maxima should only move back 60 pixels. Is this what you want?

The reason for this move is 3 frames after move -20, there's move 0 which stops him. If you want to move Maxima, you could use jumpframe instead. The result is smoother.
 
Bloodbane said:
I don't see anything wrong with that though from rough prediction, Maxima should only move back 60 pixels. Is this what you want?

Thanks, I undestand how it works.
But this have no effect at all in this situation! :(

I'll try with jumpframe function instead, this is something I'm used to use in modding.

magggas said:
As example,while i´m making a slam or throw move,i´m making first the animation done to look and move how i want and then i´m adding the script function on it and bind the enemy to the frames of the animation.

-So, a good way would be to create the frames of animation with good timing. P1 and enemy.
-then apply the script for P1 movement
-and finally apply the binding process of the enemy on P1?

Also. Is there a way to decide how the hitground part of the slam will cancel the flying part of move?
(just like in pile driver move.)
I mean, it can be kind of glitchy to adjust the moment of the hitground of a slam if the player use a jumpframe.
It may give the sensation the damage occur at weird moments like in mid-air (too early) or far afterreally hitting the ground (too late) :(


TEST DONE:
I've given a jumpframe landframe to maxima... and there is no effect at all.
What's wrong...? (I precise my test is directly on Maxima without any change of the mod Crime buster)

this is the code with jumpframe and landframe :

Code:
anim freespecial6
	offset	52 140

	jumpframe	4 3 -1
	landframe	8

        quakeframe 8 1 6
        attackone 0
	delay	6
        @cmd    position 7 30 60 -1 1
	frame	data/chars/maxima/slam05.gif
	delay	20
        attack16 68 29 49 92 7 0
        @cmd    position 7 50 -5 -1 1
        @cmd    spawn01 "Break" 47 44 1
	frame	data/chars/maxima/slam06.gif
	delay	5
        attack  0
        @cmd    hurt2 40
	frame	data/chars/maxima/slam06.gif
	delay	20
	offset	82 115
        @cmd    position 0 20 25 -1 1
	frame	data/chars/maxima/throw001.gif
	delay	5
        @cmd    antiwall -85 25 -1
        @cmd    position 1 -16 35 -1 1
        attack4 4 14 89 37 15 1 1
        sound	data/chars/maxima/suplex.wav
	frame	data/chars/maxima/throw002.gif
        @cmd    antiwall -85 30 -1
        @cmd    position 2 -41 53 -1 1
	frame	data/chars/maxima/throw003.gif
	delay	10
        @cmd    antiwall -85 30 -1
        @cmd    position 6 -84 2 -1 1
        attack4 -22 33 44 83 15 1 1
	frame	data/chars/maxima/throw004.gif
	delay	10
        @cmd    spawner "QFX" -73 0 0
	frame	data/chars/maxima/throw004.gif
        attack  0
	delay	5
        @cmd    depost 0
        @cmd    finish 45 2 -2 2 0 0
	frame	data/chars/maxima/throw005.gif
	delay	8
	frame	data/chars/maxima/throw006.gif
	frame	data/chars/maxima/throw007.gif
	frame	data/chars/maxima/throw008.gif

Seems to have something in this Maxima that cancel any kind of movement/velocity, but what?
 
As example,while i´m making a slam or throw move,i´m making first the animation done to look and move how i want and then i´m adding the script function on it and bind the enemy to the frames of the animation.

So its basically the same thing we do in mugen.

Question about binding: the enemy will be bind at the desired position until I release it, right? So If I made my char move or jump, he will be binded to it, right?

Also. Is there a way to decide how the hitground part of the slam will cancel the flying part of move?
(just like in pile driver move.)
I mean, it can be kind of glitchy to adjust the moment of the hitground of a slam if the player use a jumpframe.

I can be wrong, but if you use a jumpframe, you should use a landframe to tell this to engine.

I've been studing this and seams to be very easy, its very close of what we do in mugen.
You even can get the proper bind values using Fighter Factory
 
O Ilusionista said:
Question about binding: the enemy will be bind at the desired position until I release it, right? So If I made my char move or jump, he will be binded to it, right?

Correct. And you want to make sure you do in fact release the bind, otherwise you'll be walking around with the defender plastered to you forever. Sometimes with him flailing away at you if he's been freed to act.

Tip: Remember this is OpenBOR; there is lots more going on than in a one to one fighter and the strategy design needs to accommodate that. For example, you might want to make bigger throws vulnerable to outside interference so the player has a reason to use quicker, less damaging throws too. To accomidate this, you will need to force release the bind in a takedamagescript. It's something you should do anyway really, as you never know when a scripted event or the timer might punch through the attacker's invincibility, interrupt his throw mid sequence and leave the entities bound together forever.

I can be wrong, but if you use a jumpframe, you should use a landframe to tell this to engine.

Also correct. Landframe also allows you to spawn a dust entity of your choice. You can always script some more if that isn't enough.

I've been studing this and seams to be very easy, its very close of what we do in mugen.
You even can get the proper bind values using Fighter Factory

Once you get the hang of it, most certainly. On top of all the other problems it causes, the Pain hack is actually much more tedious. Want to add a new throw? Opps, now you have to modify every existing character in the mod. Forget that. Why do it the wrong way and make life hard on yourself?

DC
 
Thanks DC.

Can someone upload CrimeBuster? The only version I've found doesn't have the scripts folder
Are those scripts ok? http://cavernofcreativity.com/Atlas/Thread-Crime-Buster-Slam-Tutorial-for-Beginners

Btw, that tutorial has more information
 
YES! It worked like a charm (ignore the icon error):
mEvsF.png

Thanks DC, Pierwolf and Blood

@Ned I know what is wrong. You are using the wrong jumpframe #
I added a jumpframe and a land frame to test and Captain jumps with the enemy binded to him.

Edit:

@Ned, something I got while I was working on it (somebody corrects me if I am wrong), the custom anim (on the example, fall7) its NOT LINEAR like in Mugen. In other words, it won't play on the same sequence you make the anim, because you actually tells WHICH frame it will be used, take a look:

@cmd position [1] [2] [3] [4] [5] - this controls the victims image frame and position, and it needs to declared for each frame of the slam/throw
[1] nº of fall7 animation (starts in 0) 
[2] X axis  -/+
[3] Y axis -/+
[4] Z axis -/+ (layer position) (ex: -1 behind attacker | 1infront attacker // -10 more behind | 10 more infront)
[5] Controls victims facing direction: 0 = no change, 1 = same direction as slammer/thrower,-1 = opposite direction as slammer

So, we can have just one animation with many variations of the axis positions and sprites angles and we pick which one we will be using, instead of making a new animation for each new throw like we do in Mugen.

Also,

@cmd throw [1] [2] [3] [4] [5] [6] – used to finish throw    (works just like finish for slam) (use it at the end of the last slam frame)
(ex: @cmd    throw 35 1 4 2 0 0)
[1]  damadge made by the slam (- less damage) (+ more damage)
[2] 1 = Opponent plays FALL animation after being slammed / 2 = Plays FALL9 animation, 3 = Plays FALL2 animation
(Some enemies have FALL2 animations in which they auto recover from being thrown.)
[3] fall distance X axis -/+            
[4] fall altitude y axis -/+            
[5] fall depth z axis -/+            
[6] flips the fall animation 0 / 1 (0 = Doesn't change opponent's direction / 1 = Flip opponent's direction)

I've made a fall9 anim where the char lands with the head on the ground, and works perfectly.
 
I've just found my error.
I was making changes in the wrong "throw state"
There is 2 similar moves and I was editing one and testing the other, so this is the reason of the no changes... Ok it's kind of stupid...but.

Just like your CapCom char, my test on Maxima seems to be ok now!
He do some kind of jumping german suplex just like I was wanting to.

@Ilu
You explanation give me some ideas. Good job!

about the moment of the "groundhitting" I've selected the right frame of maxima anim to hit the ground (landframe), but because of the "jumpframe", the ground hitting occur in mid air.

How do I fix it.
I'm thinking of giving longer falling animation to tweak the moment of the hit on ground to match the landframe moment.
But, it seems to be a very random way... is there a correct way for it?
 
nedflandeurse said:
How do I fix it.
I'm thinking of giving longer falling animation to tweak the moment of the hit on ground to match the landframe moment.
But, it seems to be a very random way... is there a correct way for it?

Use a negative delay on the last frame before impact/landing. It causes the actual delay to be infinite, so the frame never changes until something acts on it (like Landframe). Just in case there are some EDelay adjustments or some such I like to use -1000 as a nice round number. Now the landing will be perfectly timed no matter what; even if you jump off of a platform or the floor height changes.

See here for a video of it in action. At one point the Chicken Leg pile drives an enemy, then later does the same pile driver off of a small overhang (crunch! heh heh heh...). In both cases, the landing times itself.

...
delay 10
    frame data/chars/dude0001.png #Jumpframe
...
...
...
delay -1000
    frame data/chars/dude0002.png #Final frame before landing.
delay 10
    frame data/chars/dude0003.png #Landframe
...

DC
 
He do some kind of jumping german suplex just like I was wanting to.

Great. But something crossed my mind: and if we want to toss the enemy high first then jump to grab it? I can't do the toss with the @cmd position. Should it be a move which changes enemy Y velocity, then the jumps uses a cancel to go to a grab, is my logic correct?
 
Damon Caskey said:
See here for a video of it in action. At one point the Chicken Leg pile drives an enemy, then later does the same pile driver off of a small overhang (crunch! heh heh heh...). In both cases, the landing times itself.

...
delay 10
    frame data/chars/dude0001.png #Jumpframe
...
...
...
delay -1000
    frame data/chars/dude0002.png #Final frame before landing.
delay 10
    frame data/chars/dude0003.png #Landframe
...

DC

Awesome moves!!
I just tested with infinite last frame before hit and it's great!

Only bad point, it seems to ignore the hitground spark effect used initially.

the state itself :

Code:
anim grabbackward
	delay	1

	jumpframe	1 3 -1
	landframe	6

	offset	82 115
        quakeframe 6 1 6
        attackone 0
        @cmd    anti
	frame	data/chars/maxima/throw001.gif
	delay	15
        @cmd    slamstart
        @cmd    position 0 20 25 -1 1
	frame	data/chars/maxima/throw001.gif
	delay	5
        @cmd    antiwall -85 25 -1
        @cmd    position 1 -16 35 -1 1
        attack4 4 14 89 37 15 1 1
        sound	data/chars/maxima/suplex.wav
	frame	data/chars/maxima/throw002.gif
        @cmd    antiwall -85 30 -1
        @cmd    position 2 -41 53 -1 1
	frame	data/chars/maxima/throw003.gif

	delay	-1000#10  negative delay for infinite!!!
        @cmd    antiwall -85 30 -1
        @cmd    position 6 -84 2 -1 1
        attack4 -22 33 44 83 15 1 1
	frame	data/chars/maxima/throw004.gif
	delay	10
        @cmd    spawner "QFX" -73 0 0
	frame	data/chars/maxima/throw004.gif
        attack  0
	delay	5
        @cmd    depost 0
        @cmd    finish 45 2 -2 2 0 0
	frame	data/chars/maxima/throw005.gif
	delay	8
	frame	data/chars/maxima/throw006.gif
	frame	data/chars/maxima/throw007.gif
	frame	data/chars/maxima/throw008.gif
 
Damon Caskey said:
Unless I am mistaken, that isn't supported by Bloodbane's system out of the box. It is by mine (see here for demo), but I'm sure Bloodbane can still help you out.

DC

I think I got it:

@cmd slamstart
@cmd position 0 10 0 -1 0
frame data/chars/capcomm/grab.gif

delay 60
@cmd depost 0
@cmd throw 0 0 0 4 0 0

        frame data/chars/capcomm/t1.gif
delay 60
@cmd position 1 -25 15 -1 0
        frame data/chars/capcomm/t2.gif

You make a DEPOST then make a throw with just Y velocity and it toss the enemy to the air.
You still need to use the jumpframe to make your char jumps to grab it, or on the next frame, the enemy will be bind with you again.


 
nedflandeurse said:

Landframe itself accepts a ground spark parameter. Works the same way as the dust command. Jumpframe does too, so you can create a liftoff dust spark as well.

landframe {frame} {dust}

jumpframe {frame} {y} {x} {z} {dust}

Tip: Put your quake and impact sounds in the dust spark, not the throw. This will greatly simplify your throw code (no repeat frames needed) and let you make much smoother animations.
 
Ok, so I can get rid of this line :

@        @cmd    spawner "QFX" -73 0 0

I use landframe features intead.

landframe {frame} {dust}

but, there is no way to adjust the position of the effect itself...?
 
No, it always spawns at the offset. For a precise spawn location, you still need the script command. I tend to sue both. Landframe for the attacker's dust and a scripted call for the defender's.

DC
 
O Ilusionista said:
Dc, care to show how we can do this?

Well, I don't know the commands for Bloodbane's system, but whatever you use to release after impact, call that in every entity's take damage script.

My system stores the handle of the bound defenders by index; this allows you to throw multiple opponents at once. In my takedamage scripts I loop through this array and if any defender entities are found, they are released with a generic short knockdown effect to reset them.

The on screen effect is that when hit, the attacker "drops" whoever he had hold of and they fall down without taking damage.

DC
 
Good job Ilu! that's how to chain slam/throw after previous slam/throw. I need to tell you that with Crime Buster scripts, grabbed opponent is stored in local variable and this variable is not cleared automatically. That's why I added clearL in IDLE animation to clear it.
So if you rebind the opponent again after throwing or slammig, it will work!

As for jumpframe thing, you can replace it with
@cmd leaper instead. This is scripted jumpframe and works similar. Even better, with this function, you can jump more than once in an animation.

Last but not least, the scripts aren't fixed so they can be modified especially for throw and finish which controls which animation opponent would play after the throw and slam.
 
Back
Top Bottom