Files
spigot-base/design/user-stories/us-008-unlock-visitor-access.md
dmg 28dd5422d5
Release / release (push) Successful in 2m56s
CI / build (push) Successful in 1m35s
feat(teleport): add warmup particles and fading departure clouds
2026-09-06 21:11:24 -04:00

46 lines
3.5 KiB
Markdown

---
type: User Story
title: "US-008: Unlock Base IV visitor access"
description: Let players spend diamonds to permit controlled, cooldown-limited visitor teleports to their base.
status: done
---
# US-008: Unlock Base IV visitor access
As a **player with Base III**, I want to open my base to visitors so that other players can conveniently join me there under my control.
## Acceptance criteria
- [x] Visitor warm-ups share the nearby-visible, progressively denser floating particles used by home teleports.
- [x] Successful visitor teleports leave a two-second fading departure cloud; cancellation or failure stops emission without a departure cloud.
- [x] Effects are bounded and cleaned up on shutdown, with regression coverage preserving visitor timing, safety, and cooldowns.
- [x] Base IV requires Base III and an established base.
- [x] `/basesettings upgrade` offers the Base IV purchase for a configurable price that defaults to 128 diamonds, replacing `/base upgrade` and `/home upgrade`.
- [x] A successful purchase removes the complete price atomically from the player's direct inventory.
- [x] Insufficient funds, an invalid state, or a failed persistence operation does not consume any diamonds or grant Base IV.
- [x] `/basesettings visitors allowed` permits visitor access idempotently for a Base IV owner, and `/basesettings visitors blocked` blocks it idempotently.
- [x] Invalid visitor arguments show command usage, and `allowed` and `blocked` are offered through autocomplete.
- [x] The visitor-access preference persists across reconnects and restarts.
- [x] `/gotobase <owner>` autocompletes bases that the requesting player is currently eligible to visit.
- [x] `/visit <owner>` aliases `/gotobase <owner>` with identical autocomplete, including eligible bases whose owners are offline.
- [x] Enabled bases remain visitable while their owners are offline.
- [x] `/visit` and `/gotobase` require the visitor to be in the destination base's recorded world; cross-dimension requests are rejected before warm-up with a clear message and without consuming cooldown.
- [x] A visitor teleport uses the destination owner's current warm-up tier, but always requires at least a one-second stationary warm-up; `/visit` and `/gotobase` never teleport instantly.
- [x] Looking around is permitted, while movement between block coordinates, damage, teleportation, world change, death, logout, or a conflicting teleport cancels the visitor warm-up.
- [x] Cancellation or destination failure does not consume a visitor cooldown.
- [x] A safe destination is resolved at or near the owner's recorded base center.
- [x] Each visitor has an independent cooldown for each destination owner.
- [x] On successful teleport, the visitor cooldown duration is captured from the destination owner's current cooldown tier.
- [x] A later owner cooldown upgrade applies to future visits without rewriting a cooldown already in progress.
- [x] Visiting another base does not consume or modify the owner's personal `/base` cooldown or the visitor's personal `/base` cooldown.
- [x] Disabling visits prevents new requests but does not interrupt a teleport that has already completed.
## Related
- [US-005: Unlock Base III teleportation](us-005-unlock-base-teleportation.md)
- [US-006: Reduce the base teleport warm-up](us-006-reduce-teleport-warmup.md)
- [US-007: Reduce the base teleport cooldown](us-007-reduce-teleport-cooldown.md)
- [US-015: Unlock a Pocket Base](us-015-unlock-a-pocket-base.md)
- [US-016: Build and use Pocket Base portals](us-016-build-and-use-pocket-base-portals.md)