@echo off
setlocal enabledelayedexpansion
chcp 936 >nul
title 飞升计划coa

set "NEWIP=43.226.78.25"
set "CLEAN_CACHE=0"
set "ROOT="
set "EXE="
set "COUNT=0"
set "FAIL=0"

echo ==================================================
echo             飞升计划coa
echo --------------------------------------------------
echo   目标服务器 : %NEWIP%
echo   写入内容   : set realmlist %NEWIP%
echo                set patchlist %NEWIP%
echo ==================================================
echo.

rem ========== 1. 定位客户端根目录(优先 Ascension.exe) ==========
call :Locate Ascension.exe
if not defined ROOT call :Locate Ascension*.exe
if not defined ROOT call :Locate Wow.exe
if not defined ROOT call :Locate wow.exe
if not defined ROOT goto :NotFound

echo.
echo [定位] 客户端目录 = !ROOT!
echo.

rem ========== 2. 写入 realmlist(所有已存在的语言目录 + 根目录) ==========
for %%L in (enUS enTW zhCN enCN zhTW) do (
    if exist "!ROOT!Data\%%L\" call :Patch "!ROOT!Data\%%L\realmlist.wtf"
)
call :Patch "!ROOT!realmlist.wtf"
echo.

if "!COUNT!"=="0" goto :NoWrite

rem ========== 3. 可选：清理缓存 ==========
if "!CLEAN_CACHE!"=="1" call :CleanCache

rem ========== 4. 启动游戏 ==========
set "EXE="
if exist "!ROOT!Ascension.exe" set "EXE=Ascension.exe"
if not defined EXE for %%F in ("!ROOT!Ascension*.exe") do if not defined EXE set "EXE=%%~nxF"
if not defined EXE if exist "!ROOT!wow.exe" set "EXE=wow.exe"
if not defined EXE if exist "!ROOT!Wow.exe" set "EXE=Wow.exe"
if not defined EXE goto :NoExe

echo ==================================================
echo   [完成] 共修改 !COUNT! 个 realmlist.wtf
echo   [启动] !ROOT!!EXE!
echo ==================================================
echo.
echo   窗口 3 秒后自动关闭，游戏马上启动...
cd /d "!ROOT!"
start "" "!EXE!"
ping -n 3 127.0.0.1 >nul
exit /b


rem ==================== 错误处理 ====================
:NotFound
echo.
echo ==================================================
echo   [失败] 没有找到游戏客户端
echo.
echo   请把本文件复制到游戏客户端根目录后再运行，
echo   也就是能看到 Ascension.exe 的那一层文件夹。
echo ==================================================
echo.
pause
exit /b

:NoWrite
echo ==================================================
echo   [失败] 没能写入任何 realmlist.wtf
echo   请右键本文件 - 以管理员身份运行
echo ==================================================
echo.
pause
exit /b

:NoExe
echo ==================================================
echo   [提示] realmlist 已经改好，但没找到启动程序
echo   请手动去 !ROOT! 双击 Ascension.exe
echo ==================================================
echo.
pause
exit /b


rem ==================== 子程序 ====================

rem 用法: call :Locate 目标文件名(可用通配符)  结果 -> ROOT
:Locate
set "ROOT="
if exist "%~dp0%~1" set "ROOT=%~dp0"
if defined ROOT exit /b

for /f "delims=" %%F in ('dir /s /b /a-d "%~dp0%~1" 2^>nul') do (
    if not defined ROOT set "ROOT=%%~dpF"
)
if defined ROOT exit /b

echo [搜索] 本文件所在盘 %~d0 中查找 %~1 ...
for /f "delims=" %%F in ('dir /s /b /a-d "%~d0\%~1" 2^>nul') do (
    if not defined ROOT set "ROOT=%%~dpF"
)
if defined ROOT exit /b

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 not defined ROOT if exist "%%D:\" (
        if /i not "%%D:"=="%~d0" echo [搜索] 正在扫描 %%D: 盘 ...
        for /f "delims=" %%F in ('dir /s /b /a-d "%%D:\%~1" 2^>nul') do (
            if not defined ROOT set "ROOT=%%~dpF"
        )
    )
)
exit /b


rem 用法: call :Patch 完整的 realmlist.wtf 路径
:Patch
set "FP=%~1"
if not exist "!FP!.bak" copy /y "!FP!" "!FP!.bak" >nul 2>nul
attrib -r "!FP!" >nul 2>nul
> "!FP!" echo set realmlist %NEWIP%
>> "!FP!" echo set patchlist %NEWIP%
findstr /c:"set realmlist %NEWIP%" "!FP!" >nul 2>nul
if errorlevel 1 (
    echo   [失败] 写入失败，可能权限不足 : "!FP!"
    set /a FAIL+=1
    exit /b
)
set /a COUNT+=1
echo   [OK] "!FP!"
exit /b


:CleanCache
if not exist "!ROOT!Cache\" exit /b
echo [清理] 正在清空 Cache 目录 ...
rd /s /q "!ROOT!Cache" >nul 2>nul
exit /b
