Modern, defensive round-end music for Garry's Mod Trouble in Terrorist Town and TTT2.
Frika Round End Sounds plays a random local audio file when a TTT or TTT2 round ends. Separate playlists are available for Innocent wins, Traitor wins, time-limit results, and additional TTT2 teams.
The addon is intentionally small and has no runtime dependencies beyond Garry's Mod and a compatible TTT gamemode.
- Separate playlists for
innocents,traitors,timelimit, andteams - TTT and TTT2-compatible result handling without hard failures on missing optional globals
- Persistent per-player volume through
frs_volume - Immediate-repeat protection when a playlist contains multiple tracks
- Safe handling of empty folders and unsupported files
- Automatic FastDL registration for bundled audio files
- Admin reload and test commands
- CI, scheduled current-GMod packaging checks, Dependabot, automated contributor updates, and release automation
- Mandatory 100% production line coverage and 0% qualifying production-code duplication
- Copy this repository into
garrysmod/addons/gmod-fres. - Add
.mp3or.wavfiles to the appropriate folders:
sound/round/
├── innocents/
├── traitors/
├── timelimit/
└── teams/
- Restart the server or run
frs_reloadfrom the server console. - Start a TTT or TTT2 round and use
frs_test innocentsfrom the server console for a quick check.
See INSTALLATION.md for FastDL, Workshop, and update notes.
| Command | Description |
|---|---|
!volume <0-100> |
Set and persist local music volume |
!music |
Show the most recently selected track |
!musicstop |
Stop current playback |
Client console variables:
| Variable | Default | Description |
|---|---|---|
frs_client_enabled |
1 |
Enable playback on this client |
frs_volume |
50 |
Local volume in percent |
| Command | Permission | Description |
|---|---|---|
frs_reload |
Server console or admin | Rescan playlists and register files |
frs_test <category> |
Server console or admin | Broadcast a random track from a category |
Server console variable:
| Variable | Default | Description |
|---|---|---|
frs_enabled |
1 |
Enable round-end playback server-wide |
See Configuration, Compatibility, and Architecture for details.
Every pull request must pass:
- repository and Markdown-link validation
- Python tests
- Lua 5.1 behavior tests against Garry's Mod API mocks
- Luacheck static analysis with SARIF findings
- 100% line coverage for both production autorun files
- jscpd with a 0% duplication threshold
- actionlint validation for every GitHub Actions workflow
Reports are retained as workflow artifacts. See QUALITY.md and docs/TESTING.md.
The complete user, maintainer, contributor, funding, and automated-agent documentation is indexed in DOCUMENTATION.md.
.
├── lua/autorun/client/ # Client playback and chat commands
├── lua/autorun/server/ # Playlist scanning and TTT round hook
├── sound/round/ # User-provided audio playlists
├── docs/ # Maintainer and user documentation
├── scripts/ # Repository and quality automation
├── tests/lua/ # GLua behavior tests and API mocks
├── tests/ # Python repository tests
└── .github/ # CI, templates, funding, and automation
Contributions are welcome. Read CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md before opening a pull request.
| Role | Contributor |
|---|---|
| Creator and maintainer | mleem97 |
| Additional contributors | CONTRIBUTORS.md |
Development can be supported through GitHub Sponsors and the options documented in FUNDING.md. The GitHub sponsor button is configured in .github/FUNDING.yml.
Copyright 2025-2026 mleem97.
Licensed under the Apache License 2.0. Redistributions must preserve the license, copyright notices, and the attribution information in NOTICE, as required by the license.