feat: Enhance minigame effects and UI interactions
- Implemented LeaveMinigameQueueEffect to handle player removal from queues and runtime. - Added OpenMinigameQueueUIEffect to manage the opening of the minigame queue UI. - Introduced StartPlayerTimerEffect and StopPlayerTimerEffect for managing player timers and scoring. - Enhanced PlaceBlocksEffect with options for filling volumes and hollow placements. - Updated SpawnItemEffect to fix codec handling for item IDs. - Added MountPlayerEffect and DismountPlayerEffect for player interactions with NPCs. - Improved StartQueuedMinigameEffect to check player counts before starting games. - Added localization entries for new effects and UI elements. - Updated manifest to include HyUI as a dependency.
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# King of the Hill — Spawn Zone & Player Activation
|
||||
|
||||
Players are not automatically active when the game starts. They must enter the spawn zone, which triggers the activation lifecycle: inventory save, item giving, game mode change, and HUD display.
|
||||
|
||||
---
|
||||
|
||||
## What Activation Does
|
||||
|
||||
When `SetPlayerStatus ACTIVE` fires for a player, the runtime:
|
||||
|
||||
1. Saves their current inventory (if `SavePlayerInventory = true`, the default).
|
||||
2. Gives them their start items or assigned loadout (if any defined in the definition).
|
||||
3. Applies `RequiredGameMode` (`Adventure` in this tutorial).
|
||||
4. Shows the HUD (since `ShowHud = true`).
|
||||
|
||||
This only happens once per player per game. If the same player re-enters the spawn zone it is harmless — the runtime ignores duplicate ACTIVE requests.
|
||||
|
||||
---
|
||||
|
||||
## Spawn Zone Volume
|
||||
|
||||
Place this volume at the area where players begin the round — typically a platform or small room at the edge of the arena that all players pass through when the game starts.
|
||||
|
||||
**Volume type:** Enter trigger
|
||||
|
||||
**Tags:**
|
||||
|
||||
| Tag | Value |
|
||||
|---|---|
|
||||
| `MinigameId` | `King_Of_The_Hill` |
|
||||
| `MapId` | `Hillside` |
|
||||
|
||||
**Conditions:**
|
||||
|
||||
| Condition | Fields | Purpose |
|
||||
|---|---|---|
|
||||
| `PlayerInMinigame` | `MinigameId = King_Of_The_Hill` | Only fires for players who are actually in the runtime (not random passersby). |
|
||||
| `MinigamePhase` | `MinigameId = King_Of_The_Hill`, `Phase = ACTIVE` | Prevents accidental activation while players are still in the lobby countdown. |
|
||||
|
||||
**Effects:**
|
||||
|
||||
| Effect | Fields |
|
||||
|---|---|
|
||||
| `SetPlayerStatus` | `MinigameId = King_Of_The_Hill`, `Status = ACTIVE` |
|
||||
| `SetSpawnPoint` | `MinigameId = King_Of_The_Hill`, `DestinationId = 100,64,200` *(replace with your spawn coordinates)* |
|
||||
|
||||
> The `SetSpawnPoint` stores a respawn destination for each player. When a player dies during the game, the runtime automatically respawns them at their stored checkpoint. Replace `100,64,200` with the actual world coordinates of your spawn area center. You can also use the format `world_name,X,Y,Z` if the spawn is in a different world.
|
||||
|
||||
---
|
||||
|
||||
## How Players Get to the Spawn Zone
|
||||
|
||||
In a typical KOTH setup, players are somewhere in the arena or lobby when the game starts. You have two options:
|
||||
|
||||
**Option A — Players walk there.** The spawn zone is accessible from the lobby area. When the game starts and phase becomes `ACTIVE`, players walk through the spawn zone on their way into the arena. This is the simplest approach and works well when the lobby and arena are adjacent.
|
||||
|
||||
**Option B — Teleport on game start.** Add a `SignalPhaseStart=ACTIVE` signal volume (covered in `06-round-signals.md`) with a `RespawnPlayer` effect. This teleports all active players to their spawn on phase change.
|
||||
|
||||
For this tutorial, Option A is assumed. If using Option B, `RespawnPlayer` resolves the destination using the player's stored checkpoint from `SetSpawnPoint`, so the activation volume still needs to fire first. Consider placing the spawn zone between the lobby exit and the arena entrance so it is always traversed.
|
||||
|
||||
---
|
||||
|
||||
## Respawn on Death
|
||||
|
||||
Because `SetSpawnPoint` is called at activation, player deaths during the game automatically respawn at those coordinates. No additional setup is required for basic respawning.
|
||||
|
||||
If you want players to respawn with a delay or only when a specific condition is met, add a `RespawnPlayer` effect to a separate signal or death-event volume.
|
||||
Reference in New Issue
Block a user