- If you've gotten every Spray Can, or you're on a custom course...
- Only one of these spawns per map
- Correctly save and load these
- Statistics menu counts base-game bonuses
- If there are gaps in the list, or new Spray Cans are added later, these base-game bonuses are converted into the new Spray Cans
- New graphics required so far:
- SBONA0 to SBONP0 - 16-frame prerendered circling sprite animation
- GOTBON - 8x8 representation of the SBON object
Implemented using libopus for the Opus codec, same as is used in Discord.
This adds the following cvars:
- `voice_chat` On/Off, triggers self-deafen state on server via weaponprefs
- `voice_mode` Activity/PTT
- `voice_selfmute` On/Off, triggers self-mute state on server via weaponprefs
- `voice_inputamp` -30 to 30, scales input by value in decibels
- `voice_activationthreshold` -30 to 0, if any peak in a frame is higher, activates voice
- `voice_loopback` On/Off, plays back local transcoded voice
- `voice_proximity` On/Off, enables proximity effects for server
- `voice_distanceattenuation_distance` distance in fracunits to scale voice volume over
- `voice_distanceattenuation_factor` distance in logarithmic factor to scale voice volume by distance to. e.g. 0.5 for "half as loud" at or above max distance
- `voice_stereopanning_factor` at 1.0, player voices are panned to left or right speaker, scaling to no effect at 0.0
- `voice_concurrentattenuation_factor` the logarithmic factor to attenuate player voices with concurrent speakers
- `voice_concurrentattenuation_min` the minimum concurrent speakers before global concurrent speaker attenuation
- `voice_concurrentattenuation_max` the maximum concurrent speakers for full global concurrent speaker attenuation
- `voice_servermute` whether voice chat is enabled on this server. visible from MS via bitflag
- `voicevolume` local volume of all voice playback
A Voice Options menu is added with a subset of these options, and Server Options has server mute.
All values besides 0 and 1 have been unused for a while. Quite frankly, if the gamestate resend doesn't fix them, a rejoin won't either, so kicking them is just adding extra steps.
The following funcs are now a suite with almost-identical argument lists.
- `map` is for immediately going to a map
- Add `-random`/`-r`
- `queuemap` is for interacting with the live Round Queue
- Add `-random`/`-r`
- Performed server-side
- `-clear` and `-show` now accept partial params `-c` and `-s`
- Fix minor error with 0-argument print's text
- `showmap` is for printing information
- Add arbitrary map name/ID input
- `showmap robo` prints the course `map robo` would resolve to
- Add `-gametype`/`-gt`/`-g`
- For compatibility testing
- Add `-random`/`-r`
- Combine with `-gametype` for extra guarantees
- `randommap` was deprecated
- Will only print replacement instructions of `map -random`, and nothing else
- Currently no console command, as "teamchange" no longer applies... relatively simple to add one if needed though
- Change the "Team Change" warning when allowteamchange is false to say "Joining Play"
Allows the user to configure the mixing buffer size to reduce
latency at the cost of higher CPU usage, or vice versa.
This also raises the default buffer size from 1024 to 2048, to
address some underrun problems people have with the current buffer
size.