Commit graph

109 commits

Author SHA1 Message Date
b28970ea8e some floater and scoreboard fixes 2025-08-13 14:32:26 -05:00
f06108d99a fixed readme 2025-08-12 12:10:10 -05:00
4857f4f436 fix shell compatibility and clean up jenkins pipeline 2025-08-12 06:50:33 -05:00
b85cd4cba0 fix jenkins conditional stages using GIT_BRANCH environment variable 2025-08-12 06:46:24 -05:00
c7bb6dae6d add branch debugging to jenkins pipeline 2025-08-12 06:41:45 -05:00
46d4c66dbc fix jenkins branch detection for conditional stages 2025-08-12 06:36:48 -05:00
00c849c208 removing files that are not needed anymore 2025-08-12 06:28:53 -05:00
571e324dc7 on-rez added for reet, itwas missing when it should of been thre 2025-08-12 06:14:23 -05:00
f60d53c78e ## [2.8.0] - 2025-08-12 2025-08-12 02:25:32 -05:00
23d02080ca dice fix 2025-08-10 21:00:24 -05:00
11a4888566 Make Discord webhook optional to avoid credential errors
- Comment out NOTIFICATION_WEBHOOK credential until configured
- Pipeline should now run without credential errors
- Notifications can be added later when webhook is set up
2025-08-10 09:25:46 -05:00
cae6d16699 Fix Jenkins pipeline workspace paths and cleanWs error
- Remove cleanWs from post section to avoid context errors
- Fix all workspace paths to use current directory (.)
- Pipeline should now run properly on Jenkins agent
2025-08-10 09:24:01 -05:00
0ababdce92 Add Jenkins CI/CD pipeline for LSL automation
- Automatic LSL syntax validation on commits
- Release package generation for main branch
- Documentation updates
- Discord/Slack notifications (optional)
- Secure builds using dedicated agent
2025-08-10 09:21:30 -05:00
7f7302581a Add LSL development tools and VS Code configuration 2025-08-10 07:57:10 -05:00
d805c401d9 ## [2.6.0] - 2025-08-09 2025-08-09 21:49:27 -05:00
9f918be0c9 ## [2.6.0] - 2025-08-09 2025-08-09 21:01:57 -05:00
9e480e6bcc no longer need config 2025-08-09 10:40:38 -05:00
d53a557e43 added rules 2025-08-09 10:22:45 -05:00
63b100efa0 ## [2.6.0] - 2025-08-09 2025-08-09 09:30:15 -05:00
680473cb0e ## [2.5.0] - 2025-08-08 2025-08-08 05:13:39 -05:00
5c87a51fad ## [2.5.0] - 2025-08-08 2025-08-08 04:58:44 -05:00
0e713136d2 ## [2.4.0] - 2025-08-08 2025-08-07 19:54:36 -05:00
f8d711d3c1 ## [2.3.0] - 2025-08-05 2025-08-05 21:58:20 -05:00
0eceef2227
Rename SL_ready_element_5.png to victory.png 2025-08-04 10:18:14 -05:00
2e9d70f944
Rename SL_ready_element_3.png to Default player profile pick.png 2025-08-04 10:17:50 -05:00
86a9e61294
Rename SL_ready_element_2.png to Elimination Time.png 2025-08-04 10:17:14 -05:00
ed5d9098d9
Rename SL_ready_element_6.png to Confetti.png 2025-08-04 10:16:54 -05:00
52d030bb55
Rename SL_ready_element_7.png to Punishment time.png 2025-08-04 10:16:37 -05:00
e8aaf3eed6
Rename SL_ready_element_1.png to Title with start on it.png 2025-08-04 10:16:15 -05:00
438dddf7d4 fix images 2025-08-04 09:32:17 -05:00
c0130069b5 remove one image 2025-08-04 09:10:20 -05:00
99f20285a2 heart hud images 2025-08-04 09:08:41 -05:00
ebb85fd17b images 2025-08-04 08:08:39 -05:00
db2cacdf11
Update CHANGELOG.md
updated dates
2025-08-03 23:53:36 -05:00
723a1d1ecd Merge branch 'main' of https://github.com/RebeccaNod1/Peril 2025-08-03 23:50:17 -05:00
4069379bf1 ## [2.2.0] - 2025-08-04 2025-08-03 23:47:46 -05:00
ca0763bf22
Update README.md
don't need installation
2025-08-03 04:43:36 -05:00
494f01c7bf # Changelog
All notable changes to Peril Dice will be documented in this file.

## [2.1.0] - 2025-01-08

### ✨ Major Features Added
- **Ready State System**: Players must mark themselves ready before games can start
- **Game Protection**: Prevents players from joining games in progress
- **Performance Optimization**: Reduced lag by limiting confetti to wins only
- **Enhanced Bot Intelligence**: Improved bot behavior and duplicate number avoidance

### 🔧 Core Fixes
- **Complete Game Flow**: Fixed end-to-end gameplay from start to finish
- **Elimination Logic**: Proper handling of player elimination and game continuation
- **Win Condition**: Fixed victory detection and game ending
- **Data Synchronization**: Resolved corruption in pick data between scripts
- **Peril Player Assignment**: Fixed race conditions in peril player transitions

