@echo off
chcp 936 >nul 2>&1  ::解决中文乱码
setlocal enabledelayedexpansion
title 暗黑4一键反和谐
echo 暗黑4一键反和谐工具开始执行
echo.

:: 初始化暗黑4安装路径变量
set "d4Path="

:: 第一步：检查当前目录是否存在Diablo IV.exe
if exist "Diablo IV.exe" (
    set "d4Path=%cd%"
)

:: 第二步：当前目录不存在时，读取注册表获取安装路径
if not defined d4Path (
    :: 读取注册表中的暗黑4安装路径
    for /f "skip=2 tokens=3*" %%a in (
        'reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Diablo IV" /v InstallLocation 2^>nul'
    ) do (
        set "regPath=%%a %%b"
        :: 检查注册表路径下是否存在主程序
        if exist "!regPath!\Diablo IV.exe" (
            set "d4Path=!regPath!"
        )
    )
)

:: 第三步注册表未找到时，遍历C-Z盘下的可能安装路径
if not defined d4Path (
    :: 定义需要查找的候选路径列表；分隔，兼容含空格的路径描述
    set "candidatePaths=Diablo IV;Blizzard\Diablo IV;游戏\Diablo IV;game\Diablo IV;暴雪游戏\Diablo IV;战网游戏\Diablo IV;单机游戏\Diablo IV;网络游戏\Diablo IV"
    
    :: ===== 将路径分割循环移到盘符循环外层 =====
    set "tempPaths=!candidatePaths!"
    :pathLoop  :: 新的路径分割标签（移出for %%d循环）
    if not defined tempPaths goto :endPathLoop  :: 路径列表遍历完则退出
    
    :: 分割出当前要检查的路径片段
    for /f "delims=; tokens=1*" %%p in ("!tempPaths!") do (
        set "currentPath=%%p"
        set "tempPaths=%%q"
    )
    
    :: 遍历C-Z盘符检查当前路径片段
    for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
        if exist "%%d:\" (
            :: 拼接完整检查路径
            set "fullCheckPath=%%d:\!currentPath!"
            echo !fullCheckPath!
            if exist "!fullCheckPath!\Diablo IV.exe" (
                set "d4Path=!fullCheckPath!"
                goto :foundDrivePath  :: 找到路径后跳出所有循环
            )
        )
    )
    goto :pathLoop  :: 继续检查下一个路径片段
    :endPathLoop  :: 路径列表遍历结束标签
    :: ===== 结束 =====
)
:foundDrivePath

:: 第四步：判断是否找到有效路径，找到则处理，未找到则提示
if defined d4Path (
    echo.
    echo ======================================
    echo 你的暗黑4安装路径：!d4Path!
    echo ======================================
    echo.
    :: 切换到暗黑4目录
    cd /d "!d4Path!" || (
        echo 无法切换到暗黑4目录：!d4Path!
        pause >nul
        exit /b 1
    )
    
    :: 创建WTF文件夹（忽略已存在的错误）
    md WTF >nul 2>&1
    
    :: 写入反和谐配置文件
    echo SET OverrideArchive "0" > "WTF\Config.wtf"
    
    :: 检查配置文件是否创建成功
    if not exist "WTF\Config.wtf" (
        echo 无法创建Config.wtf文件，请以管理员身份运行本脚本！
        pause >nul
        exit /b 1
    )
    
    :: 成功提示
    echo.
    echo --------------------
    echo 反和谐文件配置完成！
    echo --------------------
    echo 重要注意事项：
    echo 1. 第一次运行需确保启动参数中包含 -enableagentmanager
    echo 2. 启动参数位置：战网客户端→暗黑4→选项→游戏设置→额外启动参数
    echo 3. 若配置无效，可尝试在执行本脚本前关闭所有战网进程
    echo ----------------------------
    echo 工具来源：www.d4hud.com
    echo ----------------------------
) else (
    :: 所有路径都未找到，提示复制脚本到安装目录
    echo 未检测到暗黑4安装目录，请将本bat文件手动复制到暗黑4安装目录（包含Diablo IV.exe的文件夹）后重新执行！
)

pause >nul
endlocal