Party
A party is a group of up to ten players who see each other in the client’s party window and talk together.
It is made in game with the client’s own party buttons, with no command: the client turns them into the
packets of the party (extended command 0xBF, subcommand 0x06).
Forming a party
Section titled “Forming a party”- A player opens the party window and presses Add; the client asks for a target, and the player picks another player. The invitation creates the party when the inviter has none, and the inviter leads it.
- The invited player’s client shows its own invitation (cliloc 1008089, after a line with the name of the inviter) and
its accept and decline buttons. An invitation not answered in
invite_timeout_seconds(30) is declined, and the leader reads that it expired. - Accepting adds the player: everybody gets the new list of members and reads who joined.
An invitation is refused, with a line that says why, when the target is an NPC, the player itself, someone
who is in a party or has an invitation already, stands farther than invite_range tiles (8) or on another
map, or when the members and the invitations already fill the party (max_members, 10). Only the leader
invites, once the party exists.
Leaving and the leader
Section titled “Leaving and the leader”- A member leaves with the Leave button; the leader removes a member with the Remove button and a target. The leader cannot remove themselves: they leave.
- When the leader leaves, the next member in the order they joined takes the lead, everybody reads who it is and the invitations waiting are cancelled.
- A character leaves its party when its session closes, so a leader who logs out hands the party on and a member who logs out is simply gone. A party is not saved: a restart ends every party.
- A party of one is no party: when fewer than two members remain it is disbanded, and the last member gets the empty list.
Talking
Section titled “Talking”The client sends what a player types in the party chat (/p text, or the window’s chat line) to the whole
party, and a private message (/tell-style, with a member picked) to that member only. A message is
trimmed and cut at chat_max_length (128) characters, an empty one is dropped, and a prisoner of the
jail cannot use the party chat. Dead players can. The guild and the alliance have their own chats, see
Guilds.
The bars and the map
Section titled “The bars and the map”- When a player joins, the members and the newcomer see each other’s status bar, wherever they stand.
- The hit points of a member who is out of your view (farther than the view range, or on another map) reach your party window; the mana and the stamina of every other member do. A bar is a share of 100: you never read the real numbers of another player.
- ClassicUO asks for the places of the members while the world map is open (the protocol extension
0xF0), and the server answers with the members out of view: they are drawn on the map. The Enhanced Client’s own pins (waypoints0xE5and0xE6) are not built, since the server cannot yet tell the Enhanced Client from the classic one.
Spells
Section titled “Spells”The spells that hit a place (Chain Lightning, Meteor Swarm, Earthquake, Mass Curse, Wither, the poison and
paralyze fields, and the ones beside the target of Poison Strike) leave the members of the caster’s party alone, and the creatures a member owns: magic.valid_indirect
asks the party module, party.are_friends(player, other). It holds for a murderer too, who may hit a blue
stranger. The fire field does not burn them and Mass Dispel does not dispel their summoned creatures
(magic.is_party_friend). The spells that help (Arch Cure, Arch Protection) are not changed: they help every member
and everybody else as before. The damage of a potion that explodes and the area attacks of monsters are not changed
either.
The client’s “members may loot my corpse” checkbox is kept for each member (party.CanLoot), and nothing
reads it yet.
Settings
Section titled “Settings”[ultima.party]max_members = 10 # Players a party holds, invitations waiting included, from 2 to 10.invite_timeout_seconds = 30 # Seconds an invitation waits for an answer.invite_range = 8 # Tiles away the invited player may stand.chat_max_length = 128 # Characters of a chat message; a longer one is cut.For scripts
Section titled “For scripts”The party module answers party.of(player), the party a player belongs to as
{ id, leader, members }, party.is_member(a, b), whether two players share one, and
party.are_friends(player, other), whether the other is a member of the player’s party or a creature one of them
owns. Four
events tell what happens to the parties: party_invite, party_joined,
party_left (with the reason left, kicked or logout) and party_disbanded (too_small or emptied).
Not built yet
Section titled “Not built yet”The map pins of the Enhanced Client come when the server can tell that client from the classic one. Sharing loot, fame and karma, and the party in duels and quests, are not planned yet.
Made with ❤️ by Tom
