891 lines
55 KiB
Text
891 lines
55 KiB
Text
PERIL DICE CHANGELOG
|
|
===================
|
|
|
|
All notable changes to Peril Dice are documented in this file.
|
|
|
|
[3.2.6] - 2026-04-05
|
|
====================
|
|
|
|
🎰 HYBRID HUD EVOLUTION
|
|
- Personalized Gaming UI: Human players now automatically receive a temporary, Experience-authorized HUD (Final Girlz I.N.C.) snapping to Center 2.
|
|
- Spectator AI Visibility: Bots continue to rez in-world floaters for public visibility.
|
|
- Direct-Target Signaling: Switched to llRegionSayTo(avKey, ...) for 100% reliable cleanup delivery.
|
|
- Auto-Cleanup Handshake: Uses llDetachFromAvatar() for instantaneous HUD removal without inventory clutter.
|
|
- Root-Key Unification: All channel calculations now use the Root Link Key (llGetLinkKey(1)).
|
|
|
|
🛡️ EXPERIENCE SENTINEL (v7.3)
|
|
- Professional Polish: Silenced redundant diagnostic alerts to provide a clean, single-source verification experience on blocked land.
|
|
- Key-Scoped Diagnostic: Replaced unreliable agent-probes with definitive llAgentInExperience(llGetOwner()) logic, providing instantaneous land-readiness results for the "Final Girlz I.N.C." experience.
|
|
- Direct-Denial Capture: Integrated the experience_permissions_denied event handler as a silent watchdog to catch and report XP_ERROR_NOT_PERMITTED_LAND error codes.
|
|
- Touch-to-Diagnose: Owners can touch the board to trigger a fresh Sentinel check, bypassing inventory rez-lag.
|
|
|
|
[3.2.0] - 2026-04-05
|
|
====================
|
|
|
|
🛡️ SYNC SANCTITY (ENGINE CORE)
|
|
- Master Ledger Protocol: Refactored the core synchronization engine to use the Main_Controller as the single source of truth for all player data.
|
|
- Ghost Heal Elimination: Permanently resolved the life-count desync between modules by implementing a unified damage reporting system (MSG_UPDATE_LIFE).
|
|
- Victory Status Lock: Added a victoryInProgress semaphore to protect the "Ultimate Victory" banner from being overwritten.
|
|
- Furware Compatibility Patch: Switched to high-reliability ASCII === banners for status displays.
|
|
|
|
🎰 VIRTUALIZED SCOREBOARD
|
|
- 3-Column Grid Management: Re-organized Rank, Name, and Win/Loss records into a professional multi-column leaderboard format.
|
|
- Dynamic Slot Hiding: Implemented automatic Alpha 0.0 (Invisibility) for unused player slots.
|
|
- Diagnostic Toolset: Added /1 testx (Show All) and /1 clearx (Reset Alpha) for layout verification.
|
|
|
|
🏹 HUMAN-BOT PARITY
|
|
- Multi-Delimiter Parser: Refactored pick-string analysis to support comma, semicolon, pipe, and space.
|
|
- Reconnect Resilience: Enhanced MSG_SYNC_GAME_STATE listeners for immediate state recovery.
|
|
|
|
[3.1.0] - 2026-04-04
|
|
====================
|
|
|
|
🔍 DYNAMIC LINK DISCOVERY SYSTEM
|
|
- Architecture Decentralization: Eliminated all hardcoded link indices across 15+ scripts. Systems now perform an automated "Link Discovery" scan on startup and on_rez.
|
|
- Name-Based Mapping: Implemented a robust pattern-matching system (Scoreboard:0:0, profile:R:C) to identify and bind to links regardless of their link-order in the set.
|
|
- Improved Resilience: Resolved persistent "Previously declared within scope" errors and stabilized inter-script communication during region crossings and teleports.
|
|
|
|
🧩 UNIFIED CONSTANTS & CENTRALIZED LOGIC
|
|
- Centralized Peril_Constants.lsl: Shifted all system settings, message IDs, and macros to a single, shared constants file for 100% project consistency.
|
|
- Pre-Processor Debugging: Implemented a global dbg() macro system. Debug logging can now be toggled board-wide with a single switch, significantly reducing production bytecode size.
|
|
|
|
🎭 FURWARE TEXT MESH MIGRATION
|
|
- Visual Display Overhaul: Fully migrated the Dice Display and Leaderboard from legacy prim-based XYText to modern mesh-integrated FURWARE Text.
|
|
- Sync Reliability: New bridge scripts handle real-time data distribution to the FURWARE master, ensuring 0ms delay in visual updates.
|
|
- Performance Optimization: Reduced prim texture-flipping overhead by switching to mesh-offset mapping.
|
|
|
|
🧠 COMPILER & EXECUTION STABILITY
|
|
- Scope Refactoring: Moved all loop variable declarations (refreshI, glowI, etc.) to the top-level of their respective functions to ensure compatibility with strict LSL compiler versions.
|
|
- Logic Robustness: Replaced continue and range-check based validation with explicit "link-found" if blocks, preventing infinite loops and scope errors.
|
|
- Mismatched Variable Fixes: Resolved inconsistent renaming of local variables in the Scoreboard Manager's refresh logic.
|
|
|
|
[3.0.0] - 2026-03-24
|
|
====================
|
|
|
|
📦 COMMERCIAL CASPERVEND INTEGRATION
|
|
- Professional Delivery: Transitioned from the custom GitHub updater to the industry-standard CasperVend delivery system.
|
|
- Legacy Code Removal: Completely stripped the Update_Receiver, Update_Checker, and Peril_Dice_Updater systems.
|
|
- Secure Distribution: Game board and standalone scripts now fully compliant with CasperVend "No Modify/No Transfer" security requirements.
|
|
|
|
🧠 MACRO MEMORY OPTIMIZATION
|
|
- Pre-Processor Directives: Implemented a global DEBUG_LOGS pre-processor macro across core logic scripts.
|
|
- Bytecode Reduction: Converted over 170 verbose llOwnerSay debug statements to a macro, reducing compiled bytecode size.
|
|
- 10-Player Load Stability: Freed critical script memory within Main Controller, Game Manager, and Dialog Handler to ensure rock-solid stability during maximum load.
|
|
|
|
🏆 EXPERIENCE-BASED LEADERBOARD
|
|
- Persistent Storage: Leaderboard data is now stored in Second Life Experience Keys (KVP), ensuring lifetime persistence of player statistics.
|
|
- Region Independence: Player wins and losses are tracked globally, surviving object resets and region changes.
|
|
|
|
🎨 Z-FIGHTING & ALIGNMENT FIXES
|
|
- Initialization Stability: Patched Scoreboard Manager, Leaderboard Communication, and Dice Bridge with on_rez auto-resets to guarantee synchronized texture deployment.
|
|
- Microscopic Position Offsets: Resolved persistent Z-fighting flickering on custom UI elements by applying meticulous microscopic local axis offsets (+0.005m).
|
|
|
|
[2.8.7] - 2026-03-23
|
|
====================
|
|
|
|
🔄 GITHUB UPDATE SYSTEM
|
|
- In-World Update Checker: Revolutionary Update_Checker.lsl script provides direct GitHub integration for releases.
|
|
- Enhanced LinkScanner System: Complete 84-prim analysis tools via Enhanced_LinkScanner.lsl for validating linksets.
|
|
- Zero-Infrastructure Updates: Automatically detects and fetches latest game scripts using raw GitHub downloads.
|
|
|
|
[2.8.6] - 2025-09-16
|
|
====================
|
|
|
|
🏆 LEADERBOARD SORTING ENHANCEMENT
|
|
- Enhanced Tie-Breaking: Fixed leaderboard sorting to properly handle players with identical win counts
|
|
* Before: Players with same wins (e.g., 5 wins each) appeared in random/inconsistent order
|
|
* After: Players with same wins are sorted by losses ascending (fewer losses = better rank)
|
|
* Example: Player A (5W/2L) now ranks higher than Player B (5W/3L) with same wins but more losses
|
|
* Fair Ranking: Ensures consistent, logical player rankings that reflect overall performance
|
|
- Multi-Level Sorting: Implemented compound sorting key with wins primary, losses secondary
|
|
* Primary Sort: Wins descending (higher wins = better rank)
|
|
* Tiebreaker Sort: Losses ascending (lower losses = better rank among tied players)
|
|
* Technical: Uses padded numeric strings for reliable multi-level sorting in LSL
|
|
- LSL Compliance: Fixed variable declaration issues to ensure proper script compilation
|
|
* Resolved: Multiple variable redeclaration errors in sorting functions
|
|
* Enhanced: Proper LSL variable scoping throughout leaderboard management code
|
|
|
|
🏆 WINNER GLOW CELEBRATION SYSTEM
|
|
- Victory Visual Enhancement: Added comprehensive winner celebration with green glow effects
|
|
* Scoreboard Glow: Winner's profile picture and hearts display bright green glow with green tint
|
|
* Floater Glow: Winner's floating display shows green glow with victory text "✨ ULTIMATE VICTORY! ✨" and "🏆 ULTIMATE SURVIVOR 🏆"
|
|
* Visual Priority: Winner glow overrides peril glow - green takes priority over yellow during victory
|
|
* Clear Recognition: Eliminated players show red X markers while winner gets celebration spotlight
|
|
- Extended Victory Display: 24-second timer delay before game reset allows players to appreciate the winner
|
|
* Before: Winner declared → Immediate reset → No time to see who won
|
|
* After: Winner declared → Green glow celebration → 24 seconds to admire → Then reset
|
|
* User Experience: Proper victory moment with visual feedback before returning to lobby
|
|
|
|
🎨 ENHANCED VISUAL FEEDBACK SYSTEM
|
|
- Improved Glow Colors: Enhanced scoreboard glow system with proper color tinting
|
|
* Winner Glow: Bright green glow + green color tint for unmistakable victory recognition
|
|
* Peril Glow: Yellow glow + yellow color tint for clear peril player identification
|
|
* Visual Clarity: Replaced generic white glow with distinct colored glows for better gameplay feedback
|
|
- Floater Victory Detection: Smart winner detection in floating displays
|
|
* Automatic Detection: Floaters automatically detect when only one player remains alive
|
|
* Victory Text: Winner's floater displays celebration text instead of standard game info
|
|
* Consistent Experience: Both scoreboard and floater systems celebrate the winner simultaneously
|
|
|
|
🔧 TIMER SYSTEM OPTIMIZATION
|
|
- Victory Delay Timer: Added dedicated timer mode for victory celebration delays
|
|
* Memory Efficiency: Removed unused timeout system to free up memory resources
|
|
* Clean Architecture: Streamlined timer system focuses on essential functionality
|
|
* Reliable Operation: Victory display timing works consistently without interference from other systems
|
|
- Message Communication Enhancement: Improved winner glow message handling
|
|
* Scoreboard Integration: Added proper MSG_UPDATE_WINNER message constant for clean communication
|
|
* Floater Integration: Enhanced floater update system to trigger victory displays
|
|
* Synchronized Effects: Both display systems receive winner updates simultaneously
|
|
|
|
🎮 USER EXPERIENCE IMPROVEMENTS
|
|
- Victory Celebration: Clear winner recognition with proper visual feedback
|
|
- Extended Appreciation Time: 24 seconds to see and congratulate the winner before reset
|
|
- Visual Hierarchy: Clean priority system - Winner (green) > Peril (yellow) > Eliminated (red X)
|
|
- Consistent Display: Winner celebration works on both scoreboard and personal floater displays
|
|
|
|
📊 SYSTEM PERFORMANCE
|
|
- Memory Optimization: Removed unused timeout system components saving memory
|
|
- Efficient Messaging: Clean message routing for winner glow effects
|
|
- Timer Efficiency: Dedicated victory timer prevents conflicts with other timing systems
|
|
|
|
🎯 IMPACT SUMMARY
|
|
- Before: Winners were announced but no visual celebration - immediate reset gave no recognition
|
|
- After: Winners get bright green glow celebration on both scoreboard and floaters with 24 seconds of recognition
|
|
- Player Satisfaction: Proper victory moment makes winning feel rewarding and celebrated
|
|
- Visual Polish: Professional-grade visual feedback system enhances the competitive gaming experience
|
|
|
|
[2.8.5] - 2025-09-15
|
|
====================
|
|
|
|
🚨 MEMORY OPTIMIZATION & ARCHITECTURE CLEANUP
|
|
|
|
🧠 MEMORY OPTIMIZATION & DEAD CODE CLEANUP
|
|
- UpdateHelper.lsl Elimination: Completely removed vestigial UpdateHelper script that was consuming memory but providing no functionality
|
|
* Issue: 204-line script existed but was never actually called - pure dead code consuming ~41KB memory
|
|
* Fix: Removed UpdateHelper.lsl file and all supporting infrastructure from Main Controller
|
|
* Memory Impact: Main Controller memory usage improved from ~83.8% to 81.4% (2.4 percentage point reduction)
|
|
* Cleaned Up: updateNewPlayer() function, UpdateHelper message constants, variables, and handlers
|
|
* Simplified: updateHelpers() function now performs direct scoreboard updates without delegation
|
|
- Verbose_Logger Simplification: Streamlined debug logging system by removing unused buffering infrastructure
|
|
* Removed: Message buffering system, timer events, unused message handlers (MSG_VERBOSE_LOG)
|
|
* Size Reduction: Simplified from 149 lines to 80 lines (~47% smaller)
|
|
* Kept: Essential debug toggle functionality and system-wide logging coordination
|
|
* Performance: Eliminated timer overhead and reduced message processing complexity
|
|
|
|
🎨 BOT PROFILE PICTURE FIX
|
|
- Fixed Bot Visual Glitch: Resolved issue where bot profile pictures would randomly turn into gray boxes mid-game
|
|
* Issue: During scoreboard refresh (e.g., player removal), all profiles were reset to default gray texture before restoration
|
|
* Root Cause: refreshPlayerDisplay() function reset ALL profile prims to default, causing visual flicker
|
|
* Fix: Modified refresh logic to only reset unused player slots, preserving active player textures
|
|
* Enhanced Caching: Bots now store TEXTURE_BOT_PROFILE directly in cache to prevent HTTP requests
|
|
* Result: Bot avatars maintain consistent robot icon throughout entire game without gray box flicker
|
|
|
|
🏗️ DIRECT COMMUNICATION ARCHITECTURE UPDATE
|
|
- Link Number Reorganization: Updated all scripts to use new optimized linkset architecture
|
|
* Scoreboard Manager: Link 2 → Link 12 (moved to accommodate overlay prims)
|
|
* Leaderboard Manager: Link 25 → Link 35 (updated prim range: links 35-82)
|
|
* Dice Display: Link 73 → Link 83 (maintained 2-prim dice display)
|
|
* Affected Scripts: 11 scripts updated with new link mappings and prim ranges
|
|
- Optimized Prim Architecture: Enhanced linkset structure for better performance and organization
|
|
* Overlay Prims: Added dedicated overlay prims (links 2-11) for elimination markers
|
|
* Scoreboard Prims: Profile and hearts prims properly mapped to new link structure
|
|
* XyzzyText Banks: Updated leaderboard prim ranges to accommodate new architecture
|
|
|
|
🔧 ENHANCED GAME LOGIC & BUG FIXES
|
|
- Number Picker Dialog Enhancement: Improved parsing for mixed number formats
|
|
* Format Support: Now handles both CSV ("1,2,3") and semicolon ("1;2;3") separated pick lists
|
|
* Whitespace Handling: Added trimming for formats like "5, 6" vs "5,6" for consistent parsing
|
|
* Bot Integration: Enhanced bot pick processing to work with avoid lists from human players
|
|
- Bot Manager Improvements: Enhanced round detection and pick avoidance logic
|
|
* Round Detection: Better detection of new rounds through peril player and lives changes
|
|
* Command Processing: Improved bot command handling and duplicate pick prevention
|
|
* Fair Play: Bots now correctly avoid numbers already picked by human players
|
|
- Message Handler Fixes: Improved region communication handling
|
|
* Communication Method: Updated message broadcasting for better chat integration
|
|
* Player Feedback: Enhanced player join/leave notifications
|
|
|
|
🛠️ TECHNICAL INFRASTRUCTURE
|
|
- Memory Reporting: Added standardized memory usage reporting across core scripts
|
|
- Code Quality: Removed dead code paths and simplified complex functions
|
|
- Error Handling: Enhanced safety checks and boundary validation
|
|
- Performance: Reduced inter-script message traffic by eliminating unused communication paths
|
|
|
|
📊 SYSTEM PERFORMANCE IMPACT
|
|
- Memory Usage: Overall reduction in memory consumption across multiple scripts
|
|
- Message Traffic: Reduced unnecessary link messages between scripts
|
|
- Visual Stability: Eliminated profile picture flickering and display inconsistencies
|
|
- Code Maintainability: Cleaner, more focused codebase with reduced complexity
|
|
- Link Architecture: More organized and scalable linkset structure for future development
|
|
|
|
🎯 IMPACT SUMMARY
|
|
- Before: Dead code consuming memory, bot profiles flickering, complex but unused systems
|
|
- After: Leaner memory usage, stable bot visuals, simplified but fully functional architecture
|
|
- Performance: Measurable memory improvements and cleaner system operation
|
|
- Maintainability: Easier to understand and modify codebase with eliminated dead code
|
|
|
|
[2.8.4] - 2025-09-14
|
|
====================
|
|
|
|
🚨 DISCONNECT RECOVERY & DEBUG SYSTEM
|
|
|
|
🔍 SYSTEM-WIDE VERBOSE LOGGING TOGGLE
|
|
- Universal Debug Control: Implemented comprehensive verbose logging system across all 14 game modules
|
|
* Owner Menu Integration: Added "Toggle Verbose Logs" option in Troubleshooting menu for easy access
|
|
* Real-Time Toggle: Instantly enable/disable detailed debug messages without script restart
|
|
* System-Wide Sync: One toggle affects all modules simultaneously for consistent logging state
|
|
* Modules Updated: Main Controller, Game Manager, Floater Manager, Bot Manager, Roll Module, NumberPicker Handler, Message Handler, Game Calculator, System Debugger, Memory Controller, Scoreboard Manager, Leaderboard Communication, Dice Bridge
|
|
* Clean Production Mode: When disabled, only essential error messages and public announcements remain
|
|
* Full Debug Visibility: When enabled, shows internal operations, sync messages, state changes, and diagnostic info
|
|
|
|
🔧 DISCONNECT/RECONNECT RECOVERY SYSTEM
|
|
- Smart Player Return Detection: Fixed major issue where disconnected players couldn't resume their turn
|
|
* Issue: Players who disconnected during number picking (like Nooser) would get wrong menu when returning
|
|
* Before: Disconnect → Return → Ready menu shown → Required kick to continue game
|
|
* After: Disconnect → Return → "Welcome back! Restoring your number picking dialog..." → Game continues normally
|
|
- Enhanced State Recovery: Automatic detection and repair of corrupted game state from disconnections
|
|
* Compares expected picker (from pick queue) with current picker state
|
|
* Automatically fixes currentPicker corruption when players reconnect
|
|
* Works for both number picking and dice rolling phases
|
|
- Owner Emergency Recovery: If game gets completely stuck, owner can touch board to force-resume
|
|
- Debug Visibility: Verbose logging shows state detection and recovery actions for troubleshooting
|
|
|
|
🎯 NUMBER PICKER DIALOG PROTECTION SYSTEM
|
|
- Stale Dialog Prevention: Enhanced dialog validation to prevent outdated number selections
|
|
* Protection Against: Players clicking cached dialog buttons after game state changed
|
|
* Validation Layers: Session validation, player validation, number availability checking
|
|
* Smart Filtering: Automatically rejects selections for numbers already picked by others
|
|
- Enhanced Dialog Recovery: Improved system for restoring number picking dialogs after disconnections
|
|
- Session Management: Better tracking of active dialog sessions to prevent conflicts
|
|
|
|
🔍 NUMBER DETECTION & SHIELD LOGIC FIXES
|
|
- Fixed "Numbers Not Showing" Issue: Resolved major bug where system couldn't see numbers players had picked
|
|
* Issue: Game would show "NO SHIELD!" even when players had actually picked the rolled number
|
|
* Root Cause: Pick data synchronization issues between modules causing invisible player selections
|
|
* Solution: Enhanced pick data validation and sync message reliability across all game modules
|
|
* Impact: Shield detection now works correctly - proper "PLOT TWIST!" and shield mechanics restored
|
|
|
|
❌ ENHANCED ELIMINATION VISUAL FEEDBACK
|
|
- Red X Elimination Marker: Added clear visual indicator for eliminated players on scoreboard
|
|
* Visual Enhancement: Eliminated players now display a red X overlay on their profile picture
|
|
* Immediate Feedback: Red X appears instantly when player reaches 0 lives for clear elimination status
|
|
* Persistent Display: Red X remains visible on scoreboard until game reset for historical reference
|
|
* User Experience: Players can easily see who has been eliminated without checking heart counts
|
|
* Credit: Feature suggested by Pawkaf (pawkaf.lutrova)
|
|
|
|
🛡️ GAME STATE DESYNCHRONIZATION FIXES
|
|
- Sync Message Reliability: Fixed various state sync issues that could cause game confusion
|
|
- Pick Queue Protection: Enhanced pick queue management to prevent corruption during disconnections
|
|
- Display Consistency: Fixed cases where different parts of the system showed conflicting game state
|
|
- Race Condition Prevention: Added proper sequencing for state updates during player disconnections
|
|
|
|
🐛 CRITICAL BUG FIXES
|
|
- LSL Syntax Corrections: Fixed multiple mid-block variable declaration errors that prevented script compilation
|
|
* Issue: LSL doesn't support variable declarations in middle of code blocks
|
|
* Fixed Files: Main Controller, Floater Manager, Bot Manager, Roll Module, Game Manager, NumberPicker Handler, Message Handler, Game Calculator, System Debugger, Memory Controller, Leaderboard modules
|
|
* Solution: Replaced problematic ternary operators and mid-block declarations with proper conditional statements
|
|
- Ternary Operator Removal: LSL doesn't support condition ? value1 : value2 syntax - converted to if/else statements
|
|
- Compilation Success: All scripts now compile without syntax errors
|
|
|
|
🎮 USER EXPERIENCE IMPROVEMENTS
|
|
- Seamless Reconnection: Players can disconnect and return without disrupting game flow
|
|
- Clear Status Messages: Better feedback when verbose logging is toggled ("ENABLED"/"DISABLED" confirmations)
|
|
- Graceful Recovery: No more need to kick players just because they disconnected at wrong time
|
|
- Owner Control: Easy debug toggle access through familiar menu system
|
|
|
|
🎯 IMPACT SUMMARY
|
|
- Before: Player disconnections could break games, requiring kicks and manual intervention
|
|
- After: Players disconnect/reconnect seamlessly, games continue automatically
|
|
- Debug Control: One-click verbose logging for production vs development modes
|
|
- Stability: Major reduction in game-breaking state corruption issues
|
|
- Developer Productivity: Rich diagnostic information available on demand
|
|
|
|
[2.8.3] - 2025-09-01
|
|
====================
|
|
|
|
🚨 CRITICAL BUG FIXES - Major Game Logic Issues Resolved
|
|
|
|
🛡️ SHIELD DETECTION LOGIC FIXED
|
|
- MAJOR BUG FIX: Corrected shield detection that was incorrectly reporting "NO SHIELD!" when players had picked the rolled number
|
|
* Issue: Game said "Nobody picked 1" even when Rebecca had picked "3, 1" - Taylor should have been shielded but took damage instead
|
|
* Root Cause: Shield detection was checking if ONLY the peril player picked the number instead of checking if ANYONE picked it
|
|
* Fix: Shield detection now correctly uses `matched` flag (anyone picked) instead of `perilPickedIt` flag (only peril player picked)
|
|
* Impact: Players will no longer take undeserved damage when others provide proper shields
|
|
* Logic Update:
|
|
- ✅ NO SHIELD: Only when nobody picked the rolled number (!matched)
|
|
- ✅ DIRECT HIT: When peril player picked their own doom (matched && perilPickedIt)
|
|
- ✅ PLOT TWIST: When someone else picked it but not peril player (handled upstream)
|
|
|
|
🎯 INITIALIZATION SYSTEM OVERHAUL
|
|
- MAJOR BUG FIX: Complete fix for "can't join after rez" issue that required manual script reset
|
|
* Issue: When rezzing game from inventory, players couldn't join until all scripts were manually reset
|
|
* Root Cause: Critical scripts weren't properly resetting their state variables on rez, causing stale data conflicts
|
|
* Scripts Fixed: Added comprehensive on_rez() handlers to all critical game scripts:
|
|
- 🎯 Game_Manager.lsl: Core game logic and state management (20+ variables reset)
|
|
- 🎲 Roll_ConfettiModule.lsl: Dice rolling and shield detection logic
|
|
- 🎮 NumberPicker_DialogHandler.lsl: Player number selection dialogs
|
|
- 🤖 Bot_Manager.lsl: Bot player automation and picking logic
|
|
- 📦 Floater_Manager.lsl: Player status floating displays
|
|
- 🎭 Player_DialogHandler.lsl: Player and owner menu systems
|
|
- 🧮 Game_Calculator.lsl: Dice type and pick requirement calculations
|
|
* Each Fix Includes:
|
|
- ✅ Complete state variable reset to initial values
|
|
- ✅ Dynamic channel re-initialization for unique instance communication
|
|
- ✅ Old listener cleanup and fresh listener setup
|
|
- ✅ Stale game data clearing (picks, player lists, dialog sessions)
|
|
- ✅ Critical flag reinitialization (roundStarted, rollInProgress, etc.)
|
|
* Impact: **Game is now immediately ready for players after rezzing - NO manual script reset required!**
|
|
|
|
🎮 PLAYER EXPERIENCE IMPROVEMENTS
|
|
- Immediate Playability: Games rezzed from inventory are instantly ready for player registration
|
|
- Fair Shield Mechanics: Players providing shields now properly protect the peril player from damage
|
|
- Clean State Guarantee: Every new game instance starts with completely fresh state
|
|
- Reliable Dialog Systems: Number picking and menu dialogs work immediately after rez
|
|
|
|
🔧 TECHNICAL INFRASTRUCTURE
|
|
- Enhanced Script Coordination: All scripts now properly coordinate during initialization
|
|
- Channel Isolation: Each game instance uses unique communication channels
|
|
- Memory Management: Proper cleanup prevents memory leaks from stale game sessions
|
|
- State Synchronization: Consistent state across all game components from startup
|
|
|
|
🎯 IMPACT SUMMARY
|
|
- Before: Required manual "Reset Scripts" + shield detection failed
|
|
- After: Rez → Immediately playable + shields work correctly
|
|
- User Experience: Seamless game setup + fair gameplay mechanics
|
|
- Reliability: 100% successful initialization + accurate damage calculation
|
|
|
|
[2.8.2] - 2025-08-21
|
|
====================
|
|
|
|
🔥 CRITICAL SCOREBOARD SPAM FIX
|
|
- Eliminated Player Sync Loop: Fixed major bug where eliminated players caused continuous scoreboard update spam
|
|
* Main Controller now properly updates peril player variable immediately after player elimination
|
|
* Prevents stale sync messages containing eliminated player data from being broadcast repeatedly
|
|
* Eliminates infinite scoreboard update loops that occurred when peril player was eliminated
|
|
* Fixed root cause where Main Controller kept sending outdated peril player references in sync messages
|
|
- Peril Player Validation: Enhanced peril player assignment during elimination sequences
|
|
* Checks if eliminated player is currently the peril player before final sync
|
|
* Assigns new valid living player as peril player or sets to "NONE" if no players remain
|
|
* Ensures updateHelpers() always sends clean game state without stale player references
|
|
* Prevents perpetual "Noose the Bunny" style spam messages after player elimination
|
|
|
|
🎯 PERIL STATUS DISPLAY FIXES (RE-FIXED)
|
|
- Enhanced Floater Peril Status: Re-implemented and improved peril status display on floating displays
|
|
* Fixed peril status showing "waiting for game to start" during active gameplay (again)
|
|
* Enhanced peril player detection logic in floater management
|
|
* Improved sync message processing to ensure consistent peril status across all displays
|
|
* Better handling of peril player transitions during plot twist scenarios
|
|
|
|
💖 ELIMINATION HEART DISPLAY FIXES (RE-FIXED)
|
|
- 0 Hearts Before Elimination: Re-fixed elimination sequence to properly show 0 hearts before player removal
|
|
* Enhanced Main Controller elimination logic to ensure 0 hearts display timing
|
|
* Extended display delay to make 0 hearts clearly visible on both scoreboard and floaters
|
|
* Improved coordination between heart updates and player cleanup processes
|
|
* Fixed race conditions where players were removed before 0 hearts could be displayed
|
|
- Visual Elimination Feedback: Strengthened elimination experience for better player feedback
|
|
* Players now consistently see their elimination status with 0 hearts before removal
|
|
* Scoreboard and floaters maintain synchronized elimination heart display
|
|
* Enhanced user experience during elimination events with proper visual timing
|
|
|
|
🛠️ TECHNICAL IMPROVEMENTS
|
|
- Elimination Sequence Enhancement: Improved coordination between player removal and sync message broadcasting
|
|
* Added peril player validation step before final updateHelpers() call
|
|
* Enhanced elimination handler to prevent sync message corruption during player cleanup
|
|
* Better synchronization between Main Controller state updates and helper script notifications
|
|
- Display System Reliability: Strengthened display update mechanisms for consistent visual feedback
|
|
* Enhanced floater update triggers during game state changes
|
|
* Improved peril status determination and heart display coordination
|
|
* Better error handling for edge cases during elimination sequences
|
|
|
|
[2.8.1] - 2025-08-14
|
|
====================
|
|
|
|
🎯 PERIL STATUS DISPLAY FIXES
|
|
- Fixed Floater Status Updates: Resolved issue where peril status on floating displays showed "waiting for game to start" during active gameplay
|
|
* Enhanced peril status logic in Floater Manager to properly handle active game states
|
|
* Added clear "YOU ARE IN PERIL!" messaging for the current peril player
|
|
* Improved status display to show "Peril Player: [Name]" for all other players
|
|
* Fixed condition checking for peril player status determination
|
|
- Real-Time Status Synchronization: Enhanced sync message handling for consistent peril status across all displays
|
|
* Added debug logging to track peril player status changes in Floater Manager
|
|
* Improved floater update triggers during game state changes
|
|
* Enhanced sync message processing to immediately update all floaters when peril status changes
|
|
* Fixed "NONE" placeholder handling in peril player sync messages
|
|
|
|
💖 ELIMINATION HEART DISPLAY FIXES
|
|
- 0 Hearts Before Elimination: Fixed elimination sequence to properly show 0 hearts before player removal
|
|
* Modified Main Controller elimination logic to set player lives to 0 first
|
|
* Added 1-second display delay to make 0 hearts visible on both scoreboard and floaters
|
|
* Enhanced elimination flow with proper timing between heart display and player cleanup
|
|
* Fixed race condition where players were removed before 0 hearts could be displayed
|
|
- Visual Elimination Sequence: Improved elimination experience for better player feedback
|
|
* Players now see their elimination status with 0 hearts before floater disappears
|
|
* Scoreboard and floaters show elimination hearts consistently
|
|
* Better coordination between heart updates and player removal
|
|
* Enhanced user experience during elimination events
|
|
|
|
🐛 BUG FIXES AND IMPROVEMENTS
|
|
- Sync Message Debugging: Added comprehensive debug logging for peril player status tracking
|
|
* Debug messages show peril player changes from old to new values
|
|
* Enhanced visibility into sync message processing
|
|
* Better troubleshooting capabilities for peril status issues
|
|
- Floater Update Reliability: Improved floater update system for more consistent status display
|
|
* Enhanced floater update triggers during game state changes
|
|
* Better handling of peril status changes during rounds
|
|
* Improved sync message reliability for real-time status updates
|
|
- Elimination Timing Fixes: Resolved timing issues in elimination sequence
|
|
* Fixed race condition where elimination cleanup occurred before status display
|
|
* Added proper delays to ensure visual feedback before player removal
|
|
* Enhanced coordination between Main Controller and display systems
|
|
|
|
🛠️ TECHNICAL IMPROVEMENTS
|
|
- Enhanced Floater Manager Logic: Improved peril status determination and display
|
|
* Better condition checking for active game states vs. waiting states
|
|
* Enhanced handling of "NONE" and empty peril player values
|
|
* Improved sync message processing for consistent status updates
|
|
- Main Controller Elimination Enhancements: Better elimination sequence coordination
|
|
* Added explicit 0 hearts setting before player removal
|
|
* Improved helper update timing during elimination
|
|
* Enhanced coordination between elimination logic and display updates
|
|
- Debug Logging Additions: Added targeted debug messages for key status changes
|
|
* Peril player change tracking in Floater Manager
|
|
* Elimination sequence logging in Main Controller
|
|
* Better visibility into sync message processing
|
|
|
|
[2.8.0] - 2025-08-12
|
|
====================
|
|
|
|
🔐 GAME LOCKOUT SECURITY SYSTEM
|
|
- Owner-Only Access Control: Implemented comprehensive lockout system allowing game owners to restrict all game functionality to owner only
|
|
* Complete dialog prevention for non-owners when game is locked
|
|
* Visual feedback through floating text showing "🔒 GAME LOCKED" status
|
|
* Clear error messaging to non-owners attempting access during lockout
|
|
* Lock status persists during gameplay and between sessions
|
|
- Dynamic Admin Controls: Added lock/unlock toggle buttons in categorized owner menu
|
|
* Lock Game: Restricts access to owner only
|
|
* Unlock Game: Restores normal player access
|
|
* Visual indicators in admin menu show current lock state
|
|
- System Integration: Lockout state synchronized between Main Controller and Dialog Handler
|
|
* Lock/unlock commands sent via link messages (9001/9002)
|
|
* Floating text updates automatically based on lock state
|
|
* Complete access restriction including dialog generation prevention
|
|
|
|
🔄 AUTOMATIC RESET ON STARTUP SYSTEM
|
|
- Clean State Guarantee: Game automatically resets when critical scripts are updated or rezzed
|
|
* Main Controller triggers reset on state_entry() for consistent startup state
|
|
* Game Manager requests reset on startup to handle core game logic updates
|
|
* All game state cleared while preserving historical leaderboard data
|
|
- Smart Reset Logic: Automatic reset preserves leaderboard while clearing temporary game state
|
|
* Players, lives, picks, ready states cleared on startup
|
|
* Win/loss records maintained in leaderboard system
|
|
* Scoreboard cleared but leaderboard rankings preserved
|
|
- Script Update Protection: Enhanced reliability when game logic is modified
|
|
* Prevents stale game states from carrying over after script updates
|
|
* Ensures consistent experience for players after system updates
|
|
* Eliminates need for manual resets after deployments
|
|
|
|
👥 ENHANCED PLAYER MANAGEMENT SYSTEM
|
|
- Kick Player Functionality: Complete implementation of owner-controlled player removal
|
|
* New "Kick Player" option in Player Management admin section
|
|
* Smart display name handling with automatic truncation for dialog buttons
|
|
* Complete player removal from all game systems (lists, scoreboard, floaters)
|
|
* Immediate visual feedback on scoreboard when players are kicked
|
|
- Rebuilt Leave Game System: Complete overhaul of voluntary player departure
|
|
* Fixed state synchronization issues between Controller and Dialog Handler
|
|
* Proper cleanup of player floaters when leaving
|
|
* Automatic removal from ready player lists
|
|
* Scoreboard updates immediately reflect departing players
|
|
- Advanced Name Management: Enhanced handling of long display names
|
|
* Automatic truncation to fit within 24-character dialog button limits
|
|
* Preservation of original names for game logic while showing truncated versions in UI
|
|
* Proper mapping between display names and actual player identities
|
|
|
|
🎯 CATEGORIZED ADMIN INTERFACE
|
|
- Organized Owner Menu: Complete restructure of admin controls into logical categories
|
|
* Player Management: Add Test Player, Kick Player functions
|
|
* Reset Options: Game reset, Leaderboard reset, Complete reset
|
|
* Troubleshooting: Cleanup floaters, Force floaters creation
|
|
* Security Controls: Lock/Unlock game prominently displayed
|
|
- Improved Navigation: Enhanced menu flow with clear back navigation
|
|
* Consistent "Back to Main" options in all sub-menus
|
|
* "Back to Game" option to return to player interface
|
|
* Context-sensitive menu options based on current state
|
|
- Enhanced User Experience: Better organization and discoverability of admin functions
|
|
* Security-first design with lock controls prominently featured
|
|
* Logical grouping of related functions
|
|
* Clear visual indicators for current system state
|
|
|
|
[2.7.0] - 2025-08-12
|
|
====================
|
|
|
|
🏠 SINGLE LINKSET ARCHITECTURE REVOLUTION
|
|
- Complete System Consolidation: Merged all 4 separate objects into single linkset architecture
|
|
* Main Controller + Roll Module: Link 1 (root prim)
|
|
* Game Scoreboard: Links 2-24 (scoreboard background, actions display, player slots)
|
|
* XyzzyText Leaderboard: Links 25-72 (48 prims for text display across 4 banks)
|
|
* Dice Display: Links 73-74 (2 prims for XyzzyText dice results)
|
|
* Total: 74-prim consolidated linkset replacing 4 separate rezzed objects
|
|
- Elimination of Region Chat: Replaced all llRegionSay() communication with llMessageLinked()
|
|
* No more channel conflicts or discovery issues between multiple game instances
|
|
* Instant, reliable communication within single linkset
|
|
* Zero risk of cross-talk between multiple game tables
|
|
- Simplified Deployment: Single object rez instead of complex 4-object positioning system
|
|
* No more Position Controller/Follower scripts needed
|
|
* No more automatic rez positioning coordination
|
|
* Instant setup - rez once and play
|
|
|
|
🎯 DICE TYPE SYNCHRONIZATION FIXES
|
|
- Critical Race Condition Resolution: Fixed major bug where Game Manager and Roll Module independently requested dice types
|
|
* Eliminated inconsistent dice types between human players and bots (e.g., player rolling d6 when expecting d30)
|
|
* Prevented double rolls with different dice types from conflicting module requests
|
|
* Removed duplicate dice type calculation across multiple modules
|
|
- Targeted Communication System: Calculator sends dice type responses only to requesting module
|
|
* Game Calculator responds directly to sender using link numbers
|
|
* Eliminated LINK_SET broadcasts that caused race conditions and stale data
|
|
* Each module requests dice type independently when needed, preventing conflicts
|
|
|
|
🔄 CLEAN MODULE COMMUNICATION ARCHITECTURE
|
|
- Link Message Routing: Established clear communication paths within linkset
|
|
* Main Controller <-> Scoreboard: Link 1 -> Link 2
|
|
* Scoreboard -> Leaderboard Bridge: Link 2 -> Link 25
|
|
* Roll Module -> Dice Bridge: Link 1 -> Link 73
|
|
* All communication uses llMessageLinked() with specific link numbers
|
|
- Module Responsibilities:
|
|
* Game Calculator: Calculates dice types on request; sends targeted responses only
|
|
* Game Manager: Requests dice type for pick phase coordination and dialog building
|
|
* Roll Module: Requests dice type independently when performing actual rolls
|
|
* Scoreboard Manager: Handles player display and leaderboard formatting
|
|
* Bridge Scripts: Handle XyzzyText display distribution for leaderboard and dice
|
|
|
|
[2.6.0] - 2025-08-09
|
|
====================
|
|
|
|
📡 ADVANCED CHANNEL MANAGEMENT SYSTEM
|
|
- Dynamic Channel Calculation: Implemented sophisticated channel assignment system to prevent conflicts
|
|
* Channels calculated using combined hash of owner key + object key for uniqueness
|
|
* Prevents interference between multiple game tables owned by same person
|
|
* Each game instance gets completely unique channel space
|
|
* MD5-based hash generation creates 0-255 range offsets for channel distribution
|
|
- Multi-Instance Support: Multiple game tables can now operate simultaneously without channel conflicts
|
|
- Automatic Channel Assignment:
|
|
* Main Controller: ~-78000 range (CHANNEL_BASE - offset - hash)
|
|
* Dialog Handler: ~-79000 range
|
|
* Roll Module: ~-80000 range
|
|
* Bot Manager: ~-81000 range
|
|
* Scoreboard: ~-83000 range
|
|
* Leaderboard: ~-84000 range
|
|
* Position System: ~-85000 range
|
|
* Floater Base: ~-86000 range (with per-player offsets)
|
|
- Channel Debugging: Owner receives detailed channel assignments on startup for troubleshooting
|
|
|
|
🧹 DEBUG OUTPUT CLEANUP CAMPAIGN
|
|
- Main Controller Noise Reduction: Removed verbose debug messages causing chat spam
|
|
* Eliminated touch event logging ("DEBUG: touch_start - sender: X")
|
|
* Removed dice type result debug output ("DEBUG: Roll result: X on dY")
|
|
* Cleaned up excessive state change notifications
|
|
* Preserved essential error messages and critical game flow information
|
|
- Floater Manager Debug Cleanup: Significantly reduced verbose owner messages
|
|
* Removed detailed picks data logging from getPicksFor() function calls
|
|
* Eliminated floater cleanup debug messages (channel, index, player data confirmations)
|
|
* Removed sync state debug information showing counts of lives, picks, and names
|
|
* Maintained important error reporting for malformed data and critical issues
|
|
- Professional Operation Standards: Game now operates with minimal console noise
|
|
|
|
🎯 ENHANCED USER EXPERIENCE
|
|
- Reduced Log Spam: Console output now focuses on meaningful information only
|
|
- Essential Information Preserved: Error messages and critical game events still logged
|
|
- Clean Monitoring: Easier to spot actual issues without debug noise overwhelming chat
|
|
- Multi-Table Deployment: Support for running multiple game instances without interference
|
|
|
|
🛠️ TECHNICAL INFRASTRUCTURE IMPROVEMENTS
|
|
- Performance Enhancement: Reduced string processing overhead from debug output removal
|
|
- Memory Optimization: Less memory usage from debug string concatenation and storage
|
|
- Channel Architecture: Robust system for managing communication channels across components
|
|
- Hash-Based Uniqueness: Cryptographically sound channel assignment preventing collisions
|
|
- Maintainability: Cleaner codebase easier to debug when real issues occur
|
|
|
|
🔧 SYSTEM RELIABILITY
|
|
- Conflict Prevention: Eliminates channel conflicts that could cause cross-talk between games
|
|
- Instance Isolation: Each game table operates in completely isolated channel space
|
|
- Debugging Tools: Built-in channel reporting for troubleshooting communication issues
|
|
- Production Ready: Professional-grade logging levels suitable for live deployment
|
|
|
|
📋 IMPLEMENTATION DETAILS
|
|
- Channel Calculation Function: calculateChannel(offset) in all major scripts
|
|
- Initialization Reporting: Detailed channel assignments logged on script startup
|
|
- Cross-Script Consistency: All components use same channel calculation method
|
|
- Owner Transparency: Clear visibility into assigned channels for admin purposes
|
|
|
|
[2.5.0] - 2025-08-08
|
|
====================
|
|
|
|
🛡️ REGISTRATION SECURITY FIXES
|
|
- Duplicate Registration Prevention: Fixed critical bug where players could register multiple times by rapid clicking
|
|
* Added pendingRegistrations list to track registration requests in progress
|
|
* Prevents duplicate registration messages from being sent while first registration processes
|
|
* Automatic cleanup of pending registrations after completion or timeout
|
|
- Startup Sequence Protection: Fixed bug allowing player joins during game initialization
|
|
* Added gameStarting flag to block registrations immediately when "Start Game" is clicked
|
|
* Eliminates timing window between game start and roundStarted flag activation
|
|
* Maintains owner exception for admin menu access during gameplay
|
|
|
|
🎮 IMPROVED GAME FLOW CONTROL
|
|
- Enhanced Touch Handler: Better handling of registration status with user feedback
|
|
- State Management: Proper cleanup of both gameStarting and pendingRegistrations during reset
|
|
- User Experience: Clear messaging when registration attempts are blocked during active periods
|
|
|
|
🐛 CRITICAL BUG FIXES
|
|
- Race Condition Resolution: Eliminated duplicate player entries from rapid multiple touches
|
|
- Game Disruption Prevention: Stopped unwanted joins during critical game startup phase
|
|
- Consistent Game State: All registration paths now properly validate timing and prevent duplicates
|
|
- Duplicate Pick Prevention: Fixed continueCurrentRound() function to properly rebuild globalPickedNumbers with uniqueness checks
|
|
- Data Corruption Fix: Resolved issue where globalPickedNumbers could contain duplicates, causing inconsistent bot pick validation
|
|
- Delimiter Handling: Enhanced parsing to correctly handle both comma (human) and semicolon (bot) pick delimiters
|
|
- Server-Side Pick Validation: Added robust server-side validation in Main.lsl to prevent duplicate picks from being accepted
|
|
* Human picks are now validated against globalPickedNumbers before acceptance
|
|
* Invalid picks are rejected with clear error messaging to the player
|
|
* Player receives new dialog with updated available numbers after rejection
|
|
* Eliminates client-side bypass vulnerabilities in duplicate prevention
|
|
- Loss Tracking: Fixed missing loss records in leaderboard when players are eliminated
|
|
* Added GAME_LOST| message broadcast when players are eliminated
|
|
* Eliminated players now properly appear in leaderboard with loss counts
|
|
* Provides complete game statistics showing both wins and losses
|
|
- Enhanced Display Name Handling: Implemented robust player name resolution with fallback system
|
|
* Added getPlayerName(key id) helper function in all scripts (Main.lsl, Dialog Handler, StatFloat)
|
|
* Prioritizes modern llGetDisplayName() for better user experience
|
|
* Falls back to legacy llKey2Name() when display names are unavailable
|
|
* Handles network issues, offline avatars, and viewer compatibility problems
|
|
* Ensures no player is ever shown as blank or missing name
|
|
* Consistent name handling across all game components and messages
|
|
|
|
[2.4.0] - 2025-08-08
|
|
====================
|
|
|
|
📍 POSITION MANAGEMENT SYSTEM
|
|
- Master-Follower Architecture: Complete position synchronization system for all game components
|
|
- Position Controller Script: Main controller object manages movement of scoreboard, leaderboard, and displays
|
|
- Follower Script Template: Generic follower script that reads position settings from config notecard
|
|
- Config-Based Positioning: Position offsets and rotations defined in "config" notecard for easy customization
|
|
- Automatic Movement Sync: When controller moves, all linked objects maintain relative positions
|
|
- Position Reset Tools: Built-in recalibration system for repositioning knocked-out components
|
|
- Multi-Object Coordination: Seamless movement of entire game system as single unit
|
|
|
|
🧹 PRODUCTION CODE CLEANUP
|
|
- Debug Code Removal: Complete removal of all debug logging statements and test messages
|
|
* Removed llOwnerSay("DEBUG: ...) calls throughout Main.lsl (lines 147, 161, 479, 517, 523, 527, 874, 1163)
|
|
* Eliminated development-time diagnostic messages and empty debug blocks
|
|
* Cleaner, more professional game experience without debug clutter
|
|
- Syntax Error Fixes:
|
|
* Fixed critical missing closing brace on line 835 in Main.lsl causing compilation failure
|
|
* Resolved LSL syntax errors that prevented script execution
|
|
* All scripts now compile cleanly without warnings or errors
|
|
|
|
🛠️ DEVELOPMENT QUALITY IMPROVEMENTS
|
|
- Production Readiness: Scripts optimized for live deployment without development artifacts
|
|
- Performance Enhancement: Eliminated unnecessary debug output reducing execution overhead
|
|
- Memory Optimization: Reduced script memory footprint by removing debug string operations
|
|
- Code Maintainability: Cleaner codebase structure for future development
|
|
- Professional Polish: Game system ready for production deployment
|
|
|
|
🔧 TECHNICAL IMPROVEMENTS
|
|
- LSL Compliance: All scripts pass Second Life LSL compilation standards
|
|
- Execution Efficiency: Faster script performance without debug processing overhead
|
|
- Position Synchronization: Robust communication system for coordinated object movement
|
|
- Config System: Flexible notecard-based configuration for easy position adjustments
|
|
- Error Resolution: Fixed all syntax issues preventing proper game operation
|
|
|
|
📚 DOCUMENTATION UPDATES
|
|
- Position System Guide: Comprehensive instructions for setting up position management
|
|
- Reset Tools Documentation: Step-by-step guide for recalibrating positions
|
|
- Version Tracking: Updated to semantic versioning 2.4.0
|
|
- Change History: Detailed tracking of all modifications and improvements
|
|
|
|
[2.3.0] - 2025-08-05
|
|
====================
|
|
|
|
🏆 VISUAL SCOREBOARD SYSTEM
|
|
- Dynamic Player Grid: Real-time visual scoreboard displaying all players with profile pictures and heart count
|
|
- Profile Picture Integration: Automatic fetching of Second Life avatar profile pictures via HTTP requests
|
|
- Heart Texture Display: Visual life representation using custom heart textures (3, 2, 1, 0 hearts)
|
|
- Bot Profile Support: Special profile texture for TestBot players
|
|
- Immediate Updates: Hearts update instantly when lives change, before any dialogs appear
|
|
|
|
🎭 ENHANCED STATUS DISPLAY SYSTEM
|
|
- Visual Status Actions: Large action prim displaying current game status with custom textures
|
|
- Specific Status Messages:
|
|
* Direct Hit: When peril player picks their own rolled number
|
|
* No Shield: When nobody picks the rolled number
|
|
* Plot Twist: When peril switches to a new player
|
|
* Elimination: When a player is eliminated
|
|
* Victory: When someone wins the game
|
|
* Peril Selected: When a new peril player is chosen
|
|
* Title: Default/idle state
|
|
|
|
⚡ PERFECT STATUS TIMING
|
|
- Protected Display Time: Each status shows for 8 seconds with automatic clearing
|
|
- Strategic Delays: 2-second delays after status messages prevent overwriting
|
|
- Sequential Flow: Elimination → 6.4s delay → Victory → 9s delay → Reset
|
|
- Immediate Visual Feedback: Hearts and status update instantly, delays protect display time
|
|
|
|
🎯 COMPREHENSIVE LEADERBOARD
|
|
- Persistent Win Tracking: Player victories saved across game sessions
|
|
- XyzzyText Integration: Three-prim text display system for leaderboard
|
|
- Automatic Sorting: Top players by win count with formatted display
|
|
- Separate Reset Options: Game reset vs. leaderboard reset vs. complete reset
|
|
|
|
🎮 ENHANCED USER INTERFACE
|
|
- Categorized Owner Menus: Organized into Game Control, Player Management, Reset Options, etc.
|
|
- Dialog Recovery: Players can recover lost dialogs by touching the controller
|
|
- Admin Menu Access: Owner can access admin functions during gameplay
|
|
- Improved Menu Flow: Streamlined navigation with clear categorization
|
|
|
|
🔧 TECHNICAL IMPROVEMENTS
|
|
- Multi-Object Architecture: Scoreboard and leaderboard as separate linked objects
|
|
- HTTP Profile Fetching: Robust system for retrieving avatar profile pictures
|
|
- Texture Caching: Profile pictures cached to avoid repeated HTTP requests
|
|
- Region-Based Communication: Cross-object messaging using llRegionSay
|
|
- Elimination Sequence: Visual 0-hearts display before player removal
|
|
|
|
🐛 CRITICAL FIXES
|
|
- Heart Update Timing: Fixed hearts not updating until after next-turn dialog
|
|
- Victory Overwriting Elimination: Added proper delay between elimination and victory status
|
|
- Status Message Conflicts: All status messages now have protective delays
|
|
- Profile Picture Fallbacks: Proper handling of failed HTTP requests
|
|
- Scoreboard Reset: Fixed scoreboard not clearing when game resets
|
|
|
|
[2.2.0] - 2025-08-04
|
|
====================
|
|
|
|
🎭 MAJOR UX/PRESENTATION IMPROVEMENTS
|
|
- Dramatic Messaging System: Complete overhaul of game messages with thematic styling
|
|
- Public Announcements: Key game events now visible to all players in public chat
|
|
- Context-Rich Roll Messages: Dice rolls now show both dice type and result
|
|
- Split Hit Messages: Different messages for "picked own doom" vs "no shield" scenarios
|
|
|
|
🎮 ENHANCED PLAYER EXPERIENCE
|
|
- Player Join Messages: "💀 PlayerName has entered the deadly game! Welcome to your potential doom! 💀"
|
|
- Ready State Messages:
|
|
* "👑 PlayerName steps forward as the game master - automatically ready for the deadly challenge! 👑"
|
|
* "⚔️ PlayerName steels themselves for the deadly challenge ahead! ⚔️"
|
|
* "🏃 PlayerName loses their nerve and backs away from the challenge! 🏃"
|
|
- Pick Announcements: "🎯 PlayerName stakes their life on numbers: 1, 2, 3 🎲"
|
|
- Game Start: "⚡ ALL PARTICIPANTS READY! THE DEADLY PERIL DICE GAME BEGINS! ⚡"
|
|
|
|
🎲 IMPROVED ROLL MESSAGES
|
|
- Main Roll: "🎲 THE D6 OF FATE! PlayerName rolled a 5 on the 6-sided die! 🎲"
|
|
- Plot Twist: "⚡ PLOT TWIST! PlayerName picked 5 (rolled on d6) and is now in ULTIMATE PERIL! ⚡"
|
|
- Direct Hit: "🩸 DIRECT HIT! PlayerName picked their own doom - the d6 landed on 5! 🩸"
|
|
- No Shield: "🩸 NO SHIELD! Nobody picked 5 - PlayerName takes the hit from the d6! 🩸"
|
|
|
|
🔧 CRITICAL BUG FIXES
|
|
- StatFloat Duplication: Fixed bug where new StatFloat objects were created on every life loss instead of updating existing ones
|
|
- Duplicate Message Handling: Removed duplicate HUMAN_PICKED handlers that caused double processing
|
|
- Malformed Entry Warnings: Fixed LSL parsing issues with empty picks entries
|
|
- Cleanup Optimization: Reduced excessive StatFloat cleanup messages during reset
|
|
|
|
🛠️ TECHNICAL IMPROVEMENTS
|
|
- Debug Message Cleanup: Removed excessive debug output while preserving essential error reporting
|
|
- Message Handler Optimization: Streamlined communication between scripts
|
|
- LSL Parsing Fixes: Better handling of trailing empty elements in data parsing
|
|
- Memory Management: Improved StatFloat lifecycle management
|
|
|
|
[2.1.0] - 2025-08-03
|
|
====================
|
|
|
|
✨ 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] - 2025-XX-XX
|
|
====================
|
|
|
|
🌟 ORIGINAL RELEASE
|
|
- Basic Peril Dice game implementation
|
|
- Manual gameplay mechanics
|
|
- Simple player tracking
|
|
- Basic dice rolling functionality
|
|
|
|
---
|
|
|
|
DEVELOPMENT NOTES
|
|
================
|
|
|
|
KNOWN ISSUES
|
|
- Debug Output: Extended games may experience minor lag from comprehensive logging
|
|
|
|
RECENT FIXES (2025-01-08)
|
|
- Bot Race Condition: Fixed critical bug where duplicate message handlers prevented proper globalPickedNumbers updates
|
|
- Enhanced Bot Logging: Added detailed pick tracking and duplicate detection in Bot Manager
|
|
- Message Handler Separation: Separated bot and human pick handling to prevent conflicts
|
|
|
|
FUTURE ENHANCEMENTS
|
|
- 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
|