Commit graph

4 commits

Author SHA1 Message Date
61ff39cee0 fixed leaving game 2025-08-02 11:00:46 -05:00
ede3f6ec75 🎲 Peril Dice — Modular Game System for Second Life
Overview
Peril Dice is a multiplayer elimination game where each player selects numbers before a die is rolled. If the peril player’s number is rolled, they lose a life. Players are eliminated when they reach zero lives.

🔧 Features
✅ Player System
Max players: 10

Each player starts with 3 lives

Players can Join, Leave, or mark themselves Ready

The first player to join gets a Start Game button

The owner can join the game and also has a special Owner menu

🎲 Dice Scaling
Dice type is automatically chosen to ensure at least 3 picks per player

Dice types supported: d6, d12, d20, d30

Player Count	Dice Type
1–2	d6
3–4	d12
5–6	d20
7–10	d30

🧍 Test Players
Owner can add/remove test players (bots)

Test players rez stat floaters at offset positions to prevent overlap

Floater objects follow players and update in real time

🪟 HUD & Stat Floaters
Players receive a floating HUD showing:

Player name

Lives

Picks

Peril status or game state

📦 Modular Architecture
Separated scripts:

Main Controller: Handles core game logic

Dialog Handler: Manages pick dialogs

Dice Selector: Returns dice type based on player count

Stat Float Manager: Rezzes and updates floaters

Stat Float Object: Displays floating text per player

🕹️ Game Flow
Players touch the controller object to join the game

Once 2+ players have joined, the first player gets the option to Start Game

Dice type is selected automatically

Each player is prompted (in order) to select 3 numbers

After all picks are made:

The dice is rolled

The result is compared to each player’s picks

If the peril player’s number is rolled or no one picked it, the peril player loses a life

The system checks for eliminations and starts the next round

🧰 Admin Controls
Owner can:

Join or leave the game

Open a special Owner menu

Add/remove test bots

Reset the game

Debug current state (optional)
2025-08-02 00:18:45 -05:00
e7b853600a updated main and diolog for owner 2025-08-01 20:09:28 -05:00
fd5f35add8 Changelog: Peril Dice System
✅ [Added] Core Gameplay Logic
Turn-based number picking based on each player's remaining lives.

Dice roll system for the "peril" player via dialog prompt.

Automated peril player advancement and elimination for 0-life players.

Round transition system fully implemented.

⏱️ [Added] AFK Timeout System
10-minute inactivity timer with:

Warnings at 2, 5, and 9 minutes.

Auto-elimination after 10 minutes.

🔐 [Improved] Game Rules & Integrity
Blocked new players from joining once the game begins.

Implemented "Ready Check" for all players before start.

Enforced unique global number picks per round.

🛠️ [Added] Admin Tools
Owner-only debug dialog for:

Adding/removing test players.

Starting/resetting the game.

Testing dialogs and player picks.

"Leave Game" options for owner and all participants.

🔧 [Fixed] Syntax & Structural Issues
Resolved:

Mismatched braces and block closures.

Type mismatches (e.g., timeoutTimer).

Improper llParseString2List usage.

Stray placeholders like $1.

Removed redundant code and validated logic flow.

🧱 [Refactored] Function Structure
Renamed updatePlayerPick() to handlePlayerPick() for clarity.

Ensured all functions declare return types and include return 0; as required.

Declared variables at top for readability and compliance.

🔁 [Modularized] Code Architecture
Split pick dialog logic into Pick Dialog Handler script.

Created Roll Dialog Handler and merged into Roll and Confetti Module.

Replaced direct llDialog() calls with link messages for modularity.

🔗 [Integrated] Messaging & Effects
Main controller now uses MSG_SHOW_ROLL_DIALOG via link message.

Confetti effects tied to peril player elimination.

All dialog interactions now routed through modular link messaging.

🧪 [Tested & Validated] Game Flow
Verified:

Player joins/leaves.

Pick dialog with correct life-based limits (3L=1, 2L=2, 1L=3).

Dice roll outcomes and peril transitions.

Game reset and round restart functionality.

Implemented game state serialization and syncing.

⚙️ [Fixed] Loop & Variable Issues
Replaced reused loop variables (i, j) with unique names (loopI, loopJ, etc.).

Fixed broken loop logic and conditional scoping issues.

🧹 [Cleanup] Code Hygiene
Removed duplicate function definitions.

Ensured consistent naming and formatting across all modules.

Resolved scoping errors (e.g., ownerKey issue).

✅ [Current Status]
Scripts compile without errors.

All modules function as intended.

System ready for in-world testing.
2025-07-28 03:32:44 -05:00