Skip to content

Add HitDistortion and Knockback to Blu spells#9961

Closed
TiberonKalkaz wants to merge 1 commit into
LandSandBoat:basefrom
TiberonKalkaz:blu_hitDistortion_knockback
Closed

Add HitDistortion and Knockback to Blu spells#9961
TiberonKalkaz wants to merge 1 commit into
LandSandBoat:basefrom
TiberonKalkaz:blu_hitDistortion_knockback

Conversation

@TiberonKalkaz
Copy link
Copy Markdown
Contributor

@TiberonKalkaz TiberonKalkaz commented May 6, 2026

I affirm:

  • I understand that if I do not agree to the following points by completing the checkboxes my PR will be ignored.
  • I understand I should leave resolving conversations to the LandSandBoat team so that reviewers won't miss what was said.
  • I have read and understood the Contributing Guide and the Code of Conduct.
  • I have tested my code and the things my code has changed since the last commit in the PR and will test after any later commits.

What does this pull request do?

This pull request adds HitDistortion (mob reaction) to all BLU Physical Spells and adds Knockback (animation only) to the BLU spells that have knockback. Ensures that Physical Spells have not missed- so misses do not result in mobs flinching.

Room for improvement - this could be extracted to its own fcn, however there doesnt seem to be an existing home for this kind of functionality - I almost put it in battleUtils but that felt off. Alternatively we could route the ActionResult through LuaUtils::OnSpellCast, through the individual Blu Spells, and into BlueMagic.lua where processing could handle updating the HitDistortion (in usePhysicalSpell) and Knockback. ActionResult over Action as the processing is per target. I'm open to updating for either pathway.

Limitations

  1. I have only captured and verified 75 Era spells as my Retail Blu is only 75. As I level and learn more spells, I will continue to verify.
  2. Despite the 0x028 packet now directly matching retail captuues aside from expected variances (Target, Damage, Spell Recast) - Medium/Large Knockbacks (Ram Charge, Helldive, Regurgication) do not animate as Medium/Large Knockbacks - rather they animate as Small/Medium Knockbacks. I have attempted forcing various combinations of HitDistortion and Knockback (as they both contribute - see link) - However even supplying the largest Knockback and largest HitDistortion together and verifying the values via Captain has not created the same Large Knockback animation as retail. I'm open to any ideas or pathways I may be missing.

Helldive Example 1:

[2026-05-04 16:54:32.904] Incoming packet 0x028
        |  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F      | 0123456789ABCDEF
    -----------------------------------------------------  ----------------------
      0 | 28 14 32 1B 1F 38 2B 0C 00 01 D0 8D 00 00 40 02    0 | (.2..8+.......@.
      1 | 00 00 80 1A 60 40 40 00 46 01 A5 15 80 00 00 00    1 | ....`@@.F.......
      2 | 00 00 00 FF 38 2B 0C 00 -- -- -- -- -- -- -- --    2 | ....8+..--------

scale = 5, -- knockback: 1, distortion: 1


Helldive Example 2:

[2026-05-04 16:54:05.940] Incoming packet 0x028 - Magic Finish
        |  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F      | 0123456789ABCDEF
    -----------------------------------------------------  ----------------------
      0 | 28 14 F1 1A 1F 38 2B 0C 00 01 D0 8D 00 00 40 02    0 | (....8+.......@.
      1 | 00 00 80 1A 60 40 40 00 46 01 65 15 80 00 00 00    1 | ....`@@.F.e.....
      2 | 00 00 00 19 00 00 00 00 -- -- -- -- -- -- -- --    2 | ........--------

scale = 5, -- knockback: 1, distortion: 1


Helldive LSB - not the same visual - smaller knockback

[2026-05-05 15:53:59.604] Incoming packet 0x028
        |  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F      | 0123456789ABCDEF
    -----------------------------------------------------  ----------------------
      0 | 28 12 76 01 23 03 00 00 00 01 D0 8D 00 00 00 00    0 | (.v.#...........
      1 | 00 00 80 03 20 43 40 00 46 01 A5 12 80 00 00 00    1 | .... C@.F.......
      2 | 00 00 00 00 -- -- -- -- -- -- -- -- -- -- -- --    2 | ....------------

scale = 5, -- knockback: 1, distortion: 1


Steps to test these changes

Basic Testing

  1. Toss ChainSpell !addeffect chainspell 1 1000 1000 and Refresh !setMod Refresh 1000 on yourself. Avoid GodMode
  2. Find a good location with multiple mobs and grab some
  3. Test Single Target and Multi Target Spells
  4. Spike one Mob's evasion in a group !setMod EVA 10000 and cast aoe spells hitting multiple. Ensure when the boosted eva mob evades (spell fails to take effect message) that the mob does not HitDistort or Knockback.
  5. In general - Physical Spells (denoted by the Aht Urgan symbol in the spell list) cause Hit Distortion if they hit. Magical Spells do not cause Hit Distortion. Knockback animation is a case by case basis.
  6. Regurgitation is a Special Case - its a magical damaging spell with knockback animation - it cannot fail to take effect.
  7. Note: Just like on retail - timing matters. The server can tell the client to perform an animation but the client has final say. Causing Hit Distortion while a mob is mid-animation will cause the mob to "no sell" the hit, i.e., ignore the Hit Distortion. This is especially evident with a spell like Asuran Claws - with 6 spread out hits. Its very easy to have many of the 6 Hit Distortions cancelled by a concurrent animation. Its interesting that it seems to be a frame by frame decision of sorts, as it can blank only some of the hits.
Example Spell Hit Distortion Hits Knockback AoE?
Sprout Smack Yes 1 No No
Disseverment Yes 5 No No
Tail Slap Yes 1 Yes Conal
Battle Dance Yes 1 No PBAoE
Regurgitation No 1 Yes No
Head Butt Yes 1 Yes No
Blood Saber No 1 No PBAoE

@TiberonKalkaz TiberonKalkaz force-pushed the blu_hitDistortion_knockback branch from d7971f9 to ed23454 Compare May 6, 2026 06:19
@TiberonKalkaz TiberonKalkaz marked this pull request as ready for review May 6, 2026 06:35
@sruon sruon added the hold On hold, pending further action/info label May 6, 2026
@sruon
Copy link
Copy Markdown
Contributor

sruon commented May 6, 2026

Appreciate the detailed information! Give me a few to collect the spells and test on my end.

@TiberonKalkaz
Copy link
Copy Markdown
Contributor Author

Appreciate the detailed information! Give me a few to collect the spells and test on my end.

Sounds good, thanks!

Let me know if you want any of the incremental capture files I have. I was waiting until I had identified all Knockback spells to submit a complete cap

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hold On hold, pending further action/info

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants