Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arest & Vrest - a comprehensive guide
#1
This thread is about the Arest/Vrest system in LF2, as used in "itr:" tags and "Weapon_strength_list".
I am compiling what is known previously, and something that was shared in Discord, plus some of my personal input.

I will detail what arest & vrest are individually, as well as what happens when you mix these two tags (in multiple separate itrs, in a single itr, and in wpoint).


Arest: Attacker Rest
You can only hit x1 person. The default value appears to be 4.
However, arest has several complicated properties that are not commonly known.
* Arest does NOT count down during attacker's hitlag(3).
* Type 3 (balls) technically have 0 attacker hitlag, and so can immediately hit again upon next tu with arest: 1.
* Type 0 (chars) have a minimum capped arest of 4, even if you type arest: -1.
* Arest instantly resets to 0 when attacker goes to a new frame that has no itrs of any kind at all.
* Arest will pick a target at random.
* For some reason, arest has a maximum x-axis range of 1000 in each direction (so from -1000 to 1000, total 2000px).

To summarize the randomization if you put 2~5 arest itrs in the same frame:
* 2 arests: 50% / 50%
* 3 arests: 25% / 25% / 50%
* 4 arests: 12.5% / 12.5% / 25% / 50%
* 5 arests: 8.33% / 8.33% / 8.33% / 25% / 50%


Vrest: Victim Rest
You can hit **up to 20** objects, but not the same person again until after x time has passed.
It continues to countdown during hitlag;
Hence, vrest7 can be said to be equivalent to arest4 (unless you're using type 3, then v7=a7).

Default: 0 (vrest is not enabled)
BlockCap: 10 (if attack is blocked, the vrest inflicted is capped at 10)
Maximum: 127
Fastest: -1 (you get the same effect with numbers 128 to 256; vrest300 is technically vrest44)

Unlike arest, it is *not* random.
LF2 will always choose the 1st vrest itr from the top, and then go down the list.
If a vrest hits successfully, no further vrests below it will be calculated.


[v+a] Vrest(itr1) + Arest(itr2): Arest takes priority
This tech uses 2 itrs at the same time.
The order is important; the vrest being written above arest.
    DC-Code:
itr: kind: 0  x: 22  y: 5  w: 58  h: 64  dvx: 12  dvy: 12  fall: 70  vrest: 12  bdefend: 60  injury: 70  effect: 1  itr_end: 
itr: kind: 0  x: 22  y: 5  w: 58  h: 64  dvx: 12  dvy: 12  fall: 70  arest: 9  bdefend: 60  injury: 70  effect: 4  itr_end:

In this example, Deep's >>JA will hit multiple enemies at the same time as usual.
However, if a ball/weapon gets thrown into Deep's sword, he will only hit the ball/weapon and not any characters his sword is attempting to cut.

If you have v1+a2+v3+a4, in that order,
You will randomly prioritize either a2+v3(50%), or a4(50%) only.


[a+v] Arest(itr1) + Vrest(itr2): Both hit, but with bugs
This tech also uses 2 itrs at the same time, again the order is important.
    DC-Code:
itr: kind: 0  x: 22  y: 5  w: 58  h: 64  dvx: 6  dvy: -4  fall: 70  arest: 1  bdefend: 16  injury: 20  effect: 2  itr_end: 
itr: kind: 0  x: 22  y: 5  w: 58  h: 64  dvx: 12  dvy: -7  fall: 70  vrest: 12  bdefend: 20  injury: 50  effect: 1  itr_end:

In this example, the attack will hit twice at the same time; you will see 2 hitsparks.
* Normally, it does 70 damage. The enemy goes into falling(not burning). You will hear burning & cutting sounds.
* If you use cheat engine, you'll notice that the values I used for dvx/dvy will make the enemy fly at xspeed=12 exactly, and yspeed=-7.33333.
* You can bypass Louis/Knight's armor, because of the 1st arest itr inflicts effect 2.
* The attack can be blocked, but will send the blocker into broken_defend since 16+20=36 which greater than 30.
* You can bypass Julian's armor because the 1st arest itr inflicts bdefend 16, just enough to bypass armorclass 15. However, you will notice that Julian doesn't fly as far/high as normally, because his velocity is reduced due to the action of blocking the 1st itr, and he only takes (20/10)+50=52 damage.

However, if you use this attack on multiple enemies at once, its arest behaves inconsistently.
I find that it will always function properly against x1-2 enemies, but there is a chance the arest will fail to hit a 3rd enemy, and pretty much always fail to hit a 4th enemy.
Hence in practice, you'd find that only 2-3 enemies take full damage, while the other enemies only take the vrest damage.

This arest+vrest tech can be used to induce the injurybounce mechanic, which happens when a character reaches fall80 and then takes another hit, confusing the game and sending the character into injury frames while receiving falling velocity.
[Image: jXCkozc.gif]

This tech can also be used to consistently inflict fall80 on type 3 attacks.
This is done by using itr 1[arest effect 4 fall: -70](set fall to exactly 10) and itr2[vrest fall: 70](add fall 70), therefore always triggering fall80.
Fall80 can destroy state3005/3006, and if frame 180/186 is defined in the type 3, it will be sent to those frames(based on direction hit) instead of frame20/30.


[a%v-1] Arest + Vrest: Within the same itr
Credits go to @Mesujin for sharing this tech on Discord and giving its name.
So it turns out that you can actually put both arest and vrest tags in the same itr.
Normally, this is pretty pointless since the vrest would sort of override the arest.
The trick is to use vrest: -1.
    DC-Code:
itr: kind: 0  x: 22  y: 5  w: 58  h: 64  dvx: 12  dvy: 0  fall: 70  arest: 1  vrest: -1  bdefend: 30  injury: 100  effect: 1  itr_end:

The order is not important in this case, what matters is that you have both tags written in same itr.

In summary, it gives you an arest with vrest properties, by shorting out the rest values.
* You can hit multiple enemies at once, like vrest.
* However, you cannot hit any further enemies/objects during hitlag, just like arest.
* You can define the rest period via the "arest" tag, its minimum value is 1 instead of 4!
* It is not random.

This tech is useful if you want to say, buff John's super_punch to hit multiple enemies at once, but not cause him to hit the weapon that the enemies might be holding.
This can also be used to replace the normal arest for the a+v tech mentioned above, which largely solves the lack of consistency problem when hitting more than 2 enemies.

However, this tech has a few important caveats:
(1) If the enemy has more than 1 bdy, and the itr overlaps both of those bdys, it will hit that same enemy multiple times.
(2) This attack can only hit up to 20 times (same as vrest).
(3) The itr will prioritize enemies lower on the object memory list.

#1 is a very big problem if you intend to use this tech in original LF2, because it will appear to cause random x2~3 damage/fall etc when hitting enemies in certain frames. Therefore, this trick is only recommended for full mods that intend to standardize everyone to have only x1 bdy.

#2 and #3 are more relevant if you intend to use multiple a%v-1 itrs or enjoy large Battles.
Suppose you use x3 of such itrs, and you(Player 1) are attacking Players 2,3,4, who have x5 bdy each.
* You will ALWAYS hit Player 2 a total of 3x5=15 times.
* You will ALWAYS hit Player 3 a total of 5 times.
* You will NEVER hit Player 4.


Itr Kind 5 + Wpoint: Attacking(Weapon_Strength_List)
Incidentally, ik5+wpoint also have some arest/vrest related magic.
(1) weaponStrength[vrest], ik5[arest]; original lf2 weapons.
(2) weaponStrength[vrest], ik5[vrest]; basically normal vrest.
(3) weaponStrength[arest], ik5[arest]; basically normal arest.
(4) weaponStrength[arest], ik5[vrest]; actually the same as a%v-1 tech.

#1 is what you see in original LF2 weapons.
Notice that if you swing a weapon at multiple enemies, they will fall over one by one instead of altogether at once like in a normal vrest(#2).
Therefore, v%a-1 *technically* exists in LF2, but as far as I know, it is only available through weapons, and appears to be a pretty impractical tech when proper vrest and a%v-1 tech exists.

#4 while you cannot directly put a%v-1 tech into weaponStrength, you can get the exact same results by putting vrest ik5 in the weapon's on_hand frames, and then using an attack value from the weapon_strength_list that uses arest.


Can I mix a%v-1 with arest/vrest?
a%v-1 + arest (both orders) behaves pretty randomly, I do not recommend it.
That being said, in my tests, arest + a%v-1 in that order seemed to have better success in hitting multiple enemies(around 2-3) to get hit than a%v-1 + arest in that order. I would advise messing around to get better sample data for your needs.

a%v-1 + vrest (in that order) as advised is a good alternative for arest+vrest, but beware the more than 1 bdy problem.

vrest + a%v-1 (in that order) will always prioritize vrest first. However, I also do not recommend this; on testing with vrest(itr effect 4)+a%v-1(normal), I find that if you hit a weapon/ball, it will actually short the vrest, causing you to be able to double-hit enemies.

Overall, it seems the most suitable applications for a%v-1 are:
a) Making an attack hit up to x20 enemies in an instant, but not during hitlag.
b) Making an attack that needs to perform up to x20 simultaneous hit on the exact same target.


[v-1v%] Vrest(-1)(itr1) + Vrest(itr2):
After everything above, it turns out Arest+Vrest and [a%v-1]+Vrest is a bit obsolete for the purposes of simultaneous hits.
Just use vrest: -1 and vrest: %.


Other Notes:
This tech is not exclusive to kind 0; it can be used for other kinds itr kind 3(catch)/8(healball).
I have managed to use x4 itr kind 4 + x1 itr kind 1 and 4 bdys to make it such that ik1 always grabs the person with the lowest object number instead of attempting to catch everyone.
Feel free to experiment and find more possible practical uses.
[Image: uMSShyX.png]
~Spy_The_Man1993~
Steiner v3.00 (outdated), Challenge Stage v1.51
Luigi's Easier Data-Editor, A-Man's Sprite Mirrorer
Working on the LF2 Rebalance mod.
Avatar styled by: prince_freeza
Reply
#2
(12-13-2021, 07:14 PM)STM1993 Wrote:  ...
LF2 will always choose the 1st vrest itr from the top, and then go down the list.
If a vrest hits successfully, no further vrests below it will be calculated.
...

