Add party system - #419
Open
RahulDNair wants to merge 3 commits into
Open
Conversation
Implements the core party feature: creating a party, inviting players by name, accepting or rejecting invites, listing members, expelling members, and leaving. The party window (Alt+P) conditionally shows either the create prompt or the member view based on party membership. Also registers previously unhandled server packets that could silently truncate the incoming packet buffer (ZC_USESKILL_ACK3, ZC_NPCSPRITE_CHANGE, and the remaining party family), surfaces skill requirement failures (e.g. missing Basic Skill for party creation) as chat messages instead of dropping them, and adds round trip serialization tests for the new packets. Tested against the development rAthena server with two clients: create, invite, accept, expel, leave, and party restoration on login. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Party members now have their health bar and name rendered below their sprite in the world, using the health updates from the party packets. The party window shows a health bar and level, health, and position info per member, and the expel button is only shown to the party leader. The member list state was moved to a dedicated client side struct so health, position, and job updates can be applied as they arrive. Party chat messages, leader changes, and party item pickup packets are now also handled. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The server reports skill failures like insufficient SP, missing items, or cooldowns through ZC_ACK_TOUSESKILL. Previously only the missing Basic Skill case was surfaced; now all common failure causes are displayed as an error chat message, matching the official client behavior. The cause values follow rAthena's useskill_fail_cause enum. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
RahulDNair
force-pushed
the
party-system
branch
from
August 2, 2026 17:45
520315d to
90c1652
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
The core party feature, live-tested end to end against the development rAthena server with two clients:
0x02C4/0x02C6/0x02C7/0x02C5, member add0x0AE4, member list0x0AE5)0x07FC)Robustness fixes found along the way
While testing, some packets the development server emits were unregistered, which silently truncated the incoming packet buffer (everything after an unknown packet in the same read is dropped):
ZC_USESKILL_ACK3(0x0B1A) andZC_NPCSPRITE_CHANGE(0x01B0), which ambiently killed unrelated packet bursts0x07D8, position0x0107, HP0x080E, death0x0AB2, job/level0x0ABD, leader change0x07FC, incoming party chat0x0109(rendered in the chat window), item pickup0x0B67ZC_ACK_TOUSESKILL, e.g. creating a party without Basic Skill 7) now surface as a chat message instead of being dropped — this failure was previously invisibleTests
Round-trip serialization tests for the new packets (wire sizes and layouts verified against rAthena's
packets.hppfor PACKETVER 20220406), plus the existing duplicate-header registration tests pass.Known follow-ups (intentionally out of scope)
/p)CZ_PARTY_CONFIGtoggleThis is my first contribution to Korangar — feedback on conventions very welcome.
🤖 Generated with Claude Code