BABUNI.DEV

RoarForever / Overview

RoarForever: Overview

Roar Forever

A lightweight player voice-emote sound fix for World of Warcraft: Forever.

Roar Forever restores character voice sounds that Forever does not reliably play when nearby players use voiced emotes. It uses audio already included in the game client, so there are no bundled sound files. It works with default settings; /rf opens its options.

Options and previews

Open /rf or /rf config for a movable Warcraft-style menu. Toggle individual emote categories, enable or disable the addon, and choose whether restored emotes send their extra chat messages (/train, /forthehorde, /forthealliance). Aliases such as /flee and /retreat share one switch.

Each speaker button plays one randomly selected sound for that emote from all mapped races and genders. It does not use only your character's voice. Previews work even if that emote or the addon is switched off, never send chat, and stop the previous preview when you choose another.

These switches control which built-in game voice-emote sounds Roar Forever restores. They do not silence voices that WoW itself plays. In particular, turning off the chat announcement does not disable the native /train animation or voice.

Restored emotes

Distance-aware restored emote audio (0.6)

When both players use Roar Forever, /roar, /train, /forthehorde, and /forthealliance also send a short invisible addon message with the speaker’s outdoor position. Receivers fade or silence that restored voice by distance (same world/instance). This is not true left/right 3D positional audio — the public addon API cannot pan per sound.

Players without Roar Forever are still heard through the existing text-emote / announce detection. A brief wait prefers the addon packet when both arrive so the sound is not played twice.

SoundKit-based volume scaling is ready; the mapping table starts empty until IDs are verified from Forever DB2/CASC data. Until then, in-range COMM events use the existing FileDataID playback, and out-of-range (≥50 yards) or other-instance packets stay silent.

Roar Forever does not replay your own normal voiced emotes, because the client already plays those. /roar is the exception for races that have no client roar. Skyborne already have a native roar, so the addon leaves your own and group-member Skyborne roars to the game. In a party or raid, the client already plays most other voices for group members, so Roar Forever restores /roar there (except Skyborne), plus faction cries via COMM/announce. Nearby players who are not in your group still get the full set.

Someone who is not using Roar Forever can still /train without sending a line, so there is nothing for the addon to hear unless they use a distinctive announce. The same is true for faction cries without the distinctive chat line or addon communication.

Installation

  1. Extract RoarForever.zip into World of Warcraft\_classic_beta_\Interface\AddOns.
  2. Check that the RoarForever folder contains RoarForever.toc, Locales.lua, RoarForever.lua, and Options.lua. Install all four files together.
  3. Restart WoW and enable Roar Forever in the addon list.

Playback is local: another player does not need Roar Forever installed for you to hear a supported detected emote from them (except announced custom lines such as /train and the faction cries). Your on/off state, individual emote choices, and announcement choice are saved through the normal account-wide RoarForeverDB. No folder links or account-specific setup are used.

Commands

Command Purpose
/rf or /rf config Open or close the options window.
/rf on Turn Roar Forever on.
/rf off Turn Roar Forever off.
/rf test Play your character's mapped roar sound.
/rf test <emote> Test a mapped emote for your character, including train, whistle, forthehorde, and forthealliance.
/forthehorde or /fth Horde faction cry (Roar Forever).
/forthealliance or /fta Alliance faction cry (Roar Forever).
/rf status Show whether the addon is on, your character voice, and the mapped emotes.
/rf id <FileDataID> Test a specific FileDataID.
/rf debugcomm Toggle printing of received addon-emote packets (distance, volume, channel).
/rf debugpos Print your outdoor UnitPosition x, y, and instance ID.
/rf soundkit <ID> [volume] Play a candidate SoundKit ID at an optional volume (default 1.0). For validating IDs you already have — not a way to discover voice mappings from scratch.
/rf voltest <ID> Play a candidate SoundKit at about 100%, 70%, 40%, 20%, and 10% with short gaps.

/roarforever can also be used in place of /rf.

Compatibility

Release notes

See CHANGELOG.md.

Development checks

Run python tests/test_addon.py with the lupa package installed (Lua 5.1 runtime). Tests are excluded from CurseForge packages. Automated checks use simulated WoW APIs; verify window layout, actual audio, and a logout/login settings cycle in the game before treating a beta release as fully validated.

Development documentation

The journal distinguishes source-based reconstruction, author direction, AI assistance, and independently verified behavior.

Documentation audit #33 — 27 October 2026

The current source declares 0.6.0-beta (Interface 16001). Its historical documentation records the evolution from local missing-voice restoration to configured emote categories, multiplayer COMM, text fallback and distance-based suppression. These are separate from verified volume attenuation, which depends on verified SoundKitID mappings. The existing client audio is not authored by the addon.

Expanded portfolio documentation: interaction design, content/audio provenance, architecture, decisions, development history and human–AI collaboration. This audit is documentation-only; no client tests were run.

Document information

Author: Babuni.dev

View source