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
- Fixed technical rules section to show 2-minute timeout instead of 10-minute
- Matches current code implementation in Main_Controller_Linkset.lsl
- Added context note about improved faster gameplay
- Updated version info from 2.6.0 to 2.8.1 (August 14, 2025)
- Added new v2.8.0 security features (Game Lockout, Kick Player)
- Added new v2.8.1 display improvements (Real-time status, enhanced elimination)
- Updated owner menu section with new Lock/Unlock and Kick Player options
- Added comprehensive Game Security and Enhanced Display System sections
- Updated technical rules to reflect automatic reset and single linkset architecture
- Maintained all original core gameplay rules and strategies
- Now clears entire workspace except .git directory before checkout
- Ensures absolutely clean state for every build
- Uses safe find command with error suppression
- Guarantees no leftover files from previous builds can interfere
- Cleanup now runs right after checkout, before validation
- Removes conditional 'when' clause so cleanup runs on all branches
- This ensures validation only processes clean original files
- Much more efficient - no more validating hundreds of processed files
- Replace bash [[ ]] with POSIX [ ] syntax
- Use parameter expansion for prefix checking
- Eliminates "[[: not found" errors in Jenkins logs
- Maintains same functionality with better shell compatibility
- Added 'Clean Workspace' stage to remove all processed_*.lsl files before preprocessing
- Fixed documentation generation to only process original source files
- This will clean up the hundreds of recursive processed files from Jenkins workspace
- Pipeline now starts with a clean slate on each build
- Only process original source files, not already-processed ones
- Add .gitignore to exclude processed files and build artifacts
- Prevents exponential explosion of processed_processed_processed... files
- Comment out NOTIFICATION_WEBHOOK credential until configured
- Pipeline should now run without credential errors
- Notifications can be added later when webhook is set up
- 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