PROBLEM: Timer was immediately turned off after each script installation
- Line 328: llSetTimerEvent(0.0) killed timer after every installation
- Only first script would install, then process would stop
SOLUTION:
- Only turn off timer when NOT updating
- Let installNextScript() manage its own timing
- Properly stop timer in completeUpdate() and handleUpdateError()
- Now all 18 scripts should install sequentially
This fixes the '1 script installs then stops' bug
- Update_Receiver now installs LAST to prevent interrupting update process
- Avoids scenario where controlling script gets replaced mid-update
- All other scripts install first, then Update_Receiver replaces itself
- Critical fix for reliable automatic updates
- Add REQUIRED_OBJECTS list for non-script inventory items
- Update inventory checking to show both scripts and objects
- Add transferObjects() function using llGiveInventory()
- Transfer objects first, then install scripts during update
- Support for updating StatFloat floater objects
- Enhanced progress reporting for scripts vs objects
- Map each script to its correct link number
- installScriptToLink() handles single and multi-link installations
- Special handling for xyzzy_Master_script (links 35-82, 48 copies)
- Uses start_param in llRemoteLoadScriptPin to target specific links
- Inventory check shows script → link mapping
- Progress tracking for complex multi-link installations
- Traditional_Updater.lsl copies scripts from its own inventory
- Uses llRemoteLoadScriptPin with script names (not content)
- Follows proven Second Life updater patterns
- Includes inventory verification system
- Lists all 17 required Peril Dice scripts
- Should work reliably unlike HTTP-based approach
- Add Test_Updater.lsl for testing llRemoteLoadScriptPin with tiny script
- Add '/1 test' command to Update_Receiver for PIN testing
- Simple test script (77 chars) to verify basic functionality
- Will help identify if issue is with PIN system, permissions, or script size
- Safe testing - only adds small test script, never deletes anything
- Remove llRemoveInventory() calls that delete user scripts
- Switch to safe mode: only ADD new scripts, never delete
- User can manually copy content from new auto-generated scripts
- Prevents data loss from failed automatic replacement
- Add REMOVE_SCRIPT command to delete old scripts before update
- Add RENAME_SCRIPT command for future script name management
- Use 3-step process: remove old → install new → rename
- Update_Receiver now handles script inventory management
- Follows commercial SL updater patterns with remove-then-replace
- Show target object key and PIN for debugging
- Display script content size
- Simplify approach to focus on core llRemoteLoadScriptPin functionality
- This will help identify why script installation is failing
- Update script format to URL|link|scriptname
- Second Life inventory stores scripts without .lsl extension
- llRemoteLoadScriptPin needs script name without extension
- Fixes 'Missing inventory item' errors during automatic updates
- Replace Update_Checker.lsl with enhanced Update_Receiver.lsl
- Add Peril_Dice_Updater.lsl external updater box
- Integrate 'Check for Updates' into Admin Menu → Troubleshooting
- Professional dialog system with Install Update button
- Automatic updater box detection within 96m range
- Secure PIN-based script installation via llRemoteLoadScriptPin
- Manual JSON parsing for LSL 2048-character limit workaround
- Maintain backward compatibility with chat commands
- Update manifest to v2.8.8 with Update_Receiver.lsl entry
New Features:
- One-click automatic update installation
- Professional user experience matching commercial SL products
- External updater architecture for easy distribution
- Enhanced GitHub API integration with better error handling
- Add error handling for malformed release notes
- Parse critical fields first (tag_name, html_url)
- Gracefully handle JSON parsing failures in release body
- Add verbose logging for debugging API responses
This fixes parsing errors when GitHub releases contain special characters.
🔧 MCP Development Infrastructure:
- lsl_mcp_server.py (414 lines): Complete MCP server for LSL validation
• LSL file listing and validation capabilities
• Memory usage analysis and reporting
• Git status integration
• Architecture analysis tools
📋 Testing & Documentation:
- test_lslint_mcp.py: MCP server testing framework
- test_mcp_server.py: Server functionality tests
- test_validate_lsl.py: LSL validation testing
- debug_mcp.py: MCP debugging utilities
- MCP_README.md: Complete documentation and setup guide
- mcp_config.json: MCP server configuration
🎯 Development Benefits:
- Enhanced LSL development workflow
- Automated validation and analysis
- Professional debugging capabilities
- Integration with existing LSL validator
- Support for AI-assisted development
These tools were used during development of the GitHub Update System
and provide foundation for future LSL development automation.
🔄 NEW FEATURES:
- Update_Checker.lsl: Revolutionary in-world GitHub integration
• Direct connection to GitHub Releases API
• Smart file filtering (essential vs development files)
• Precise deployment instructions verified by linkset scan
• Owner menu integration + chat commands (/1 check, /1 download)
• Memory optimized to replace eliminated UpdateHelper.lsl
🔍 ENHANCED TOOLS:
- Enhanced_LinkScanner.lsl: Complete 84-prim linkset analysis
• Real-time structure validation and prim mapping
• Script placement verification for all 17 LSL scripts
• XyzzyText system analysis (48 leaderboard prims)
• Update deployment guide generation
📊 SYSTEM IMPROVEMENTS:
- Zero-infrastructure updates via existing GitHub + Jenkins pipeline
- Professional error handling and user feedback
- Smart file classification with link-specific instructions
- Multi-instance safe operation for multiple game tables
📋 VERIFIED LINKSET STRUCTURE:
- Link 1: 13+ root prim scripts + Update_Checker.lsl
- Link 12: scoreboard manager cube
- Link 35: leaderboard bridge + XyzzyText start
- Links 35-82: 48 XyzzyText prims (4 banks × 12 rows)
- Link 83: dice display bridge
🎯 END USER BENEFITS:
- Automatic update detection and download
- No more guessing which scripts go where
- Clean separation of game files vs development files
- One-click access via /1 check or admin menu
ISSUE: Rebecca Nod with 12 wins was ranked below Bot1 with 7 wins
ROOT CAUSE: String sorting treats '7' > '12' alphabetically
FIX: Zero-pad wins to 4 digits ('0007' vs '0012') for proper numerical string sorting
RESULT: Leaderboard now correctly sorts by actual win count (12 > 7)
Players with higher win counts will now properly rank higher on the leaderboard.
- Winner Glow Effects: Bright green glow on both scoreboard and floaters for winners
- Extended Victory Display: 24-second celebration timer before game reset
- Enhanced Visual Feedback: Color-coded glow system (green/yellow/red)
- Victory Text Display: Winner floaters show 'ULTIMATE VICTORY!' and 'ULTIMATE SURVIVOR'
- Timer System Optimization: Dedicated victory timer mode, removed unused timeout system
- Memory Efficiency: Cleaned up unused components for better performance
- Synchronized Celebration: Both scoreboard and floater systems celebrate winner simultaneously
- Visual Priority: Winner glow overrides peril glow during victory celebration
Professional winner recognition system makes victory feel rewarding and celebrated!
EMERGENCY OPTIMIZATION for player registration causing Stack-Heap Collision:
REPLACED ALL HEAVY STRING OPERATIONS IN PLAYER REGISTRATION:
- Game start rejection message -> delegated ownerMsg() + regionMsg()
- Bot join announcement -> delegated publicMsg()
- Human starter announcement -> delegated publicMsg()
- Human join announcement -> delegated publicMsg()
- Player added confirmation -> delegated ownerMsg()
ELIMINATED MEMORY HOTSPOTS:
- Complex emoji string concatenations during player join
- Multi-string concatenation operations in registration flow
- Heavy llSay() operations with complex formatting
- Memory-intensive llOwnerSay() with player name concatenation
This targets the exact operation that triggers Stack-Heap Collision
when players join the game.
Since emojis were not the cause of the syntax error, restoring all visual indicators:
- 👋 for JOIN/LEAVE messages
- ⚠️ for ERROR messages
- ✅ for SUCCESS messages
- 🔧 for DEBUG messages
- 🎮 for GAME messages
- 🔄 for WELCOME messages
- 📨 for script ready message
- 🔊 for verbose logging toggle
- 🔍 for debug logging
Maintains visual consistency with other game scripts while keeping the syntax fix.
- Changed variable name from 'state' to 'stateVal' on line 324
- Updated corresponding reference on line 325
- Eliminates potential reserved word conflict or invisible character issues
- Should resolve LSL syntax error at 324,19
CRITICAL MEMORY FIX: Reduce Main Controller memory usage by delegating string operations
CONTROLLER_MESSAGEHANDLER ENHANCEMENTS:
- Added MSG_OWNER_MESSAGE, MSG_PUBLIC_MESSAGE, MSG_REGION_MESSAGE handlers
- New handleOwnerMessage(), handlePublicMessage(), handleRegionMessage() functions
- Memory-efficient message formatting with type-based templates
- Moved all heavy string concatenation operations out of Main Controller
MAIN CONTROLLER CHANGES:
- Added ownerMsg(), publicMsg(), regionMsg() helper functions
- Replaced memory-heavy llOwnerSay() calls with delegated message functions
- Reduced string concatenation operations in critical paths
- Kept simple direct calls for essential messages only
This architectural change should significantly reduce Main Controller memory pressure
and resolve the persistent Stack-Heap Collision errors.
- Fixed syntax error on line 113,0 in Verbose_Logger.lsl
- Moved function definitions before state block (LSL requirement)
- Removed duplicate function definitions at end of file
- Functions flushMessageBuffer() and reportMemoryStatus() now properly defined
Script should now compile correctly in LSL.
CRITICAL ARCHITECTURE CHANGE to resolve memory crashes:
NEW FILE: Verbose_Logger.lsl
- Dedicated script for all debug output to free up memory in Main Controller
- Handles verbose logging toggle and message buffering
- Script ID system for organized log prefixes
- Memory-safe batched output system
MAIN CONTROLLER CHANGES:
- Removed all verbose logging code and variables
- Redirected debug calls to dedicated Verbose_Logger script
- Simplified verbose logging toggle to forward to logger
- Removed memory-heavy string operations
This architectural split should immediately resolve the Stack-Heap Collision
by moving all debug-related memory usage out of the Main Controller.
CRITICAL FIX: Main Controller experiencing Stack-Heap Collision from verbose logging
- Added emergency memory monitoring to auto-disable verbose logging when memory low
- Replaced heavy string concatenation debug calls with lightweight versions
- Added memory checks before debug output to prevent crashes
- Simplified verbose logging toggle messages to reduce memory usage
- Emergency threshold: auto-disable at <1000 bytes free memory
- Safety checks: only output debug if >500 bytes available
This should immediately resolve the Stack-Heap Collision error.
- Added proper attribution: 'Feature suggested by Pawkaf (pawkaf.lutrova)'
- Credits Pawkaf for the innovative red X overlay idea for eliminated players
- Updates all documentation files with appropriate recognition
- Updates: CHANGELOG.md, README.md, CHANGELOG_Notecard.txt, README_Notecard.txt
- Added 'Enhanced Elimination Visual Feedback' section to all documentation files
- Documents the red X overlay that appears on eliminated players' profile pictures
- Explains immediate visual feedback when players reach 0 lives
- Notes persistent display until game reset for historical reference
- Improves user experience by making elimination status clearly visible
- Updates: CHANGELOG.md, README.md, CHANGELOG_Notecard.txt, README_Notecard.txt
- Added critical 'Number Detection & Shield Logic Fixes' section to all documentation files
- Documents the fix for system not recognizing numbers players had picked
- Explains the root cause (pick data sync issues) and solution (enhanced validation)
- Ensures complete coverage of v2.8.4 improvements including shield mechanics restoration
- Updates: CHANGELOG.md, README.md, CHANGELOG_Notecard.txt, README_Notecard.txt