Skip to content

Smaller v83 behaviours: mob move acks, hit effects, skill actions, Heal, last world - #503

Merged
neeerp merged 5 commits into
v83/remote-attacksfrom
v83/skill-and-mob-details
Oct 17, 2026
Merged

neeerp merged 5 commits into
v83/remote-attacksfrom
v83/skill-and-mob-details

Conversation

@neeerp

@neeerp neeerp commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

A handful of smaller v83 behaviours: controlled mob moves, hit effect placement, skill action choice, Heal, and the world select focus.

What changed

  • Controlled mob moves: HeavenClient handles MOVE_MOB_RESPONSE (FUN_0066c23b) with v83's control state. It numbers each move and sends the latest one once the last is acked. MOVE_MONSTER now carries the action byte and the sentinels v83 writes.
  • Hit effects are placed by their pos: none lands where the hit met the body, 1 at the feet, 2 on the current frame's head, 3 mid-body, 4 where the hit landed, following the mob.
  • Skill actions: a skill's action is picked at random among its actions (FUN_007660b6). A skill used without attacking plays at speed 6 (0x96d4a6), and the USE_SKILL lock uses the same action.
  • Heal (0x96a69d): USE_SKILL goes out with the party mask, then the cleric casts at the undead in 60% of the area, in map entry order, each hit from v83's Heal formula (0x791aa8). The server heals the cleric by their share, takes Heal's MP at USE_SKILL rather than on its attack, and caps Heal's hits by the same formula.
  • World select: LAST_CONNECTED_WORLD (26) focuses that world's plank.

Verification

  • New client tests heal and hit_point; a new server unit test covers Heal.

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

Stacked on #502

…yals does

Handle MOVE_MOB_RESPONSE (FUN_0066c23b) with v83's control state, number each move, and send the latest move once the last is acked. MOVE_MONSTER now carries the action byte and sentinels v83 writes.
Effects without a pos land where the hit met the body and stay there;
pos 1 sits at the feet, 2 on the current frame's head, 3 in the middle
of the body and 4 where the hit landed, following the mob. A body-less
frame shows no effect at the body. Hit sparks use the faced body.
LAST_CONNECTED_WORLD (26) puts the key focus on that world's plank.
v83 takes one of a skill's actions at random (FUN_007660b6), not by
two-handedness, plays a skill used without attacking at speed 6
(0x96d4a6), and takes 150 ms for a body frame with no delay while
keeping a 0 (FUN_00414d40). apply_actions now returns the action it
played, so the USE_SKILL lock uses the same one.
The client sends USE_SKILL with the party mask, then casts at the undead
in 60% of the skill's area, in the order they entered the map, each hit
from the Heal formula (0x791aa8) shared by everyone it reaches. The
server heals the cleric by their share and caps Heal's hits by the
same formula.
@neeerp
neeerp force-pushed the v83/skill-and-mob-details branch from 09edb76 to fe4f6e9 Compare October 17, 2026 23:26
@neeerp
neeerp added this pull request to stack #516 October 17, 2026 23:31
@neeerp
neeerp merged commit 3b44a53 into master Oct 17, 2026
1 check 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