# Discord Presence test component This test branch builds two 32-bit native Windows components: - `DiscordPresence.dll` — loaded by VanillaFixes; reads WoW 1.12.1 character state read-only, writes the status snapshot, and starts the companion from its worker thread after WoW startup. - `DiscordPresence.exe` — invisible companion that only reads the status file and talks to Discord IPC. It no longer launches WoW. The normal game launch path stays unchanged: ``` Play Modernized WoW -> VanillaFixes.exe WoW_Modernized.exe -> WoW_Modernized.exe -> DiscordPresence.dll -> DiscordPresence.exe ``` The OctoWoW Discord Application ID is built into `DiscordPresence.exe`: ``` 1544072796098011176 ``` No manual Application ID setup is required. Advanced users may optionally create a `discord_application_id` text file to override the built-in ID. Runtime data is stored under: ``` \.modernization_tool\DiscordPresence\ discord_wow_status.json discord_broadcast_flags DiscordPresence.log discord_application_id (optional override) ``` The companion is never launched from `DllMain`; it is started only from the DLL worker thread after the startup delay. The DLL never performs Discord IPC, and the companion never reads or writes WoW memory. ## OctoWoW race mapping For OctoWoW, the helper treats: - race id 9 as `Goblin` / Horde - race id 10 as `High Elf` / Alliance - race id 16 as a `High Elf` / Alliance compatibility fallback The companion reads the `race` field from `discord_wow_status.json` and includes it in Rich Presence details, e.g. `Lvl 1 Priest · High Elf · Alliance`. ## Independent sampler implementation The WoW memory sampler is implemented in this repository with its own internal organization. It preserves the existing runtime contract (same status JSON, broadcast flags, timings, read-only memory access, and exact-PID companion startup) so DiscordPresence.exe does not need to change. The client addresses/field offsets are compatibility data for WoW 1.12.1 build 5875. IchaLaunch remains credited as an earlier Rich Presence implementation that inspired this integration; its source code is not bundled here.