The problem was that Discord RPC presence was never being sent because the Active flag was never set to true.
Here’s how it works:
Before the Fix
Game starts → DiscordRpcEngine.Init() is called
Init creates event handlers and calls DiscordRpc.Initialize()
The code expects Discord to call back with a Ready() event, which sets Active = true
But if that callback is slow or doesn’t fire immediately, Active stays false
Every call to SendFSOPresence() has this guard at the start:
if (!Active) return; // Returns immediately, does nothing
Result: Discord RPC silently fails — the presence never updates
After the Fix
Game starts → DiscordRpcEngine.Init() is called
Init creates event handlers and calls DiscordRpc.Initialize()
Immediately set Active = true (line added)
Now SendFSOPresence() calls can proceed past the guard check
Presence updates are actually sent to Discord
When the Ready() callback eventually fires, it also sets Active = true (redundant but harmless)
Why This Works
The Active flag acts as a “gate” — it has to be true for any presence updates to go through. By setting it immediately after initialization (rather than waiting for an asynchronous callback), we ensure the system is ready to send presence updates right away. If the Discord connection actually fails, the exception handler still sets Active = false to disable it.
