Files
spigot-tyrant/design/user-stories/us-016-manage-vigilante-control-panel.md
dmg 9ed0eed832
Release / release (push) Successful in 2m29s
CI / build (push) Successful in 1m7s
feat(tyrant): add arena boss succession
2026-08-23 17:55:14 -04:00

50 lines
3.9 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 clears Followers, opens the Vigilante arena challenge, and communicates that outcome accurately.
- [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 arena vacancies](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)
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)