Files
spigot-tyrant/design/log.md
T
dmg 0371337a3e
Release / release (push) Successful in 3m7s
CI / build (push) Successful in 1m15s
feat(vigilante): add followers and combat scaling
2026-08-14 23:01:10 -04:00

9.0 KiB

type, title, description
type title description
Log Spigot Tyrant Design Log Chronological record of material decisions affecting the Spigot Tyrant design.

Spigot Tyrant Design Log

2026-08-14 — Vigilante and Followers completed

  • Completed US-008 with /vigilante invitation, acceptance, dismissal, and leave flows while preserving independent Tyrant-side class assignments.
  • Added Tyrant/Vigilante combat tracking and continuously refreshed Strength and Resistance based on living same-world Followers within the configurable 50-block range, capped at Strength V and Resistance IV by default.
  • Every Vigilante death now awards progression only to the Tyrant killer, clears Followers, and applies normal recently-active replacement with previous-holder fallback.
  • Verified membership, dual alignment, scaling and caps, role maintenance, command metadata, and death/progression components with the Gradle suite.

2026-08-14 — Vigilante and Follower implementation started

  • US-008 begins with test-first invitation membership, death reroll and Tyrant reward integration, combat tracking, and proximity-scaled capped effects.

2026-08-14 — Participation completed

  • Completed US-011 with /tyrant status, optout, optin, and confirmed relinquish flows plus comprehensive join messages for lifecycle, roles, classes, abilities, and cooldowns.
  • Opt-out clears ordinary classes and Follower membership, persists until the player explicitly opts back in, and enforces the configurable seven-day unpaused waiting period.
  • Central role holders must safely relinquish first; Tyrant relinquishment performs full succession and Vigilante relinquishment performs a normal Vigilante reroll.
  • Updated all assignment and candidate paths to exclude opted-out players and verified status, persistence, cleanup, cooldown, and relinquishment behavior with the Gradle suite.

2026-08-14 — Participation implementation started

  • US-011 begins with test-first opt-out/opt-in state, seven-day re-entry gating, safe role relinquishment guidance, and complete join status messages.

2026-08-14 — Role maintenance completed

  • Completed US-010 with configurable periodic role maintenance, exact 48-hour inactivity handling, and 24-hour recently-active candidate filtering.
  • Added online confirmation for pending roles, 24-hour expiry and reroll, former-holder fallback rules, vacant-role retries, opt-out filtering, and Tyrant/Vigilante conflict prevention.
  • Tyrant inactivity uses full reign succession cleanup; Vigilante inactivity clears only that role's Followers before replacement.
  • Verified confirmation, expiry reroll, Follower cleanup, exact inactivity boundary, full Tyrant succession, and pause-safe scheduler integration with the Gradle suite.

2026-08-14 — Role maintenance implementation started

  • US-010 begins with test-first inactivity replacement, pending confirmation and expiry, conflict-safe candidate retries, and pause awareness.

2026-08-14 — Tyrant succession completed

  • Completed US-002 with player-killer transfer, recent-player environmental succession, former-holder avoidance, pending offline confirmation, and distinct replacement Vigilante selection.
  • Tyrant death clears all classes, Followers, cooldowns, item readiness, purchases, levels, and choices before granting the successor one starting choice.
  • Added death-event integration, server announcements, and a scoreboard-team-backed red Tyrant name and glowing outline that is restored on login and removed on pause or shutdown.
  • Verified succession attribution, random exclusion, reign cleanup, role separation, death integration, and red presentation with the Gradle suite.

2026-08-14 — Tyrant succession implementation started

  • US-002 begins with test-first killer and environmental succession, reign-wide cleanup, replacement Vigilante selection, and red Tyrant presentation.

2026-08-14 — Administrative lifecycle completed

  • Completed US-001 with permission-gated /tyrantadmin start, status, pause, resume, and confirmed reset operations.
  • Initial Vigilantes may be assigned explicitly or selected among eligible recently active players, with offline selections persisted as pending confirmations.
  • Pause/resume preserves progression and assignments, shifts every cooldown, participation, inactivity, and pending-selection deadline, and invokes managed effect suppression/restoration.
  • Added detailed operator status output and verified lifecycle, timer shifting, permissions, confirmation safety, candidate filtering, metadata, and effect hooks with the Gradle suite.

