@echo off
:: ============================================================
:: Mu Diminion - Fix Thai Typing (Defender Exclusion)
:: ============================================================
:: ดับเบิลคลิกไฟล์นี้ - จะขอ Admin (UAC) - แล้วทำงานอัตโนมัติ:
::   1. เพิ่ม Windows Defender exclusion
::   2. ดาวน์โหลด main.exe (แพตช์ชื่อไทย) + ThaiChat.dll + SkillSave.dll + Licencia
::   3. ลบ Fox.info cache
::   4. ตรวจสอบไฟล์
:: ============================================================

:: ----- Auto-elevate to Administrator -----
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~f0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /b
)

title=Mu Diminion - Fix Thai Typing
cd /d "%~dp0"

echo.
echo ============================================================
echo   Mu Diminion - Fix Thai Typing (Defender Exclusion)
echo ============================================================
echo.

:: ----- Step 1: หาโฟลเดอร์เกม -----
set "GAMEDIR="
if exist "main.exe" set "GAMEDIR=%CD%"
if not defined GAMEDIR (
    if exist "%USERPROFILE%\Downloads\Mu Client Diminion\Mu Client Diminion\main.exe" (
        set "GAMEDIR=%USERPROFILE%\Downloads\Mu Client Diminion\Mu Client Diminion"
    )
)
if not defined GAMEDIR (
    if exist "C:\MuClient\main.exe" set "GAMEDIR=C:\MuClient"
)
if not defined GAMEDIR (
    if exist "D:\MuClient\main.exe" set "GAMEDIR=D:\MuClient"
)
if not defined GAMEDIR (
    if exist "D:\Games\Mu Diminion\main.exe" set "GAMEDIR=D:\Games\Mu Diminion"
)
if not defined GAMEDIR (
    echo [ERROR] ไม่พบโฟลเดอร์เกม - กรุณาวาง fix-thai.cmd ไว้ในโฟลเดอร์เดียวกับ main.exe
    echo.
    echo หรือดาวน์โหลดแบบ Manual: https://mudiminion.com/update/manual-fallback.html
    pause
    exit /b 1
)
echo [1/4] โฟลเดอร์เกม: %GAMEDIR%
echo.

:: ----- Step 2: เพิ่ม Defender exclusion (admin required) -----
echo [2/4] เพิ่ม Windows Defender exclusion...
powershell -NoProfile -ExecutionPolicy Bypass -Command "try { Add-MpPreference -ExclusionPath '%GAMEDIR%' -ErrorAction Stop; Write-Host '    OK - เพิ่ม exclusion แล้ว' -ForegroundColor Green } catch { Write-Host ('    WARNING: ' + $_.Exception.Message) -ForegroundColor Yellow; Write-Host '    (Defender อาจถูก disable หรือติดตั้งด้วยนโยบายองค์กร)' -ForegroundColor Yellow }"
echo.

:: ----- Step 3: สำรอง main.exe เดิม แล้วดาวน์โหลดชุดแพตช์ -----
echo [3/4] ดาวน์โหลดไฟล์...
if exist "%GAMEDIR%\main.exe" (
    copy /y "%GAMEDIR%\main.exe" "%GAMEDIR%\main.exe.bak" >nul 2>&1
    echo    สำรอง main.exe เดิมเป็น main.exe.bak แล้ว
)
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
    "$ErrorActionPreference = 'Stop';" ^
    "$BASE = 'https://mudiminion.com/update/manual-fallback';" ^
    "$FILES = @(@{N='main.exe'; CRC='68560832'; S=11004771}, @{N='ThaiChat.dll'; CRC='84E8DE7F'; S=242688}, @{N='SkillSave.dll'; CRC='C12235E0'; S=92160}, @{N='Licencia'; CRC='3EEEF73D'; S=2189280});" ^
    "foreach ($f in $FILES) {" ^
    "  $dst = Join-Path '%GAMEDIR%' $f.N;" ^
    "  try {" ^
    "    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;" ^
    "    Invoke-WebRequest -Uri ('$BASE/' + $f.N) -OutFile $dst -UseBasicParsing -ErrorAction Stop;" ^
    "    $sz = (Get-Item $dst).Length;" ^
    "    if ($sz -eq $f.S) { Write-Host ('    OK ' + $f.N + ' (' + $sz + ' bytes)') -ForegroundColor Green }" ^
    "    else { Write-Host ('    WARNING: ' + $f.N + ' ขนาดไม่ตรง (' + $sz + ' vs ' + $f.S + ')') -ForegroundColor Yellow }" ^
    "  } catch { Write-Host ('    ERROR: ' + $f.N + ' - ' + $_.Exception.Message) -ForegroundColor Red }" ^
    "}"
echo.

:: ----- Step 4: ลบ Fox.info cache -----
echo [4/4] ลบ Fox.info cache...
if exist "%GAMEDIR%\Fox.info" (
    del /f /q "%GAMEDIR%\Fox.info" 2>nul
    if exist "%GAMEDIR%\Fox.info" (
        echo    WARNING: ลบไม่สำเร็จ - ปิด launcher ก่อน
    ) else (
        echo    OK - ลบ Fox.info แล้ว
    )
) else (
    echo    OK - ไม่มี Fox.info
)
echo.

:: ----- Kill any running game processes -----
echo [*] ปิด process เกมที่ค้าง (ถ้ามี)...
taskkill /f /im MU_Diminion_Core.exe 2>nul
taskkill /f /im main.exe 2>nul
echo    OK
echo.

:: ----- Done -----
echo ============================================================
echo   เสร็จแล้ว!
echo ============================================================
echo.
echo ขั้นตอนต่อไป:
echo   1. เปิดเกมผ่าน ตัวเข้าเกมส์.exe
echo   2. ก่อนพิมพ์ชื่อไทย ให้กด Win + Space เลือกแป้นพิมพ์ TH
echo      (ถ้าพิมพ์แล้วต้องกด Space/Enter ยืนยันคำ = กำลังใช้ IME
echo       ให้เพิ่มคีย์บอร์ด Thai Kedmanee แล้วสลับเป็นแป้นพิมพ์ TH)
echo   3. ทดสอบพิมพ์ชื่อไทยในหน้าสร้างตัวละคร
echo.
echo ถ้ายังพิมพ์ไทยไม่ได้ - เปิดไฟล์ ThaiChat-status.txt ในโฟลเดอร์เกม
echo   แล้วส่งข้อความมาให้แอดมินดู
echo   (หรือรัน ThaiName-Diag.bat แล้วส่ง ThaiName-Diag.txt ให้แอดมิน)
echo.

set "OPEN="
set /p "OPEN=เปิดเกมเลยไหม? (y/n): "
if /i "%OPEN%"=="y" (
    if exist "%GAMEDIR%\ตัวเข้าเกมส์.exe" (
        start "" "%GAMEDIR%\ตัวเข้าเกมส์.exe"
    ) else (
        start "" "%GAMEDIR%\MU_Diminion_Core.exe"
    )
)
del /f /q "%temp%\getadmin.vbs" 2>nul
pause