....
Yes, LF2 will always choose the 1st vrest itr from the top, but you know? it can also be "the 1st vrest itr from the bottom".

Dunno if you had know this, but lemme explain this bcs you didn't text anything about this in there.

So, what's the "this"? (actually i had realized about this when making an Input Checker for my white girl, Shirotaka, but bit lazy to research more deeper at that time)
... 1. Itr has a power to modify/transforming the frame but in the weakest transformation.
where's that power come from? it's from itr kind: 1, 2, 3, and 8.

So, the question; i have this kind of code, which itr do you think will works?
    DC-Code:
itr: kind: 8 x: 10 y: 10 w: 25 h: 25 zwidth: 20 vrest: 1 injury: 0 dvx: 69 itr_end:
itr: kind: 8 x: 10 y: 10 w: 25 h: 25 zwidth: 20 vrest: 1 injury: 0 dvx: 77 itr_end:

Of course the upper one with dvx:69 will works...

but what if.. i have this; which will work?
    DC-Code:
itr: kind: 8 x: 10 y: 10 w: 25 h: 25 zwidth: 40 vrest: 1 injury: 0 dvx: 69 itr_end:
itr: kind: 8 x: 10 y: 10 w: 25 h: 25 zwidth: 20 vrest: 1 injury: 0 dvx: 77 itr_end:


You might think that the upper one still works first, moreover bcs it's has bigger size... but no, the bottom one will works rather than the upper one if the target are in the range of that itr.
Unbelievable? We're talking about Marti, so it is the what will happen.


"So, the other kind, 1, 2, and 3 will works like that too?"
Not for kind:1, kind:1 was hardcoded with unique 'rest' that works like vrest but it using arest in the data instead of vrest. (Bit dunno about this one, ... i mean which cooldown it'll be counted, arest? vrest? or uncontrollable?)

"Is it works for other kind in Itr?"
No, but if you modify the .exe, and add a new kind that could "modify/transforming the frame" then it's probably will works like that.

...
I hope u could understand the what i want to say in this post, will give it to our moderator, stm, if he wanted to get more deeper with this to get more accurate info. Well, it's enough info to get more advance with ik8 or ik3 i tho.
Signature - Mesujin
Data Changer, AI-Scripter, DirectX-App Programmer.

Lastest Work : Little Fighter 2 : Enchanted.
Contact Person : Mesujin#1516 (mesujin), github.com/Mesujin, mesujin.imano@yahoo.com.
Reply
Thanks given by: STM1993
#3
Shorting out ITRs with Itr Kind 4 and 5.
This is actually mentioned at the end of my first post, but I'm going to give more details and an update on whether to use kind 4 or 5.


As you know, an object may only have a maximum of 20 hit instances with its ITRs.
Each object may only have up to 5 ITRs and 5 BDYs without stability issues.

One useful way to reach this limit is to give an attacker multiple vrest: -1 ITRs, while the victim should have multiple BDYs.
Each ITR should overlap as many of the multiple BDYs as possible.
So you could use 4 ITRs that overlap 5 BDYs (or 5 ITRs that overlap 4 BDYs) to hit a victim 20 times at once.


A possible application for this is to fix a grab bug - notice that Julian attempts to grab all 3 Templates.
[Image: ik1_bug.gif]
For some reason, this bug with itr kind 1 grab cannot be solved by simply putting arest.
It would instead be necessary to short out 19 out of 20 of the attacker's ITRs.

That's where Itr Kind 4 (Falling) and Kind 5 (Weapon) comes in.
Both ITRs essentially serve no function if used outside of their very specific purpose of enabling Thrown ITR in falling frames and weaponstrength in wpoint respectively, but continue to count towards the attacker's hit count.

Below is a GIF after the bugfix is applied. Do also notice that Player 2 always gets picked out from the group.
[Image: ik4ik1short.gif]

As to whether to use kind 4 or kind 5, that depends on your needs, but there is an important difference.

Kind 4 has friendly-fire(can hit both allies & enemies).
Kind 5 only hits enemies(can still hit frozen allies, but does NOT hit allied state 10).

EDIT:
@Mesujin has pointed out that Itr Kind 12 and 13, which are unused undefined kinds, could potentially be used too in place of Kind 4 (because they have friendly-fire as well). Note that kind 17 and above however would behave like kind 0.

Other applications for itr shorting could involve:
1. Making ITRs only hit allies but not enemies (or only hit if there is an ally and no enemies present)
2. Ensure that an ik8 dialogue box in Stage *always* picks Player 1.
[Image: uMSShyX.png]
~Spy_The_Man1993~
Steiner v3.00 (outdated), Challenge Stage v1.51
Luigi's Easier Data-Editor, A-Man's Sprite Mirrorer
Working on the LF2 Rebalance mod.
Avatar styled by: prince_freeza
Reply
Thanks given by: Little Fighter Extreme




Users browsing this thread: 1 Guest(s)