@echo off setlocal :: --------- Setup Log --------- set "LOG_FILE=cosmic_setup.log" echo [%DATE% %TIME%] Starting script... > "%LOG_FILE%" :: --------- Define Paths --------- set "CURRENT_DIR=%~dp0" if "%CURRENT_DIR:~-1%"=="\" set "CURRENT_DIR=%CURRENT_DIR:~0,-1%" :: Try to read the Filespec value for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\VB and VBA Program Settings\VIPMUD\DefaultFolder" /v Filespec 2^>nul') do set "TARGET_DIR=%%j" :: Fallback if not found if not defined TARGET_DIR set "TARGET_DIR=%USERPROFILE%\Documents\VIP Mud\Cosmic Rage" echo Target directory: %TARGET_DIR% set "SET_FILE=%TARGET_DIR%\cosmic rage.set" set "LOADER_FILE=%TARGET_DIR%\loader.set" set "SOUNDS_DIR=%CURRENT_DIR%\sounds" set "REPO_URL=https://gitea.nathantech.net//CosmicRage/CosmicRageSounds" set "REPO_SUBFOLDER=wav" set "GIT_PORTABLE=%CURRENT_DIR%\gitportable\bin\git.exe" echo [%DATE% %TIME%] Script location: %CURRENT_DIR% >> "%LOG_FILE%" echo [%DATE% %TIME%] Target directory: %TARGET_DIR% >> "%LOG_FILE%" echo [%DATE% %TIME%] Sounds directory: %SOUNDS_DIR% >> "%LOG_FILE%" :: --------- Determine which Git to use --------- set "GIT_CMD=" where git >nul 2>nul if %errorlevel%==0 ( set "GIT_CMD=git" echo [%DATE% %TIME%] Git found in PATH. >> "%LOG_FILE%" ) else if exist "%GIT_PORTABLE%" ( set "GIT_CMD=%GIT_PORTABLE%" echo [%DATE% %TIME%] Git not found in PATH, using GitPortable. >> "%LOG_FILE%" ) else ( echo [%DATE% %TIME%] ERROR: Git not found in PATH or at %GIT_PORTABLE% >> "%LOG_FILE%" echo ERROR: Git not found in PATH or at %GIT_PORTABLE% pause exit /b ) :: --------- Handle Existing Cosmic Rage Folder --------- if exist "%TARGET_DIR%" ( echo The target folder already exists: "%TARGET_DIR%" echo Would you like to delete and recreate it? Warning: this may delete existing scripts or set gags. This cannot be undone! Please backup the folder. (Y/N) set "userchoice=" set /p userchoice=Your choice: if /i "%userchoice%"=="Y" ( echo [%DATE% %TIME%] Deleting existing folder... >> "%LOG_FILE%" rd /s /q "%TARGET_DIR%" if exist "%TARGET_DIR%" ( echo [%DATE% %TIME%] ERROR: Could not delete folder. >> "%LOG_FILE%" echo ERROR: Could not delete folder. Files might be in use. pause exit /b ) echo Creating fresh folder... mkdir "%TARGET_DIR%" ) else ( echo [%DATE% %TIME%] Keeping existing folder. >> "%LOG_FILE%" echo Continuing with existing folder... ) ) else ( echo [%DATE% %TIME%] Folder does not exist. Creating new one. >> "%LOG_FILE%" mkdir "%TARGET_DIR%" ) if not exist "%TARGET_DIR%" ( echo [%DATE% %TIME%] ERROR: Failed to create folder. >> "%LOG_FILE%" echo ERROR: Could not create folder. Check permissions or path. pause exit /b ) echo [%DATE% %TIME%] Folder is ready. >> "%LOG_FILE%" :: --------- Download sounds using sparse checkout --------- echo [%DATE% %TIME%] Downloading sound files using Git sparse clone... >> "%LOG_FILE%" rd /s /q "%SOUNDS_DIR%" >nul 2>&1 "%GIT_CMD%" clone --depth=1 --filter=blob:none --sparse "%REPO_URL%" "%SOUNDS_DIR%" if errorlevel 1 ( echo [%DATE% %TIME%] ERROR: Git clone failed. >> "%LOG_FILE%" echo ERROR: Failed to clone repo. Check network or Git version. pause exit /b ) pushd "%SOUNDS_DIR%" "%GIT_CMD%" sparse-checkout set "%REPO_SUBFOLDER%" if not exist "%SOUNDS_DIR%\%REPO_SUBFOLDER%" ( echo [%DATE% %TIME%] ERROR: Failed to checkout sparse folder. >> "%LOG_FILE%" echo ERROR: Could not pull sparse folder. Check folder name or repo. popd pause exit /b ) popd echo [%DATE% %TIME%] Sounds successfully cloned. >> "%LOG_FILE%" :: --------- Create cosmic rage.set --------- if not exist "%SET_FILE%" ( echo [%DATE% %TIME%] Creating cosmic rage.set >> "%LOG_FILE%" ( echo #Load ^{%%CharInfo^(MudName^)/loader.set^} echo #If ^{%%Defined^(scpath^)=1 and %%Defined^(sppath^)=1^} ^{ #Load @scpath/Main.set^} ^{ #Say ^{WARNING! The scripts path and/or the sounds path are not defined. Unable to load the soundpack!^}^} ) > "%SET_FILE%" echo Created: cosmic rage.set ) else ( echo cosmic rage.set already exists. ) :: --------- Create loader.set --------- echo [%DATE% %TIME%] Creating loader.set >> "%LOG_FILE%" ( echo #Var scpath ^{%CURRENT_DIR%^/scripts} echo #Var sppath ^{%CURRENT_DIR%^/sounds/%REPO_SUBFOLDER%} ) > "%LOADER_FILE%" echo Created: loader.set :: --------- Copy settings.set --------- if exist "%CURRENT_DIR%\scripts\settings.set" ( echo [%DATE% %TIME%] Copying settings.set >> "%LOG_FILE%" copy "%CURRENT_DIR%\scripts\settings.set" "%TARGET_DIR%\" >nul echo settings.set copied to target directory. ) else ( echo [%DATE% %TIME%] WARNING: scripts\settings.set not found. >> "%LOG_FILE%" echo WARNING: scripts\settings.set not found. ) :: --------- Copy gags folder --------- if exist "%CURRENT_DIR%\scripts\gags" ( echo [%DATE% %TIME%] Copying gags folder >> "%LOG_FILE%" xcopy /E /I /Y "%CURRENT_DIR%\scripts\gags" "%TARGET_DIR%\gags" >nul echo gags folder copied to target directory. ) else ( echo [%DATE% %TIME%] WARNING: scripts\gags folder not found. >> "%LOG_FILE%" echo WARNING: scripts\gags folder not found. ) :: --------- Finish --------- echo [%DATE% %TIME%] Script completed successfully. >> "%LOG_FILE%" echo Setup complete. Files are in "%TARGET_DIR%". pause exit /b