### 🎮 Gameplay Improvements
- **Dynamic Picking**: Number of picks now properly based on peril player's lives
- **Duplicate Prevention**: Enhanced system to prevent duplicate number selection
- **Dialog Pagination**: Improved number selection interface for d30 dice
- **Floater Updates**: Real-time HUD updates throughout gameplay
- **Bot Continuation**: Bots now properly continue games when humans are eliminated

### 🛠️ Technical Enhancements
- **Modular Communication**: Improved inter-script messaging system
- **Error Handling**: Comprehensive validation and error recovery
- **Memory Management**: Better floater cleanup and channel tracking
- **Data Encoding**: Fixed CSV conflicts with semicolon encoding system
- **State Management**: Robust game state synchronization across modules

### 🐛 Bug Fixes
- Fixed missing pick dialogs after game events
- Resolved duplicate message issues between scripts
- Fixed lives reset problems between rounds
- Corrected floater display inconsistencies
- Fixed bot confusion during player elimination
- Resolved pick data corruption issues
- Fixed peril player variable sync problems

### ⚡ Performance
- Removed confetti from life loss (keeping only victory confetti)
- Optimized debug output to reduce lag
- Improved floater management efficiency
- Enhanced bot processing speed

## [2.0.0] - 2024-12-XX

### 🎉 Initial Modular Release
- **Modular Architecture**: Separated functionality into specialized scripts
- **Bot System**: Added AI players for testing and gameplay variety
- **Floating HUD**: Real-time player statistics display
- **Dynamic Dice**: Automatic dice sizing based on player count
- **Player Management**: Runtime player joining and leaving
- **Owner Controls**: Administrative functions for game management

### 🎲 Core Game Features
- **Pick System**: Number selection with validation
- **Rolling Mechanism**: Automated dice rolling with visual effects
- **Life Management**: 3-life system with elimination
- **Peril Tracking**: Dynamic peril player assignment
- **Victory Conditions**: Last player standing wins

### 🏗️ Architecture
- **Main Controller**: Central game logic and state management
- **Dialog Handlers**: User interface and input processing
- **Roll Module**: Dice mechanics and particle effects
- **Bot Manager**: AI player behavior and automation
- **Floater Manager**: HUD display coordination
- **Game Helpers**: Utility functions and calculations

## [1.0.0] - 2024-XX-XX

### 🌟 Original Release
- Basic Peril Dice game implementation
- Manual gameplay mechanics
- Simple player tracking
- Basic dice rolling functionality

---

## Development Notes

### Known Issues
- **Bot Race Condition**: Bots may occasionally pick duplicate numbers when triggered simultaneously
- **Debug Output**: Extended games may experience minor lag from comprehensive logging

### Future Enhancements
- Serialized bot picking to eliminate race conditions
- Configurable debug levels
- Additional game modes and variants
- Enhanced visual effects and animations

### Credits
- **Original Game Design**: Noose the Bunny (djmusica28) - Second Life
- **Automation & Development**: Enhanced for automated gameplay
- **Architecture**: Modular LSL system for scalability and maintainability
2025-08-03 04:38:55 -05:00
61ff39cee0 fixed leaving game 2025-08-02 11:00:46 -05:00
d96b92a989 new bot manager 2025-08-02 10:00:14 -05:00
7e849d57c7 fixed debugger beeing dupped somehow 2025-08-02 00:22:02 -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
79be943fec // === Game Helper Functions Module (Max 10 players) ===
// This version chooses a dice size based on the number of players,
// ensuring at least three numbers are available per player.
2025-08-01 19:56:25 -05:00
445c466554 made max 10 lives 2025-08-01 19:45:26 -05:00
ef77df7e94 renamed floater manager to match what i have in sl 2025-07-28 03:40:23 -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
4ffd89d03c deleted extra stuff 2025-07-26 04:52:09 -05:00
917448f2d3 added a diagram 2025-07-26 04:50:27 -05:00
89a364d2ec Summary of Today’s Work:
Issue Identified:

The main issue was that the floater was showing 0 as the player's pick even after they made a selection, and the correct pick was not being reflected in the float.

Steps Taken:

Improved Data Synchronization: We ensured that the picksData list, which holds player choices, was properly updated and synchronized across all parts of the system.

State Serialization: The game state, including updated picksData, was serialized correctly using the serializeGameState() function. This ensured that the floater was aware of the new state whenever a player's pick changed.

Immediate Float Updates: After updating a player's pick, we immediately sent the new game state (gameSync) to all linked objects to update their floats, ensuring the pick was reflected in the UI.

Key Modifications:

Main Peril Dice Controller: We improved the way we updated picksData and immediately synchronized this update with the floater using MSG_SYNC_GAME_STATE.

StatFloat: Adjustments were made to handle receiving and displaying updated pick data, ensuring that picks were displayed correctly on the float after each update.

Dialog Handling: Proper dialogs were shown to players for pick choices, and feedback on their picks was sent back to update the floats in real-time.

Outcome:

The game now correctly updates and displays the player’s picks on their respective floats immediately after making a choice.

The picks are reflected in the logs as well, with the correct updated pick being shown rather than 0.

Final Result:

The issue of picks not being displayed correctly has been resolved, and the flow of data between the scripts (game state synchronization, float updates, etc.) is working as intended.
2025-07-26 03:52:29 -05:00