49 lines
3.8 KiB
Markdown
49 lines
3.8 KiB
Markdown
---
|
|
type: User Story
|
|
title: "US-016: Manage Followers through the Vigilante control panel"
|
|
description: Give the active Vigilante a graphical control panel for reviewing and managing the resistance.
|
|
status: done
|
|
---
|
|
|
|
# US-016: Manage Followers through the Vigilante control panel
|
|
|
|
As the **Vigilante**, I want a control panel for managing Followers so that I can coordinate the resistance without memorizing commands.
|
|
|
|
## Acceptance criteria
|
|
|
|
- [x] The active Vigilante can open the control panel with `/vigilante menu`, and `/vigilante` with no arguments opens the same panel.
|
|
- [x] A player who is not the active Vigilante cannot open or operate the control panel.
|
|
- [x] The control panel opens automatically five seconds after the active Vigilante joins a running event.
|
|
- [x] Automatic opening is cancelled if the player disconnects, loses the Vigilante role, or the event pauses or stops during the five-second delay.
|
|
- [x] Pending Vigilante candidates and other players do not receive the automatically opened control panel.
|
|
- [x] Manually opening the control panel during the delay prevents a duplicate automatic opening.
|
|
- [x] Closing the automatically opened control panel does not cause it to reopen during the same login session.
|
|
- [x] The overview shows current Followers, pending invitations, and the number of nearby Followers currently eligible to contribute combat effects.
|
|
- [x] Each Follower's online, living, same-world, proximity, and participation status is communicated without exposing information unavailable to the Vigilante.
|
|
- [x] The control panel shows the current Strength and Resistance contribution and configured caps.
|
|
- [x] The Vigilante can navigate between overview, recruitment, Follower-management, and role-control screens.
|
|
- [x] The recruitment screen lists eligible online players and explains why opted-out, Tyrant, Vigilante, or otherwise ineligible players cannot be invited.
|
|
- [x] The Vigilante can invite an eligible player after confirmation.
|
|
- [x] Pending outgoing invitations are identified and cannot be duplicated through repeated or concurrent interaction.
|
|
- [x] Invited players receive the existing invitation notice and may continue using `/vigilante accept`.
|
|
- [x] The Follower-management screen identifies current Followers and requires confirmation before dismissal.
|
|
- [x] Successful invitations and dismissals refresh the control panel from authoritative current state and notify affected players.
|
|
- [x] The role-control screen allows the Vigilante to relinquish the role only after explicit confirmation.
|
|
- [x] Relinquishing through the control panel uses normal Vigilante replacement and Follower-cleanup rules.
|
|
- [x] Every action revalidates the running lifecycle and active Vigilante before changing state.
|
|
- [x] Stale or repeated control-panel interactions cannot invite an ineligible player, duplicate an invitation, or dismiss the wrong Follower.
|
|
- [x] Existing `/vigilante invite`, `/vigilante accept`, `/vigilante dismiss`, `/vigilante leave`, and `/tyrant relinquish confirm` commands remain available.
|
|
- [x] The active Vigilante can open the control panel by using the bound Vigilante control item.
|
|
|
|
## Validation
|
|
|
|
Automated tests verify default and explicit command entry points, active-Vigilante authorization, overview state, invitation deduplication and eligibility, the exact 100-tick login delay, lifecycle cancellation, and duplicate-opening prevention. The complete `./gradlew clean check jar` lifecycle passes.
|
|
|
|
## Related
|
|
|
|
- [Support the Vigilante and Followers](us-008-support-vigilante-and-followers.md)
|
|
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
|
- [Manage a reign through the Tyrant control panel](us-015-manage-tyrant-control-panel.md)
|
|
- [Role and class model](../concepts/role-and-class-model.md)
|
|
- [Use bound role control items](us-017-use-bound-role-control-items.md)
|