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:
2026-06-11 17:17:54 -07:00
parent 67e70a71bd
commit 49bbd2b871
58 changed files with 3664 additions and 37 deletions
+14 -1
View File
@@ -18,7 +18,8 @@ Definition file: `Server/Minigames/Quick_Brawl.json`
"WinCondition": "HIGHEST_SCORE",
"RoundLengthSeconds": 120,
"CountdownSeconds": 5,
"AllowPvp": true
"AllowPvp": true,
...
}
```
@@ -28,6 +29,18 @@ Editor setup:
2. Add the `StartMinigame` effect.
3. Set `MinigameId` to `Quick_Brawl` using the asset picker.
## Activating Players
Players must be explicitly set to `ACTIVE` status before the activation lifecycle runs. This is what triggers inventory saving, start item giving, game mode change, and HUD display. Without a `SetPlayerStatus ACTIVE` effect, none of these happen.
A common pattern is a spawn-room trigger volume that all players enter when the game starts:
1. Create a trigger volume covering the spawn area.
2. Add `PlayerInMinigame` as a condition (`MinigameId = Quick_Brawl`, leave `PlayerId` blank).
3. Add `SetPlayerStatus` as an effect (`MinigameId = Quick_Brawl`, `Status = ACTIVE`, leave `PlayerId` blank).
The entering player is resolved from the trigger context, so leaving `PlayerId` blank activates whoever enters the volume.
## Score Zone
Definition file: `Server/Minigames/Hill_Points.json`