From 449a8408abd7fe0fd633503542535d0c9c903ec1 Mon Sep 17 00:00:00 2001 From: jdflyer Date: Sun, 19 Jul 2026 20:01:46 -0700 Subject: [PATCH] Correctly unregister gamemodes from the service --- src/dusk/mods/svc/gamemode.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/dusk/mods/svc/gamemode.cpp b/src/dusk/mods/svc/gamemode.cpp index d46e9f7cda..bab07b05c2 100644 --- a/src/dusk/mods/svc/gamemode.cpp +++ b/src/dusk/mods/svc/gamemode.cpp @@ -110,7 +110,14 @@ ModResult register_gamemode(ModContext* ctx, const GamemodeDesc* desc) { } ModResult unregister_gamemode(ModContext* ctx, const char* id) { - dusk::gamemode::getGamemodeManager().unregisterGamemode(get_mod_gamemode_id(ctx,id)); + std::string fullId = get_mod_gamemode_id(ctx,id); + dusk::gamemode::getGamemodeManager().unregisterGamemode(fullId); + + // Remove the gamemode from the service registered gamemodes map + auto it = s_gamemodesRegisteredToMods.find(ctx->mod->metadata.id); + if (it != s_gamemodesRegisteredToMods.end()) { + std::erase(it->second, fullId); + } return MOD_OK; }