# ๐ŸŽฒ 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. ## Key Features ### ๐Ÿ† Visual Scoreboard System - **Real-Time Player Grid**: Visual scoreboard showing all players with profile pictures and hearts - **Profile Picture Integration**: Automatic avatar profile fetching from Second Life - **Heart Texture Display**: Visual life representation (3, 2, 1, 0 hearts) - **Instant Updates**: Hearts change immediately when lives are lost ### ๐ŸŽญ Enhanced Status Display - **Visual Status Actions**: Large status prim with custom textures for each game event - **Specific Status Types**: Direct Hit, No Shield, Plot Twist, Elimination, Victory, etc. - **Perfect Timing**: 8-second display time with protective delays to prevent overwriting ### ๐ŸŽฏ Comprehensive Leaderboard - **Persistent Win Tracking**: Player victories saved across sessions - **XyzzyText Display**: Professional 3-prim text system for leaderboard - **Automatic Sorting**: Top players by win count ### ๐ŸŽฎ Core Game Features - **๐ŸŽฏ Dynamic Player Management**: Players can join at runtime (owner and other avatars) - **๐Ÿค– Bot Support**: Add AI bots for testing and gameplay variety - **๐Ÿ“ฑ Floating HUD Display**: Real-time stats for each player - **๐ŸŽฎ Intelligent Dice Sizing**: Automatic dice size based on player count - **๐Ÿ”„ Ready State System**: Players must be ready before games start - **๐ŸŽญ Dramatic Messaging**: Immersive thematic announcements visible to all players - **๐ŸŽฒ Context-Rich Rolls**: Detailed dice information with type and result - **โšก Performance Optimized**: Reduced lag with selective particle effects - **๐Ÿ›ก๏ธ Robust Error Handling**: Comprehensive game state synchronization - **๐Ÿšซ Game Protection**: Prevents joining games in progress - **๐Ÿ“ Position Management System**: Coordinated movement of all game components ## Game Rules 1. **Setup**: 2-10 players join the game 2. **Ready Phase**: All players except starter must mark themselves ready 3. **Picking Phase**: Each player picks 1-3 numbers (based on peril player's remaining lives) 4. **Rolling Phase**: Peril player rolls the dice 5. **Resolution**: - If rolled number matches another player's pick โ†’ that player becomes new peril player (`โšก PLOT TWIST!`) - If peril player picked the rolled number โ†’ they lose a life (`๐Ÿฉธ DIRECT HIT!`) - If nobody picked the rolled number โ†’ peril player loses a life (`๐Ÿฉธ NO SHIELD!`) 6. **Elimination**: Players with 0 lives are eliminated 7. **Victory**: Last player standing wins! ๐Ÿ† ## How to Play ### For Owner - **Touch object** โ†’ Access owner menu - **Add Bot** โ†’ Add AI players for testing - **Start Game** โ†’ Begin when all players are ready - **Reset Game** โ†’ Reset to initial state - **Manage Picks** โ†’ View/modify player selections ### For Players - **Touch object** โ†’ Register and join game - **Ready/Not Ready** โ†’ Toggle your ready state - **Pick Numbers** โ†’ Select your numbers when prompted - **Roll Dice** โ†’ Roll when you're the peril player ## Architecture The system uses a modular LSL architecture with inter-script communication: - **Main Controller**: Core game logic and state management - **Dialog Handlers**: User interface and input processing - **Roll Module**: Dice rolling and confetti effects - **Bot Manager**: AI player behavior - **Floater Manager**: Floating HUD display management - **Game Helpers**: Utility functions and dice type calculation ## Dice Scaling Dice type is automatically chosen to ensure at least 3 picks per player: | Player Count | Dice Type | |--------------|-----------| | 1โ€“2 | d6 | | 3โ€“4 | d12 | | 5โ€“6 | d20 | | 7โ€“10 | d30 | ## Recent Improvements (v2.4.0) ### ๐Ÿ“ Position Management System - **Master-Follower Architecture**: Controller object manages position of all game components - **Automatic Position Sync**: Scoreboard, leaderboard, and displays move with main controller - **Config-Based Setup**: Position offsets and rotations defined in notecard configuration - **Position Reset Tools**: Easy recalibration system for repositioning game components - **Coordinated Movement**: All objects maintain relative positions when game is moved ### ๐Ÿงน Production Code Cleanup - **Debug Code Removal**: Complete removal of all debug logging and test messages for production deployment - **Syntax Error Fixes**: Resolved critical syntax errors including missing braces in conditional blocks - **Code Optimization**: Cleaner, more maintainable codebase without development artifacts - **Performance Enhancement**: Reduced script memory usage and execution overhead ### ๐Ÿ† Visual Scoreboard Revolution (v2.3.0) - **Real-Time Visual Display**: Complete visual overhaul with player grid showing profile pictures and hearts - **Instant Heart Updates**: Hearts change immediately when lives are lost, before any dialogs appear - **Profile Picture Fetching**: Automatic HTTP requests to get actual Second Life avatar pictures - **0-Hearts Display**: Shows elimination sequence visually before player removal ### ๐ŸŽญ Enhanced Status System (v2.3.0) - **Specific Status Types**: Separate textures for Direct Hit, No Shield, Plot Twist, Elimination, Victory - **Perfect Timing**: 8-second display with 2-second protective delays prevent status overwriting - **Visual Impact**: Large action prim displays current game status with custom textures ### ๐ŸŽฏ Comprehensive Leaderboard (v2.3.0) - **Persistent Win Tracking**: Player victories saved across game sessions using linkset data - **Professional Display**: XyzzyText 3-prim system for clean leaderboard presentation - **Flexible Reset Options**: Separate commands for game reset, leaderboard reset, or complete reset ### ๐Ÿ”ง Critical Fixes - **Heart Update Timing**: Fixed hearts not updating until after next-turn dialog - **Status Conflicts**: All status messages now have protective delays to prevent overwriting - **Victory/Elimination Flow**: Proper 6.4-second delay between elimination and victory status - **Syntax Errors**: Fixed missing braces and other LSL compilation issues ## Version **Current Version**: 2.4.0 **Last Updated**: August 8, 2025 **Status**: Production Ready - Debug-free codebase with comprehensive visual systems --- ## Original Game Rules Credit Game rules were created by **Noose the Bunny** (djmusica28) in Second Life. This automated version builds upon their original manual gameplay concept. ### Original Manual Rules Summary: - Each player starts with 3 lives - Players pick numbers based on peril player's remaining lives: - 3 Lives โ†’ Pick 1 number - 2 Lives โ†’ Pick 2 numbers - 1 Life โ†’ Pick 3 numbers - Roll dice to determine outcome - Last player with lives wins --- *Peril Dice provides hours of entertainment for Second Life communities with its blend of strategy, luck, and social interaction!*