012.440
Additions
- Added browser-based synthesized dialogue voices using
window.speechSynthesis. - Added different default voice profiles for Spark, Lady Spark, Gootz, and Ivan.
-
Dialogue Voices
- Spark uses a lower-pitched male-style voice.
- Lady Spark uses a female-style voice.
- Gootz uses a higher-pitched, faster kid-style voice.
- Ivan uses a slightly slower, lower voice.
- Added synthesized voices to Script Block dialogue.
- Added synthesized voices to the local player's speech bubbles and chat.
- Added synthesized voices to PlayerShadow and remote player speech bubbles.
- Player voices use the character or skin associated with the player where possible.
- Enemy speech bubbles are intentionally excluded from synthesized speech.
- Added persistent voice profiles so selected voices, pitch, and rate settings can be retained locally.
-
Dialogue Sound Settings
- Added separate Player Dialogue Volume and Script Dialogue Volume sliders to the Sound menu.
- Player Dialogue Volume defaults to 0%.
- Script Dialogue Volume defaults to 50%.
- Dialogue voice controls are available to Subscribers, Bug Finders, and Developers.
- Non-entitled users can still see the dialogue sliders, but they are disabled and open the Subscriber Feature popup when interacted with.
Improvements
- Scripted dialogue now waits for both the text display and synthesized speech to finish before advancing.
- Script speech is automatically cancelled when appropriate, including script reset or end, death, and world transitions.
- Script dialogue voices take priority over normal player-chat voices so multiplayer chat cannot interrupt a scripted scene.
- New player chat replaces previous player-chat speech instead of building a long text-to-speech queue.
- The main Sound On/Off setting now also controls synthesized dialogue.
- Dialogue volume is handled separately from regular sound effects volume.
- Speech entitlement now uses one shared authoritative Subscriber, Bug Finder, or Developer value instead of separate role checks in different systems.
- Audio volume is now clamped to valid browser ranges.
- Rejected browser
Audio.play()promises are safely handled. - Dialogue voice settings persist through
localStorage.
Bug Fixes
- Fixed Player Dialogue sometimes no longer speaking after scripted dialogue finished.
- Fixed the speech manager occasionally remaining stuck in the Script channel when the browser failed to fire a speech completion event.
- Fixed Subscriber and Developer accounts sometimes failing the dialogue-speech entitlement check while Bug Finder accounts worked correctly.
- Fixed dialogue sliders appearing enabled while the speech system independently considered the user ineligible.
- Fixed an accidental duplicate
<script>tag in the Sound menu that caused anUnexpected token '<'JavaScript syntax error and prevented the rest of the sound settings code from running. - Fixed cancelling Script Dialogue by lowering its volume to 0 potentially leaving the script waiting for speech completion.
- Fixed stale synthesized speech state so normal Player Dialogue can resume properly after a scripted scene.