Skip to content

Mob statuses in hit damage; Energy Orb hops - #512

Merged
neeerp merged 3 commits into
v83/mob-attacks-skillsfrom
v83/mob-status-damage
Oct 17, 2026
Merged

neeerp merged 3 commits into
v83/mob-attacks-skillsfrom
v83/mob-status-damage

Conversation

@neeerp

@neeerp neeerp commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

The v83 client reads a mob's statuses on every hit; HeavenClient ignored them. It now applies them to both magic and weapon damage. Energy Orb's ball also hops from mob to mob.

What changed

  • Energy Orb (FUN_0094289f): the ball flies from 25 px in front of the shot's origin to the middle of its first mob, then on to each next one, 1.25 ms per pixel. Each mob is hit when the ball arrives, for the player's own shots and other users'.
  • Magic damage (MDamage, FUN_00791617):
    • Disable turns the hit away, and Magic Immunity lets only a 0-in-100 roll through (otherwise 1);
    • the EVA and MDR statuses add to avoid and magic defense, and Magic Guard Up leaves n% after the defense;
    • Hard Skin stops every non-critical hit, and Weakness adds n%;
    • the hit scales by the weapon's percent for the spell's element (FUN_005d284f): the Elemental Wands and Staffs carry elemDefault and incRMAI/F/L/S/H.
  • Weapon damage (PDamage, FUN_0078df87):
    • Disable makes the blow miss, and Physical Immune caps it at 1;
    • the EVA and PDR statuses add to avoid and weapon defense, and Power Guard Up scales it after the crit (not for Sacrifice);
    • Hard Skin stops non-critical hits, and fixed damage still skips all of these.

Not covered

  • HeavenClient's base physical formula is still Journey's, not PDamage's.
  • The respect chance against immunities.

Verification

  • magic_damage and shot_path client tests extended.

Reviewed with sol-loop: 2 rounds with gpt-6.1-sol on high.

Stacked on #511

v83 (FUN_0094289f) flies Energy Orb's ball from 25 px in front of the shot's
origin to the middle of its first mob, then on to the middle of each next one,
1.25 ms per pixel (Spark 2). Each mob is hit when the ball arrives, so the hits
come one hop after another rather than all by horizontal distance. The client
now does this for its own shots and other users', and draws no regular bullet
for these skills.
The v83 client's MDamage (FUN_00791617) reads the mob's temporary stats on
every hit. Disable turns the hit away. Magic Immunity lets only a roll of 0
in 100 through and otherwise shows 1. The EVA and MDR statuses add to the
avoid and magic defense. Magic Guard Up leaves n% after the defense. Hard
Skin stops every hit that is not critical, and only Evans crit spells.
Weakness adds n%. The hit is also scaled by the weapon's percent for the
spell's element (FUN_005d284f): the Elemental Wands and Staffs carry
elemDefault and incRMAI/F/L/S/H, and every other weapon gives 100.

HeavenClient now keeps Disable's byte as a status, names HardSkin and
Weakness, reads the element boosts into EquipData, carries them on the
Attack, and applies each step in Mob::next_magic_damage in the client's
order.
CalcDamage::PDamage (FUN_0078df87) gates a blow on the same mob statuses
MDamage does: Disable makes it miss, Physical Immune caps it at 1 unless
the respect roll pierces it, the EVA and PDR statuses add to the mob's
avoid and weapon defense, Power Guard Up scales it after the crit (except
for Sacrifice), and Hard Skin stops every hit that is not critical.
HeavenClient's weapon damage ignored all of them; it now applies them to
weapon hits, while fixed damage still skips them as in v83. Unlike magic,
PDamage never reads Weakness: its extra percent is Dragon Knight
Berserk's damage.
@neeerp
neeerp force-pushed the v83/mob-status-damage branch from e0876a4 to 1a1d13a Compare October 17, 2026 23:26
@neeerp
neeerp added this pull request to stack #515 October 17, 2026 23:30
@neeerp
neeerp merged commit bb915e7 into v83/skill-and-mob-details Oct 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant