Enemy sliding back on pain

NED

Well-known member
Most of beat em up don't use this feature.

I add this code on my pain anims:
------------------------------------------------
anim pain2
loop      0
offset    96 177#238 177
bbox 67 58 61 122
move -2#-7#---------------------------recule
delay      4
sound data/chars/mex/mex_dam2.wav
      frame      data/chars/mex/pain2.gif
offset    95 177
      frame      data/chars/mex/pain2.gif
move 0#---------------------------recule
offset    96 177
      frame      data/chars/mex/pain2.gif
offset    95 177
      frame      data/chars/mex/pain2.gif
offset    96 177
      frame      data/chars/mex/pain2.gif
offset    95 177
      frame      data/chars/mex/pain2.gif
offset    96 177
delay      12
      frame      data/chars/mex/pain2.gif
-------------------------------------------------------------------

It's OK, but it makes enemy going back during grab attack (because of the shared pain anims...)

Also, I think I use this go back "move" only with some attacks, not all.

The possibility of making clones of pain with "move" and without it could take too much space in the txt file...

Is there a way not to clone the anims?


--------------------------------------------------------------
If Openbor was able to handle EASILY body-push physics on characters, I would don't even need this feature and all these clone animations...
For an attack with intense move forward, you go through enemy without even hitting :P
 
I use slide-back pains in ClaFan. The best way to do it is assign it to pain2 (triggered by attack2).

Example:

anim pain
delay 3
offset  45  54
bbox  37  31  15  23
frame data/enems/enem1/5.gif
offset 47  54
frame data/enems/enem1/5.gif
offset 45  54
frame data/enems/enem1/5.gif
offset 43  54
frame data/enems/enem1/5.gif
offset 45  54
frame data/enems/enem1/5.gif
offset 47  54
frame data/enems/enem1/5.gif
offset 45  54
frame data/enems/enem1/5.gif
offset 43  54
frame data/enems/enem1/5.gif
offset 45  54
frame data/enems/enem1/5.gif
offset 43  54
frame data/enems/enem1/5.gif
offset 45  54
delay 25
frame data/enems/enem1/5.gif


anim pain2
offset  45  54
delay 5
move -10
bbox  36  31  19  23
frame data/enems/enem1/5.gif
frame data/enems/enem1/5.gif
frame data/enems/enem1/5.gif
frame data/enems/enem1/5.gif
delay 40
move 0
frame data/enems/enem1/6.gif

You can also use anim grabbed, it's a pain animation used only when the enemy/player is grabbed.
 
For more smooth sliding, I set a low delay with repeated frames:
Code:
anim	pain2
	loop	0
	offset	76 94
	bbox	64 64 33 35
	delay	3
	quakeframe	0 3 4
	Move	-3
	sound	Data/CHARS/Knuckles/Pain.wav
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Attack1	0
	frame	data/chars/Knuckles/pain02.gif
	Move	-2
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	-1
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain01.gif
	Move	0
	delay	8
	frame	data/chars/Knuckles/pain01.gif
	frame	data/chars/Knuckles/pain01.gif

Code:
anim	pain3
	loop	0
	offset	76 94
	bbox	64 64 33 35
	delay	2
	quakeframe	0 3 4
	Move	-5
	sound	Data/CHARS/Knuckles/Pain.wav
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Attack1	0
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	-4
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	-3
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	-2
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	-1
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain02.gif
	Move	0
	frame	data/chars/Knuckles/pain02.gif
	frame	data/chars/Knuckles/pain01.gif
	delay	8
	frame	data/chars/Knuckles/pain01.gif
	frame	data/chars/Knuckles/pain01.gif

For smaller characters or those not focused on power, I add a jump to pain3:
Code:
anim	pain3
	loop	0
	offset	22 75
	bbox	10 13 24 63
	delay	2
	quakeframe	0 3 4
	Landframe	14
	Jumpframe	0 2
	Move	-5
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	Attack1	0
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	Move	-4
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	Move	-3
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	Move	-2
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	Move	-1
	frame	data/chars/adamx/pain.gif
	delay	100
	frame	data/chars/adamx/pain.gif
	Move	0
	delay	2
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif
	delay	8
	frame	data/chars/adamx/pain.gif
	frame	data/chars/adamx/pain.gif

hope that helps:.

x)
 
I think more delay makes the move less mooth, and "move  *" command makes the character jump by * amount of pixels in instant, for smooth sliding its better to use script

@script
                void self = getlocalvar("self");
if ((getentityproperty(self, "direction")==1)&&(frame == 0)){
changeentityproperty(self, "velocity", -6, 0, 0);
}
if ((getentityproperty(self, "direction")==0)&&(frame == 0)){
changeentityproperty(self, "velocity", 6, 0, 0);
}
if(frame == 5){
void self = getlocalvar("self");
changeentityproperty(self, "velocity", 0, 0, 0);
}
@end_script
 
Can you explain how it works?

The character slides from frame 0 (1st)
for a -6 velocity (what is the use of velocity +6?)
then stop at frame 5 (6th)

Is it right?? ???
 
because velocity doesnt take into account if youre facing right or left you need to cover both cases so if direction is 0 or 1 its -6 and 6.
 
Back
Top Bottom