2026-08-14 — Administrative lifecycle implementation started

  • US-001 begins with test-first game start, pause/resume deadline freezing, permission-gated administration, inspection, and confirmed reset behavior.

2026-08-14 — Tyrant class assignment completed

  • Completed US-004 with /tyrant assign <class> <player>, purchased-class authorization, UUID state, one holder per class, and one Tyrant-side class per player.
  • Preserved dual alignment so Vigilantes and Followers can hold a Tyrant-side class, while rejecting the Tyrant and opted-out targets.
  • Added reassignment and reign cleanup for class cooldown/item state, online assignment/removal notices, and login control reminders.
  • Verified assignment constraints, dual alignment, cleanup, commands, notifications, and reminders with the Gradle test suite.

2026-08-14 — Tyrant class assignment implementation started

  • US-004 begins with test-first purchased-class authorization, one-holder constraints, dual alignment, reassignment cleanup, and reign-wide removal.

2026-08-14 — Tyrant progression completed

  • Completed US-003 with exact Tyrant-on-Vigilante kill attribution, level and choice rewards, pause guards, one-time purchases, and reign reset behavior.
  • Added /tyrant choices status output and /tyrant buy <unlock> with durable atomic state updates and clear failure feedback.
  • Verified progression, duplicate purchase, authorization, paused-state, reset, command presentation, metadata, and persistence behavior with the Gradle test suite.

2026-08-14 — Tyrant progression implementation started

  • US-003 begins with test-first kill attribution, one-time unlock purchases, and player-visible choice status.

2026-08-14 — Configuration and persistence completed

  • Completed US-012 with validated defaults for ranges, timers, effects, items, messages, and mob restrictions, including runtime Bukkit section parsing.
  • Added immutable lifecycle and player state for roles, dual-alignment classes, progression, participation, cooldowns, bound items, and captured mobs.
  • Added RFC 3339 UTC timestamp persistence, paused deadline shifting, atomic YAML replacement, invalid-record rejection, unknown-field preservation, periodic saves, and shutdown saves.
  • Verified all state, settings, bundled configuration, corruption, forward-compatibility, and pause-time tests with ./gradlew clean check jar.

2026-08-14 — Configuration and persistence implementation started

  • US-012 begins with test-first validated defaults, immutable UUID-keyed domain state, paused-time-aware clocks, and defensive atomic YAML persistence.

2026-08-14 — Build and release foundation completed

  • Completed US-013 with a Java 17 Gradle build, Spigot 26.2 API, strict compiler linting, JUnit 5 and Mockito dependencies, plugin metadata, and a minimal plugin entrypoint.
  • Added Gitea push and pull-request CI, conventional-commit validation, development artifacts, semantic versioning, and versioned Gitea release assets modeled on ../spigot-base/.
  • Verified ./gradlew clean check jar, a release-version 1.2.3 JAR and embedded plugin version, workflow delivery settings, and OKF conformance.

2026-08-14 — Build and release implementation started

  • Approved implementation begins with US-013 and a test-driven Java 17, Gradle, Spigot, and Gitea Actions foundation modeled on ../spigot-base/.

2026-08-14 — Initial game design

  • The game has one Tyrant and one Vigilante, with Followers aligned to the Vigilante and Assassin, Fixer, and Tamer classes assigned by the Tyrant.
  • A player who kills the Tyrant becomes the next Tyrant; a Tyrant death without a player killer causes random succession among recently active eligible players.
  • Every Tyrant death clears all class and Follower assignments and resets the former Tyrant's reign progression.
  • Every Vigilante death rerolls the role among eligible players active in the preceding 24 hours. The previous Vigilante is reused only when no other eligible non-Tyrant player exists.
  • A Tyrant levels and earns one unlock choice only by personally killing the Vigilante.
  • Class abilities use named bound items where appropriate. Consumed cooldown items return when ready, and /tyrant item recovers missing ready items.
  • The Tamer has no cooldown and uses a named fishing rod plus a separate captured-mob item.
  • Game timers freeze while administratively paused.
  • The project will follow the Java 17, Gradle, testing, Gitea CI, and semantic-release structure demonstrated by ../spigot-base/.