Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dash attacking guys right after throwing them
EDIT: Images are gone because I used imageshack, see wayback archive. Too lazy to re-upload the images to imgur and put them here.

Certain characters can dash attack a guy after they throw him, by using a technique called direct running. These are Woody, Dennis, Freeze, Firen*, Rudolf (note that no non-heroes can do it). Herein, I explain how to do it, the method by which I tested which characters can do it, and an alternative theoretical way that would be achievable for more characters but almost impossible to pull off. While the plain throw-dash-kick is by no means applicable in a real game, owing to its immense difficulty, it serves as an illustration of some skills that are useful, such as direct running. Furthermore, in a real game there may be a situation wherein the thrown guy gets slowed down by an obstacle, in which case it would be possible to dash attack him without the perfect timing presented below.

*Requires 180-turn grab: 火人轉身丟人瞬發+吹火基礎連技

How to do it

It is obvious at once that there is not nearly enough time to pull it off if one uses the standard technique to get running:
[Image: JTMQyJd.gif]
At this point, direct running (see appendix) comes to the rescue. Now it works:
[Image: Hw5odjC.gif]
Let's look at it in slow motion, with the buttons overlayed (thanks YinYin!):
[Image: ICRVXYK.gif]
This is an almost optimal use of time. 5 TUs are spent in throw_lying_man (the follow-through from the throw), that's unavoidable; next, 2 TUs are spent running, though technically only 1 TU of running is needed; and next, we're dash attacking, and the rest is up to the game engine.

So that's pretty good! This small amount of waste is good enough to do the combo with Woody, Dennis, Freeze, and Rudolf:
[Image: 0PQWzto.gif] [Image: 4lJCoC7.gif] [Image: JwpqwP2.gif] [Image: e0sLvZ4.gif]
But not Firen. So why do I claim that Firen can do it? Well...

Throw-dash-kick AI

