Skip to content

Add skill feedback engine - #413

Open
zxcjqk wants to merge 18 commits into
vE5li:mainfrom
zxcjqk:add-skill-feedback-engine
Open

Add skill feedback engine#413
zxcjqk wants to merge 18 commits into
vE5li:mainfrom
zxcjqk:add-skill-feedback-engine

Conversation

@zxcjqk

@zxcjqk zxcjqk commented Jul 21, 2026

Copy link
Copy Markdown

merge after #412

JA added 16 commits July 21, 2026 22:05
Map 1-9 and 0 to the ten shortcut-bar slots and keep channel stop events paired with an actual unmodified cast press. Add regression coverage for slot mapping and modified key combinations.
Let selectable hotbar skills cycle their cast level with right click. Store the selection in the existing hotkey quantity, send it to the map server, and derive the true ceiling from the learned skill so reconnects, swaps, and clears remain consistent.
Arm targeted skills until a valid world destination is confirmed, validate typed entity and ground targets, and cancel cleanly across input and connection lifecycles. Track continuous casts by their resolved skill and owning input so slot changes, modifiers, focus loss, and toggle transitions cannot strand a channel.
Keep single-click drag behavior, allow maxed skills to remain movable, and add double-click casting from both the hotbar and skill tree. UI activations toggle continuous skills and respect the skill tree's selected level without interfering with skill-point distribution mode.
Tint only the newly emitted render instructions for a live entity accepted by the armed skill. Keep shadows untouched, suppress the tint over interface windows, and use post-click targeting state so confirmed or cancelled targets do not linger for an extra frame.
Use ZC_USESKILL_ACK header 0x0B1A for the supported 20220406 packet version and include its trailing attack-motion field. Add an exact 29-byte encode/decode regression test for the packed wire layout.
Turn the modern cast acknowledgement into a typed start event and add the fixed-layout ZC_DISPEL cancellation packet. Keep both packets available to the in-client packet history and the PCAP inspector, and cover their back-to-back wire framing with regression tests.
Play the casting action and draw themed progress bars for active casts. Track cast timing independently from sprite actions so missing assets and hit reactions cannot leave stale or hidden progress, and clean it up on cancellation, expiry, death, disappearance, and map changes.
Document and test the 14-byte ZC_ACK_TOUSESKILL layout, keep its signed detail and item context, and represent failure causes with an unknown-tolerant newtype so future server codes remain decodable in packet tooling.
Convert rejected skill acknowledgements into context-preserving events and show useful English or German chat errors. Resolve required item names, format resource and prerequisite details, keep unknown causes safe, and leave successful acknowledgements silent while retaining them in packet history.
Model ZC_NOTIFY_SKILL with the exact signed wire fields so damage sentinels, motions, hit counts, and action values decode without truncation. Add a byte-exact round-trip test to protect the 33-byte layout.
Translate ZC_NOTIFY_SKILL into a dedicated event and show damage or miss particles without triggering auto-attack continuation or normal attack animations. Suppress signed server sentinels and keep critical styling limited to the known critical action values.
Separate immediate playback probing from deferred loading so multi-hit sequences can retry without enqueueing duplicate sounds. Bound queued sound lifetime, expose cleanup, and cover expiry behavior with tests.
Propagate texture loading failures, provide deterministic first-frame blend defaults, guard texture indices, and support effects without point lights. Replace duplicate skill-unit effects by entity id and let lightless effects expire immediately.
Classify entity, ground, and skill-unit attachment for verified Fire, Lightning, Sight, Blessing, Pneuma, and Heal assets. Add bounded procedural Cold Bolt and Frost Diver particles for skills whose GRF lacks a complete named world animation, with explicit direct-effect routing and timing tests.
Extend particle and effect holders with target-following procedural particles and ACT/SPR attachments, including the separately stored local player. Export skill recipes, support keyed attachment replacement and cleanup, and split multi-hit damage without losing the total.
This was referenced Jul 21, 2026
JA and others added 2 commits July 21, 2026 23:17
Preserve authoritative cast, damage, no-damage, ground, unit, status, and option-state fields through networking, including unknown UnitId values. Route those events into target-, ground-, and unit-attached animations, paced damage and audio, Sight lifecycle, and world-transition cleanup while retaining debug packet inspection.
The unit id table had a naming off-by-one around 264-268, verified
against rAthena's e_skill_unit_id by two independent methods (parsing
the enum, and counting entries from the UNT_SAFETYWALL = 0x7e anchor):

- Creatingstar was 264; UNT_CREATINGSTAR is 265.
- 264 is UNT_GROUNDDRIFT_NEUTRAL, which was missing and had its slot
  occupied by an unreferenced Dummy0 placeholder at 265.
- UNT_SEEDTRAP (268) was absent entirely.

No current effect recipe referenced any of these, and UnitId is a
struct so unknown values already decoded safely, so this fixes a latent
mislabel rather than active behavior. All 180 unit ids now match
rAthena exactly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@zxcjqk
zxcjqk force-pushed the add-skill-feedback-engine branch from c7b59b0 to aa1d86a Compare July 21, 2026 14:27
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