feat(tyrant): add arena boss succession
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
7. [US-007: Capture and place mobs as a Tamer](us-007-capture-and-place-mobs.md)
|
||||
8. [US-008: Support the Vigilante and Followers](us-008-support-vigilante-and-followers.md)
|
||||
9. [US-009: Purchase and use Tyrant abilities](us-009-use-tyrant-abilities.md)
|
||||
10. [US-010: Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
10. [US-010: Handle inactivity and arena vacancies](us-010-handle-inactivity-and-selection.md)
|
||||
11. [US-011: Inform players and manage participation](us-011-inform-and-manage-participation.md)
|
||||
12. [US-012: Configure and persist game state](us-012-configure-and-persist-state.md)
|
||||
13. [US-013: Build, test, and release the plugin](us-013-build-test-and-release.md)
|
||||
@@ -19,3 +19,4 @@
|
||||
17. [US-017: Use bound role control items](us-017-use-bound-role-control-items.md)
|
||||
18. [US-018: Complete Tyrant commands contextually](us-018-complete-commands-contextually.md)
|
||||
19. [US-019: Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
20. [US-020: Claim the Tyrant role in the arena](us-020-claim-tyrant-in-arena.md)
|
||||
|
||||
@@ -17,7 +17,7 @@ As a **server operator**, I want to start, pause, resume, and inspect the game s
|
||||
- [x] Pausing freezes progression, cooldowns, daily-use timers, inactivity checks, and pending-selection deadlines.
|
||||
- [x] Role and class effects are suppressed while paused and restored when play resumes.
|
||||
- [x] Administrative commands require the `spigottyrant.admin` permission, granted to server operators by default.
|
||||
- [x] Administrators can inspect lifecycle state, roles, classes, Followers, purchases, levels, cooldowns, participation, pending selections, and the configured Vigilante arena location.
|
||||
- [x] Administrators can inspect lifecycle state, roles, classes, Followers, purchases, levels, cooldowns, participation, legacy pending selections, and the configured shared role arena location.
|
||||
- [x] Destructive administrative operations require explicit confirmation.
|
||||
|
||||
## Related
|
||||
|
||||
@@ -12,11 +12,11 @@ As a **player**, I want defeating the Tyrant to transfer power predictably so th
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] A player directly credited with killing the Tyrant becomes the new Tyrant.
|
||||
- [x] A Tyrant death without a player killer selects an eligible opted-in player active within the preceding 24 hours at random.
|
||||
- [x] The former Tyrant is excluded from random succession when another eligible candidate exists.
|
||||
- [x] A Tyrant death without a player killer leaves the role vacant and opens the shared Tyrant arena challenge.
|
||||
- [x] The former Tyrant may compete again under the same arena eligibility and reset rules as every other opted-in participant.
|
||||
- [x] The former Tyrant's level, unlocks, unspent choices, and Tyrant ability cooldowns reset when the reign ends.
|
||||
- [x] Every Assassin, Fixer, Tamer, Vigilante, and Follower assignment is cleared when the Tyrant dies.
|
||||
- [x] A new Vigilante is selected under the normal candidate rules after succession.
|
||||
- [x] After Tyrant succession, a vacant Vigilante role opens the shared arena's Vigilante challenge.
|
||||
- [x] The new Tyrant receives exactly one starting unlock choice.
|
||||
- [x] The Tyrant's displayed name is red and the Tyrant has a red glowing outline while the game is running.
|
||||
- [x] Succession cannot assign the same player as both Tyrant and Vigilante.
|
||||
@@ -25,3 +25,4 @@ As a **player**, I want defeating the Tyrant to transfer power predictably so th
|
||||
|
||||
- [Tyrant game state machine](../concepts/game-state-machine.md)
|
||||
- [Progress and purchase Tyrant unlocks](us-003-progress-and-purchase-unlocks.md)
|
||||
- [Claim the Tyrant role in the arena](us-020-claim-tyrant-in-arena.md)
|
||||
|
||||
@@ -31,6 +31,6 @@ As the **Vigilante**, I want nearby living Followers to strengthen me against th
|
||||
## Related
|
||||
|
||||
- [Role and class model](../concepts/role-and-class-model.md)
|
||||
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
- [Handle inactivity and arena vacancies](us-010-handle-inactivity-and-selection.md)
|
||||
- [Manage Followers through the Vigilante control panel](us-016-manage-vigilante-control-panel.md)
|
||||
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
|
||||
@@ -1,25 +1,23 @@
|
||||
---
|
||||
type: User Story
|
||||
title: "US-010: Handle inactivity and pending selections"
|
||||
description: Replace absent or unconfirmed role holders using recently active eligible players.
|
||||
title: "US-010: Handle inactivity and arena vacancies"
|
||||
description: Replace inactive role holders through the shared arena without granting legacy pending selections.
|
||||
status: done
|
||||
---
|
||||
|
||||
# US-010: Handle inactivity and pending selections
|
||||
# US-010: Handle inactivity and arena vacancies
|
||||
|
||||
As a **participant**, I want inactive central roles to be replaced fairly so that the game does not stall around absent players.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] A Tyrant or Vigilante who has not logged in for 48 unpaused hours loses the position.
|
||||
- [x] Random candidates are drawn from eligible opted-in players who logged in during the preceding 24 hours.
|
||||
- [x] Tyrant and Vigilante vacancies use their shared arena challenges rather than random candidate selection.
|
||||
- [x] The Tyrant is always excluded from Vigilante selection.
|
||||
- [x] A previous role holder is excluded when another eligible candidate exists and may be reused only as a fallback.
|
||||
- [x] Tyrant inactivity ends the reign, clears all assignments, invokes normal random Tyrant succession, and opens the Vigilante arena challenge once a Tyrant is active.
|
||||
- [x] Previous role holders may compete for their former role under the same arena eligibility and reset rules as other opted-in participants.
|
||||
- [x] Tyrant inactivity ends the reign, clears all assignments, and opens the Tyrant arena challenge; the Vigilante challenge can open only after a Tyrant becomes active.
|
||||
- [x] Vigilante inactivity clears Followers and opens the Vigilante arena challenge without changing the Tyrant.
|
||||
- [x] An offline randomly selected candidate must log in within 24 unpaused hours to confirm the assignment.
|
||||
- [x] An unconfirmed Tyrant selection expires and rerolls automatically under the same eligibility rules.
|
||||
- [x] Tyrant selection remains vacant and retries periodically when no valid candidate exists.
|
||||
- [x] Legacy pending role selections are cleared safely into the applicable arena vacancy without granting a role.
|
||||
- [x] Candidate selection cannot assign conflicting roles or choose an opted-out player, including during concurrent joins and deaths.
|
||||
|
||||
## Related
|
||||
@@ -27,3 +25,4 @@ As a **participant**, I want inactive central roles to be replaced fairly so tha
|
||||
- [Tyrant game state machine](../concepts/game-state-machine.md)
|
||||
- [Inform players and manage participation](us-011-inform-and-manage-participation.md)
|
||||
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
- [Claim the Tyrant role in the arena](us-020-claim-tyrant-in-arena.md)
|
||||
|
||||
@@ -34,6 +34,6 @@ As a **player**, I want to understand my status and control my eligibility so th
|
||||
|
||||
## Related
|
||||
|
||||
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
- [Handle inactivity and arena vacancies](us-010-handle-inactivity-and-selection.md)
|
||||
- [Persistence model](../concepts/persistence-model.md)
|
||||
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
|
||||
@@ -11,8 +11,8 @@ As a **server operator**, I want configurable and durable game behavior so that
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] Configuration covers ranges, durations, cooldowns, inactivity periods, candidate windows, retry intervals, effect levels and caps, mob restrictions, item materials and names, messages, timer behavior, and Vigilante arena boss balance.
|
||||
- [x] Defaults match the approved user stories, including a 50-block Tyrant range and Follower range, seven-day opt-out, 48-hour inactivity, and 24-hour candidate windows.
|
||||
- [x] Configuration covers ranges, durations, cooldowns, inactivity and maintenance intervals, effect levels and caps, mob restrictions, item materials and names, messages, timer behavior, and shared-role-arena boss balance.
|
||||
- [x] Defaults match the approved user stories, including a 50-block Tyrant range and Follower range, seven-day opt-out, 48-hour inactivity, and one-minute role maintenance.
|
||||
- [x] Invalid required configuration prevents partial plugin initialization and produces a clear server log message.
|
||||
- [x] UUID-keyed state stores lifecycle, current and pending roles, assignments, login history, participation, reign progression, purchases, choices, cooldowns, paused time, item delivery, and captured mobs; the administrator-set arena center is durable across restarts.
|
||||
- [x] Cooldowns and deadlines use UTC instants and exclude administratively paused time.
|
||||
@@ -26,3 +26,4 @@ As a **server operator**, I want configurable and durable game behavior so that
|
||||
- [Persistence model](../concepts/persistence-model.md)
|
||||
- [Build, test, and release the plugin](us-013-build-test-and-release.md)
|
||||
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
- [Claim the Tyrant role in the arena](us-020-claim-tyrant-in-arena.md)
|
||||
|
||||
@@ -42,7 +42,7 @@ Automated tests verify default and explicit command entry points, active-Vigilan
|
||||
## 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)
|
||||
- [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)
|
||||
|
||||
@@ -12,8 +12,8 @@ As an **opted-in participant**, I want a visible one-player boss challenge for a
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] An administrator can set and inspect a durable arena center, and configuration validates the arena radius and boss strength.
|
||||
- [x] The configured arena has a continuously visible particle boundary, including when no fight is active.
|
||||
- [x] A vacant Vigilante role opens the challenge after death, inactivity, relinquishment, or a new Tyrant reign, but a boss exists only while a Tyrant is active and the game is running.
|
||||
- [x] The configured arena has a continuously visible neutral boundary when no challenge is open and a blue particle boundary while the Vigilante challenge is open.
|
||||
- [x] A vacant Vigilante role opens the challenge after death, inactivity, relinquishment, or a new Tyrant reign, but only while a Tyrant is active, no Tyrant challenge is open, and the game is running.
|
||||
- [x] The challenge boss defaults to an armored, 80-health enhanced zombie, does not burn in sunlight, and remains within a default 10-block-radius arena.
|
||||
- [x] All online opted-in players are told when the role opens and receive the arena world and coordinates; opted-in players receive the same notice when they log in while it remains open, and opted-out players do not.
|
||||
- [x] Exactly one eligible opted-in non-Tyrant player may enter as challenger, including when entry is attempted by walking or teleportation.
|
||||
@@ -30,6 +30,7 @@ As an **opted-in participant**, I want a visible one-player boss challenge for a
|
||||
|
||||
- [Start, pause, and administer the game](us-001-start-pause-and-administer.md)
|
||||
- [Support the Vigilante and Followers](us-008-support-vigilante-and-followers.md)
|
||||
- [Handle inactivity and pending selections](us-010-handle-inactivity-and-selection.md)
|
||||
- [Handle inactivity and arena vacancies](us-010-handle-inactivity-and-selection.md)
|
||||
- [Configure and persist game state](us-012-configure-and-persist-state.md)
|
||||
- [Tyrant game state machine](../concepts/game-state-machine.md)
|
||||
- [Claim the Tyrant role in the arena](us-020-claim-tyrant-in-arena.md)
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
---
|
||||
type: User Story
|
||||
title: "US-020: Claim the Tyrant role in the arena"
|
||||
description: Use the shared one-player arena to replace a Tyrant who was not defeated by another player.
|
||||
status: done
|
||||
---
|
||||
|
||||
# US-020: Claim the Tyrant role in the arena
|
||||
|
||||
As an **opted-in participant**, I want to earn a vacant Tyrant role through the shared boss arena so that environmental death, inactivity, and relinquishment do not assign power randomly.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [x] A player directly credited with killing the Tyrant still becomes the new Tyrant immediately without an arena fight.
|
||||
- [x] Tyrant death without a player killer, Tyrant inactivity, and Tyrant relinquishment end the reign, clear all role-side assignments, and open the shared arena with no active or pending Tyrant.
|
||||
- [x] The shared arena opens only one role challenge at a time: a vacant Tyrant takes priority, and the Vigilante challenge can open only after a Tyrant becomes active.
|
||||
- [x] The passive arena boundary uses red particles for an open Tyrant challenge, blue particles for an open Vigilante challenge, and a neutral marker while neither role challenge is open.
|
||||
- [x] The Tyrant challenge uses the existing configured arena, boss balance, mob exclusion, one-challenger barrier, containment, reset, notification, and missing-location rules.
|
||||
- [x] An eligible opted-in participant, including the former Tyrant, may challenge for the vacant Tyrant role; an active Tyrant cannot enter any arena fight.
|
||||
- [x] Defeating the Tyrant challenge boss assigns the challenger as Tyrant with level zero, no purchases, and exactly one starting unlock choice.
|
||||
- [x] Completing the Tyrant challenge immediately permits the blue Vigilante challenge to open at the same location when the Vigilante role is vacant.
|
||||
- [x] Legacy pending Tyrant replacement state is cleared into an arena vacancy without granting a role.
|
||||
- [x] Pausing, resetting, restarting, reloading, and repeated or concurrent events cannot duplicate either role boss, challenger, barrier, or assignment.
|
||||
|
||||
## Related
|
||||
|
||||
- [Transfer and reset the Tyrant role](us-002-transfer-and-reset-tyrant.md)
|
||||
- [Handle inactivity and arena vacancies](us-010-handle-inactivity-and-selection.md)
|
||||
- [Claim the Vigilante role in the arena](us-019-claim-vigilante-in-arena.md)
|
||||
- [Tyrant game state machine](../concepts/game-state-machine.md)
|
||||
Reference in New Issue
Block a user