@echo off
chcp 1251 >nul
title Vintage Story Master-server Changer

set FILE=%APPDATA%\vintagestorydata\clientsettings.json

if not exist "%FILE%" (
    echo Файл clientsettings.json не найден!
    echo %FILE%
    pause
    exit /b
)

:CHECK_PROCESS
tasklist /FI "IMAGENAME eq Vintagestory.exe" | find /I "Vintagestory.exe" >nul
if not errorlevel 1 (
    cls
    echo ================================
    echo  Vintage Story сейчас запущена!
    echo ================================
    echo.
    echo Пожалуйста, закройте игру перед изменением настроек.
    echo После закрытия нажмите любую клавишу...
    echo.
    pause >nul
    goto CHECK_PROCESS
)

cls
echo =====================================================================
echo.
echo Будет установлен следующий мастер-сервер:
echo https://masterserver-mirror.vintagestory.cc/
echo.
echo Если вы ХОТИТЕ изменить мастер-сервер — просто подождите 15 секунд.
echo Если вы НЕ хотите этого — закройте это окно!
echo.
echo =====================================================================
echo.

timeout /t 15 >nul

echo Проверка резервной копии...

if exist "%FILE%.BAK_MS" (
    echo Резервная копия уже существует — пропускаем создание...
) else (
    echo Создание резервной копии — clientsettings.json.BAK_MS...
    copy /Y "%FILE%" "%FILE%.BAK_MS" >nul
)

powershell -NoProfile -ExecutionPolicy Bypass -Command "$p='%FILE%'; [Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Add-Type -AssemblyName System.Web.Extensions; $s=New-Object System.Web.Script.Serialization.JavaScriptSerializer; $raw=[System.IO.File]::ReadAllText($p, [System.Text.Encoding]::UTF8); $o=$s.DeserializeObject($raw); function SetKeyCI($m,$n,$v){ if($m -eq $null){return}; $k=$null; foreach($kk in $m.Keys){ if($kk -ieq $n){$k=$kk; break} }; if($k -ne $null){$m[$k]=$v} else {$m[$n]=$v} }; function DelKeyCI($m,$n){ if($m -eq $null){return}; $k=$null; foreach($kk in $m.Keys){ if($kk -ieq $n){$k=$kk; break} }; if($k -ne $null){$m.Remove($k) | Out-Null} }; SetKeyCI $o['stringSettings'] 'masterserverUrl' 'https://masterserver-mirror.vintagestory.cc/'; SetKeyCI $o['intSettings'] 'webRequestTimeout' 60; DelKeyCI $o 'masterserverUrl'; DelKeyCI $o 'webRequestTimeout'; $json=$s.Serialize($o); [System.IO.File]::WriteAllText($p, $json, (New-Object System.Text.UTF8Encoding($false)))" >nul 2>&1

echo.
echo OK!

pause
