Skip to content

Party Targeting System #42

Description

@FirebrickRed

Priority: MEDIUM
Status: TODO
Required for: #41 (Rest Commands), #43 (Interrupted Rests)

Description

Create a simple party targeting system to group players for command execution (rests, buffs, etc.).

Scope

This is NOT the full party management system from Issue #19. This is just a lightweight targeting/grouping system for DM commands.

Commands

  • /party create <name> - Create a party
  • /party disband <name> - Remove a party
  • /party add <party> <player...> - Add player(s) to party
  • /party remove <party> <player...> - Remove player(s) from party
  • /party list - Show all parties
  • /party info <party> - Show party members with character info

Command Examples

/party create knights_of_mortimer
/party create "Tale of Seekers"
/party add knights_of_mortimer charlie astra
/party add "Tale of Seekers" astra diana elara
/party list
/party info knights_of_mortimer
/party remove knights_of_mortimer charlie
/party disband "Tale of Seekers"

Features

  • Party names support spaces with quotes: "Knights of Mortimer" or knights_of_mortimer
  • Players can be in multiple parties
  • Tab completion for party names and player names
  • Persistent storage in parties.yml

Acceptance Criteria

  • Create party command with name validation
  • Add/remove players from parties
  • List all parties with member counts
  • Show detailed party info with character details
  • Disband party command
  • Tab completion for all commands
  • Persistent storage in parties.yml
  • Support both quoted and underscore party names
  • Allow players in multiple parties

Storage Format (parties.yml)

parties:
  knights_of_mortimer:
    - uuid-1  # Charlie
    - uuid-2  # Astra
  tale_of_seekers:
    - uuid-2  # Astra (in both!)
    - uuid-3  # Diana

Validation

  • Party names: Letters, numbers, spaces, underscores, hyphens only
  • Regex: ^[a-zA-Z0-9_ -]+$
  • Cannot create duplicate party names (case-insensitive check)
  • Cannot add offline/non-existent players

Display Format

/party list output:

Active Parties:
  • Knights of Mortimer (3 members)
  • Tale of Seekers (4 members)

/party info knights_of_mortimer output:

═══════════════════════════════
Party: Knights of Mortimer
Members (3):
  • Charlie (Bard, Level 1)
  • Astra (Fighter, Level 1)  
  • Bjorn (Barbarian, Level 1)
═══════════════════════════════

Technical Notes

  • Store in PartyManager similar to CharacterSheetManager
  • Load/save via PartyPersistenceLoader
  • Data structure: Map<String, List<UUID>>
  • Cache party membership for fast lookups

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew functionality

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions