From 9c37530c24e148653ce691bd8857e24614c9fb5c Mon Sep 17 00:00:00 2001 From: Dusk-92 Date: Mon, 31 Aug 2026 22:17:35 +0200 Subject: [PATCH] Add Discord Presence settings and file ownership --- setup_tool.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/setup_tool.py b/setup_tool.py index 933bd57..a3ae92e 100644 --- a/setup_tool.py +++ b/setup_tool.py @@ -107,6 +107,7 @@ class WowSetupTool: "minimapicons.dll": "Adds TBC/WotLK-style minimap tracking icons for NPCs and objects, combined into a new native tracking dropdown.", "pngscreenshots.dll": "Saves screenshots as compressed PNG files on a background thread to completely eliminate frame drops when taking pictures.", "worldmarkers.dll": "Place up to 5 animated colored markers (Cataclysm style) in the world for raid positioning. Syncs automatically with other users.", + "DiscordPresence.dll": "Shows your WoW character activity on Discord. A read-only helper DLL writes character status under .modernization_tool\\DiscordPresence, while DiscordPresence.exe handles Discord IPC outside the WoW process.", # Tweaks Tab "fov": "Calculates horizontal Field of View mathematically scaled to maintain vertical aspect space based on your screen ratio.", @@ -139,6 +140,7 @@ class WowSetupTool: self.wow_dir = tk.StringVar() self.rendering_mode = tk.StringVar(value="directx9") self.install_autologin = tk.BooleanVar(value=True) + self.discord_application_id = tk.StringVar(value="") self.screen_w = self.root.winfo_screenwidth() self.screen_h = self.root.winfo_screenheight() @@ -172,7 +174,8 @@ class WowSetupTool: "logsessions.dll": tk.BooleanVar(value=False), "minimapicons.dll": tk.BooleanVar(value=False), "pngscreenshots.dll": tk.BooleanVar(value=False), - "worldmarkers.dll": tk.BooleanVar(value=False) + "worldmarkers.dll": tk.BooleanVar(value=False), + "DiscordPresence.dll": tk.BooleanVar(value=False) } self.addon_dependencies = { @@ -321,6 +324,7 @@ class WowSetupTool: "version": 1, "rendering_mode": self.rendering_mode.get(), "install_autologin": bool(self.install_autologin.get()), + "discord_application_id": self.discord_application_id.get().strip(), "core_plugins": { name: bool(var.get()) for name, var in self.core_plugins.items() }, @@ -410,6 +414,19 @@ class WowSetupTool: ) self.install_autologin.set(os.path.isfile(autologin_lua)) + discord_id_path = os.path.join( + target_dir, + ".modernization_tool", + "DiscordPresence", + "discord_application_id", + ) + if os.path.isfile(discord_id_path): + try: + with open(discord_id_path, "r", encoding="ascii", errors="ignore") as handle: + self.discord_application_id.set(handle.read().strip()) + except OSError: + pass + managed_ids = { "darker_nights": "visual_darker_nights", "pretty_night_sky": "visual_pretty_night_sky", @@ -449,6 +466,10 @@ class WowSetupTool: if isinstance(saved.get("install_autologin"), bool): self.install_autologin.set(saved["install_autologin"]) + discord_application_id = saved.get("discord_application_id") + if isinstance(discord_application_id, str): + self.discord_application_id.set(discord_application_id.strip()) + self._set_bool_mapping(saved.get("core_plugins"), self.core_plugins) self._set_bool_mapping(saved.get("optional_plugins"), self.optional_plugins) self._set_bool_mapping(saved.get("visual_mods"), self.visual_mods) @@ -1306,6 +1327,11 @@ class WowSetupTool: os.path.join(target, dll_name), f"managed plugin {dll_name}", ) + if dll_name == "DiscordPresence.dll": + remove_managed_file( + os.path.join(target, "DiscordPresence.exe"), + "managed Discord Presence companion", + ) @staticmethod