The throw-dash-kick is very hard, so I had to write a bot to do it. Here's the code if you're interested:
void forward() {
   if (self.facing) left(); else right();
void targetward(int x, int y) {
   if (target.x > self.x) right(x,y); else left(x,y);
int MRD = 200;
void id(){
   // reset all inputs
   for (int i = 0; i < 400; i++)
       if (loadTarget(i) == 0 && target.num != self.num)
   int xdistance = target.x - self.x;
   int zdistance = target.z - self.z;
   if (target.state == 12) {
      // target has been thrown
      int delay_timer = 8 * game.objects[target.num].unkwn3[4];
      delay_timer += 4 * game.objects[target.num].unkwn3[5];
      delay_timer += 2 * game.objects[target.num].unkwn3[6];
      delay_timer += 1 * game.objects[target.num].unkwn3[7];
      if (self.state == 2) {
         // we're already running after the target
         // TODO check if Bat and Firzen can be done by human
   } else if (target.state == 16 && abs(xdistance) < MRD) {
      // target's in DoP
   } else if (target.state == 10) {
      // we're grabbing target
      if (target.facing) right(1,0); else left(1,0);
   } else if (abs(xdistance) < 50 && abs(zdistance) < 12) {
      // we're in punching range
      if (target.state == 0 || target.state == 11) {
         // target's standing normally or recovering from our earlier punch
         if (target.blink < 5) {
   } else {
      if (zdistance > 2)
      else if (zdistance < -2)
      if (abs(xdistance) >= MRD)

This bot can do it with Firen:
[Image: hEEFdxo.gif]
The reason it's better than me is that it only needs 1 TU of running to start dash attacking, not 2, as we can see in slow motion:
[Image: TrgfE6U.gif]
I'm not sure why I can't dash attack after 1 TU of running. If anyone can, please tell me how.


There are some characters that dash plenty far enough to catch up to the thrown guy, but cannot get their foot out in time, so they just get themselves hit. These are John, Jan, Bat, and Firzen. EDIT: I've been informed that John can actually do it.

Alternative way

If you stand extremely close to the victim as you grab, you may end up holding him from the opposite side that you walked from. Then, when you throw him in the same direction as you walked, you'll be throwing him backwards, which puts him closer to you while he falls than if you threw forwards. So far, however, I've had no luck reproducing the backwards grab.

Appendix: Direct running

First some theory. The way running works is this: when you start to walk, a variable called run_counter gets set to 10 (assuming you're going right; everything is negative if left). run_counter decrements each TU until it hits 0. When you press the button to walk again (after a minimum 2 TU pause to let LF2 know you're not trying to hold it down), if run_counter is still positive, you start running, and run_counter gets reset to 0. Now you'd think that you can't press anything in between the two walks, or else run_counter would get reset and obliterate your chance to run, but that's not entirely true. As far as I can tell, run_counter only gets reset when you punch, jump, defend, or run. Also, it only gets decremented when you're in standing or walking frames.

That's all the theory we need. Since only hardcoded frame transitions disrupt the running sequence, non-hardcoded ones, such as D>A or D^J (pressing them all at once, not one at a time), are allowed. run_counter doesn't decay in any frame other than walking or standing frames, so it will keep until the special move is done. Grabbing, and doing anything at all while grabbing, is allowed too. So, you can walk into a DoP enemy, throw him, and if you try to walk again right after, you'll run.

[Image: yK52DKG.png]

* Make sure not to go directly from punching frames to grabbing frames, or else the forward keypress won't count as the first walk and you won't be able to run.
* If you start pressing the button to run too early, it'll count as if you were holding it down, which won't start you running.

STM1993 edited this post 07-05-2017 06:07 AM because:
I've reuploaded the images to imgur and fixed the [code = ai] tag.
Well, one of Noir's friend(Lukas) told me about this trick a year ago. I only managed to succeed twice. :D
But great work here.
This place motivates me to become an artist, this place motivates me to learn coding, this place made me grow up, showed me the ways to interact with people. Unlike the old childish of me myself, I've learned a lot and gotten some experiences. For me, it's not just a fan forum, it's a helpful community. From a noob to someone who would think before he speaks, looking back at my old post made me laugh hard, I'm grateful of the differences between these 2 years.
~Thank You All and Farewell
~Goodbye, LFE.
RIP - 14/04/2014
Thanks given by:
(06-18-2013, 11:39 PM)zort Wrote:  [Image: wjg.gif]
I'm not sure why I can't dash attack after 1 TU of running. If anyone can, please tell me how.
What happens if you press >JA at once?
And what happens if you perform all your inputs one frame earlier? (start holding right at the last frame of the throw)
Thanks given by: Hero destroyer
If you press >JA all at once, it just jumps forward. And I actually did press > right at the last frame of the throw, it just doesn't look like it in the GIF because I foolishly recorded at exactly the same frame rate as LF2, thus the picture that got sampled during the last throw_lying_man frame was taken before I had started pressing >. I've updated the GIF with a better one (though now it looks like the second running frame takes two TUs ._.). So basically, here's a diagram:
[Image: yK52DKG.png]
By the way, I didn't manage to set Button Viewer to not display the log and name and latest button. I edited those out.
Thanks given by:
(06-19-2013, 04:34 PM)zort Wrote:  [Image: mt1.png]
Why would pressing > again one earlier read as held down and not run? I thought the gap between first > (throwing) and this one is wide enough.
Also if next: 999 were responsible the run frame would take even longer.
(06-19-2013, 04:34 PM)zort Wrote:  By the way, I didn't manage to set Button Viewer to not display the log and name and latest button. I edited those out.
And I just tend to use the older version ...
Thanks given by:
(06-20-2013, 02:02 PM)YinYin Wrote:  Why would pressing > again one earlier read as held down and not run? I thought the gap between first > (throwing) and this one is wide enough.
No, I mean, if you start to press > there, then by the time you get to a frame where a > is eligible to make you start running, it'll count as holding, so you'll just walk.
Thanks given by:
According to my understanding:
"The first > (throwing)?" ---> that one doesn't count (probably because the char isn't standing/walking). The first > was when the char is going to grab. All the frames between this first > and the first frame in the diagram are not standing/walking, so the left/right button is still 'pressed down', so we need to give one frame of standing before we direct run.

I'm not sure though. I'm not knowledgeable about this interesting stuff XD
Thanks given by:
No, that's not what it's about. Um, if you want to see how it works, I suggest you try it yourself, with Cheat Engine displaying your holding_> and run_counter (as per (Though maybe I would suggest disassembling LF2 and looking at the code if I knew how to do that :x)
Thanks given by:
the only thing i know about this technique(which i learnt from mientus) is that when u punch ur opponent then he does dop. When you see clearly ull notice that the charcater chages its postion after a very short time(depending upon the fps). just when the character changes its position then u have to grab him.
then just press j a just quickly enough(one after the other)..
for me this trick works most of the time..
rudolf,woody,dennis,freeze,deep,henry can do it by this technique..other players however do the direct run but they cant reach quickly enough to dash attack..
according to me direct run is just the technique by which u can run just by pressing > one time..
this technique can be done after every move ..
Thanks given by:
i was hitting the stone yesterday with justin with hoe and i performed 2-3 times that running.
Even i have performed that running many times by accident, i have never used it (since it has always been an accident) :p

Lately i have tried zort technique to do it but still i cant do it :( probability i should try more maybe even with a fsp changer :p

good stuff btw
Thanks given by:

Users browsing this thread: 1 Guest(s)