Subversion Repositories nw_plus

Rev

Rev 58 | Rev 63 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. @echo off
  2. color 0C
  3. setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
  4. pushd "%~dp0"
  5. set startdir=%cd%
  6.  
  7. :restart
  8. title Duke: Nuclear Winter Plus Launcher
  9. if "%editor%"=="1" title Duke: Nuclear Winter Plus Editor Launcher
  10.  
  11. set exedir=%startdir%
  12. set addondir=%startdir%
  13. set addonhrpdir=%startdir%
  14.  
  15. set exename=eduke32
  16. set exeproper=EDuke32
  17. set action=playing
  18.  
  19. if "%editor%"=="1" (
  20. set exename=mapster32
  21. set exeproper=Mapster32
  22. set action=editing
  23. )
  24.  
  25. set addonver=r004
  26.  
  27. :title
  28. echo                          ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  29. echo                          º Duke: Nuclear Winter Plus º
  30. echo                          ÈÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍͼ
  31. echo                               ³ By Hendricks266 ³
  32. echo                               ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
  33. echo.
  34. echo You are %action% Simply Silly Software's Duke: Nuclear Winter with the various
  35. echo enhancements of Duke: Nuclear Winter Plus, maintained by Hendricks266.
  36. echo.
  37.  
  38.  
  39. if "%xxx%"=="1" echo Using XXX mode.
  40. if "%dp%"=="1" echo Using Duke Plus by DeeperThought.
  41. if "%debug%"=="1" echo Using debug mode.
  42.  
  43. if "%debug%"=="1" echo DEBUG: Command Line Input: %*
  44.  
  45. :recheck
  46. if not exist %exename%.exe goto execheck
  47. :execheck_done
  48. set exedir=%cd%
  49. if "%debug%"=="1" echo DEBUG: %exeproper% Directory: "%exedir%"
  50.  
  51. if not exist nw_plus\ goto nodir
  52. if not exist duke3d.grp echo Warning: You don't have Duke3D.grp in your directory.
  53.  
  54. if exist nwinter\ set addonhrpdir=%cd%
  55. :addondircheck
  56.  
  57. chdir nw_plus
  58. set addondir=%cd%
  59. if exist nwinter\ set addonhrpdir=%cd%
  60. if exist nw_plus\ goto addondircheck
  61. if "%debug%"=="1" echo DEBUG: NW+ Directory: "%addondir%".
  62. if "%debug%"=="1" echo DEBUG: NWHRP Directory: "%addonhrpdir%".
  63.  
  64. if "%nwgrpname%"=="" set nwgrpname=nwinter.grp
  65. if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%exedir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp
  66. if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%addondir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp
  67. if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" goto nonwgrp
  68.  
  69. if exist nwinter.grp ren nwinter.grp nwinter.grp
  70. call :grpchecksum
  71. :nonwgrp_return
  72. if not "%version%"=="demo" (
  73. if not exist nwl1.map goto mapextract
  74. if not exist nwl2.map goto mapextract
  75. if not exist nwl3.map goto mapextract
  76. if not exist nwl4.map goto mapextract
  77. if not exist nwl5.map goto mapextract
  78. if not exist nwl6.map goto mapextract
  79. if not exist nwl7.map goto mapextract
  80. if not exist nwl8.map goto mapextract
  81. if not exist nwflag_%addonver%.h266 goto updateextract
  82. )
  83.  
  84.  
  85.  
  86.  
  87. chdir /d "%exedir%"
  88. echo.
  89. echo To switch your character, open the console (~) and type one of the following:
  90. echo Duke: "setvar skin 0".
  91. echo Santa: "setvar skin 1".
  92. echo.
  93. echo.
  94. echo.
  95. echo.
  96. echo.
  97. echo.
  98.  
  99. :init
  100. pause
  101. echo.
  102. goto check
  103.  
  104. :check
  105.  
  106. echo.
  107. echo Launching Duke Nukem 3D . . .
  108. echo Thanks for %action%!
  109. echo.
  110.  
  111. if "%editor%"=="1" (
  112. type "%exedir%\names.h" > "%exedir%\NWNames.h"
  113. echo. >> "%exedir%\NWNames.h"
  114. type "%addondir%\NWNames.def" >> "%exedir%\NWNames.h"
  115. )
  116.  
  117. :arguments
  118. set args=
  119. if exist "%exedir%\HRP\" set args=%args% -jHRP
  120. if exist "%exedir%\polymer_hrp\" set args=%args% -jpolymer_hrp
  121. if exist "%exedir%\duke3d_voxel.zip" set args=%args% -gduke3d_voxel.zip
  122. if exist "%exedir%\duke3d_hrp.zip" set args=%args% -gduke3d_hrp.zip
  123. if exist "%exedir%\hrp_update.zip" set args=%args% -ghrp_update.zip
  124. if exist "%exedir%\maphacks.zip" set args=%args% -gmaphacks.zip
  125. if exist "%exedir%\eduke32_mus.zip" set args=%args% -geduke32_mus.zip
  126. if exist "%addondir%" if not "%addondir%"=="%exedir%" set args=%args% -j"%addondir:\=/%"
  127. if exist "%addonhrpdir%" if not "%addonhrpdir%"=="%exedir%" if not "%addonhrpdir%"=="%addondir%" set args=%args% -j"%addonhrpdir:\=/%"
  128. set args=%args% -g%nwgrpname% -hnwinter.def -xNWEDuke.con
  129. if "%editor%"=="1" set args=%args% -namesfile NWNames.h
  130. if "%dp%"=="1" set args=%args% -hnw_dp.def -xNWDP.con
  131. if "%xxx%"=="1" if exist "%exedir%\xxx_lite.zip" set args=%args% -gxxx_lite.zip
  132. if "%xxx%"=="1" if exist "%exedir%\xxx_lite\" set args=%args% -jxxx_lite
  133. if "%xxx%"=="1" if exist "%exedir%\xxx_pack.zip" set args=%args% -gxxx_pack.zip
  134. if "%xxx%"=="1" if exist "%exedir%\xxx_pack\" set args=%args% -jxxx_pack
  135. if "%xxx%"=="1" set args=%args% -hnw_xxx.def
  136. if "%xxx%"=="1" if "%dp%"=="1" set args=%args% -hnw_dp_xxx.def -xNWDPXXX.con
  137. set args=%args% %*
  138. if "%dp%"=="1" set args=%args% -jDukePlus
  139.  
  140. set exe=%exename%
  141. if "%debug%"=="1" set exe=%exename%.debug
  142.  
  143. if exist %exe%.bat (
  144. if "%debug%"=="1" echo DEBUG: Final Command Line: call %exe%.bat %args%
  145. call %exe%.bat %args%
  146. ) else (
  147. if "%debug%"=="1" echo DEBUG: Final Command Line: start %exe%.exe %args%
  148. start %exe%.exe %args%
  149. )
  150.  
  151. set svnpath=0
  152. if "%svnpath%"=="0" if exist "%startdir%\svn\bin\svn.exe" set svnpath=%startdir%\svn\bin
  153. if "%svnpath%"=="0" if exist "%exedir%\svn\bin\svn.exe" set svnpath=%exedir%\svn\bin
  154. if "%svnpath%"=="0" if exist "%ProgramFiles%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles%\SlikSvn\bin
  155. if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\SlikSvn\bin
  156. if "%svnpath%"=="0" if exist "%ProgramFiles%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles%\Subversion\bin
  157. if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\Subversion\bin
  158. if "%svnpath%"=="0" if exist "%ProgramFiles%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles%\TortoiseSVN\bin
  159. if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\TortoiseSVN\bin
  160. if "%svnpath%"=="0" for %%S in (svn.exe) do if exist "%%~dp$PATH:S" set svnpath=%%~dp$PATH:S
  161.  
  162. chdir /d "%addondir%"
  163. if not "%svnpath%"=="0" call :svn_action
  164. chdir /d "%addonhrpdir%"
  165. if not "%svnpath%"=="0" call :svn_action
  166.  
  167. goto end
  168.  
  169. :svn_action
  170. set PATH=%PATH%;%svnpath%
  171. for /f "delims=" %%a in ('svnversion.exe .') do @set oldrev=%%a
  172. if "%oldrev%"=="exported" goto :eof
  173. if "%oldrev%"=="Unversioned directory" goto :eof
  174. "svn.exe" update
  175. for /f "delims=" %%a in ('svnversion.exe .') do @set rev=%%a
  176. if %rev% EQU %oldrev% goto :eof
  177. set /a oldrev=%oldrev% + 1
  178. echo.
  179. "svn.exe" log -r %oldrev%:%rev%
  180. echo.
  181. pause
  182. goto :eof
  183.  
  184. :nonwgrp
  185. echo.
  186. echo Error: You don't have NWINTER.GRP in your directory.
  187.  
  188.  
  189. :retry
  190. echo.
  191. set cddrive=
  192. set /p cddrive=What is the drive letter that your Nuclear Winter CD is in?
  193. echo.
  194. if not '%cddrive%'=='' set cddrive=%cddrive:~0,1%
  195. if '%cddrive%'=='' goto cdno
  196. if not exist %cddrive%:\ goto cdno
  197. if not exist %cddrive%:\* goto cdno
  198. if exist %cddrive%:\GAMEDATA\NWINTER.GRP copy %cddrive%:\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
  199. if exist %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP copy %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
  200. if exist %cddrive%:\NW\GAMEDATA\NWINTER.GRP copy %cddrive%:\NW\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
  201. goto cdwrong
  202.  
  203. :nonwgrp_done
  204. echo.
  205. if exist nwinter.grp (
  206. type NWINTRO.TXT
  207. echo.
  208. pause
  209. call :grpchecksum
  210. call :grpchecksum_results
  211. goto nonwgrp_return
  212. )
  213. if not exist nwinter.grp (
  214. echo Installation Error!
  215. echo Contact Hendricks266 for help.
  216. echo.
  217. pause
  218. goto end
  219. )
  220.  
  221. :grpchecksum
  222. if not exist "%addondir%\utils\windows\win32\sha1sum.exe" (
  223. echo "%addondir%\utils\windows\win32\sha1sum.exe" not found.
  224. goto :eof
  225. )
  226. pushd .
  227. if exist "%addondir%\%nwgrpname%" chdir /d %addondir%
  228. if exist "%exedir%\%nwgrpname%" chdir /d %exedir%
  229. echo a6728f621f121f9db02ee67c39efdbb5eea95711 *%nwgrpname% | "%addondir%\utils\windows\win32\sha1sum.exe" --status --check -
  230. if "%ERRORLEVEL%"=="0" set version=full && popd && goto :eof
  231. if "%ERRORLEVEL%"=="1" echo 1b33b2cbb7101b5b18b15855392f55575413ecc3 *%nwgrpname% | "%addondir%\utils\windows\win32\sha1sum.exe" --status --check -
  232. if "%ERRORLEVEL%"=="0" set version=demo && popd && goto :eof
  233. if "%ERRORLEVEL%"=="1" set version=unknown
  234. popd
  235. goto :eof
  236.  
  237. :grpchecksum_results
  238. if "%version%"=="full" echo NWINTER.GRP checksum verified.
  239. if "%version%"=="demo" echo NWINTER.GRP (demo version) checksum verified.
  240. if "%version%"=="unknown" echo NWINTER.GRP checksum does not match. You may have a bad copy.
  241. echo.
  242. goto :eof
  243.  
  244. :cdno
  245. echo '%cddrive%' is not valid.  Please try again.
  246. goto retry
  247.  
  248. :cdwrong
  249. echo '%cddrive%' is not the correct disc.  Please try again.
  250. goto retry
  251.  
  252. :mapextract
  253. echo Extracted maps not found or patched. Proceeding to installation.
  254. goto extract
  255.  
  256. :updateextract
  257. echo Map patch update required. Proceeding to installation.
  258. goto extract
  259.  
  260. :extract
  261. echo.
  262. echo                                ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
  263. echo                                º Installation º
  264. echo                                ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
  265. echo.
  266. call :grpchecksum
  267. call :grpchecksum_results
  268. if not exist nwl1.patch goto nopatch
  269. if not exist nwl2.patch goto nopatch
  270. if not exist nwl3.patch goto nopatch
  271. if not exist nwl4.patch goto nopatch
  272. if not exist nwl5.patch goto nopatch
  273. if not exist nwl6.patch goto nopatch
  274. if not exist nwl7.patch goto nopatch
  275. if not exist nwl8.patch goto nopatch
  276. mkdir nw_preserve
  277. if exist nwl*.map move /y nwl*.map nw_preserve\
  278. if exist "%exedir%\nwl*.map" move /y "%exedir%\nwl*.map" nw_preserve\
  279. "%addondir%\utils\windows\win32\kextract.exe" nwinter.grp E2L*.MAP
  280. ren E2L1.MAP nwl1.map
  281. ren E2L2.MAP nwl2.map
  282. ren E2L3.MAP nwl3.map
  283. ren E2L4.MAP nwl4.map
  284. ren E2L5.MAP nwl5.map
  285. ren E2L6.MAP nwl6.map
  286. ren E2L7.MAP nwl7.map
  287. ren E2L8.MAP nwl8.map
  288. if exist nwpatch*.h266 del /f /q nwpatch*.h266
  289. if exist nwflag*.h266 del /f /q nwflag*.h266
  290. echo.
  291. echo Map patching will now begin.
  292. echo.
  293. pause
  294. echo
  295. "%addondir%\utils\windows\win32\bspatch.exe" nwl1.map nwl1.map nwl1.patch
  296. "%addondir%\utils\windows\win32\bspatch.exe" nwl2.map nwl2.map nwl2.patch
  297. "%addondir%\utils\windows\win32\bspatch.exe" nwl3.map nwl3.map nwl3.patch
  298. "%addondir%\utils\windows\win32\bspatch.exe" nwl4.map nwl4.map nwl4.patch
  299. "%addondir%\utils\windows\win32\bspatch.exe" nwl5.map nwl5.map nwl5.patch
  300. "%addondir%\utils\windows\win32\bspatch.exe" nwl6.map nwl6.map nwl6.patch
  301. "%addondir%\utils\windows\win32\bspatch.exe" nwl7.map nwl7.map nwl7.patch
  302. "%addondir%\utils\windows\win32\bspatch.exe" nwl8.map nwl8.map nwl8.patch
  303. if exist nwpatch*.h266 del /f /q nwpatch*.h266
  304. if exist nwflag*.h266 del /f /q nwflag*.h266
  305. echo Do not delete this file! You will be forced to reinstall NW+ and repatch the maps. >nwflag_%addonver%.h266
  306. attrib +r nwflag_%addonver%.h266
  307. echo.
  308. echo Patching complete!
  309. :scanning
  310. chdir "%exedir%"
  311. echo.
  312. echo Scanning directory for potential problems.
  313. if exist nwl1.mhk goto mhkfound
  314. if exist nwl1demo.mhk goto mhkfound
  315. if exist nwl2.mhk goto mhkfound
  316. if exist nwl3.mhk goto mhkfound
  317. if exist nwl4.mhk goto mhkfound
  318. if exist nwl5.mhk goto mhkfound
  319. if exist nwl6.mhk goto mhkfound
  320. if exist nwl7.mhk goto mhkfound
  321. if exist nwl8.mhk goto mhkfound
  322. if exist _nwzoo.mhk goto mhkfound
  323. :mhkfound_done
  324. if exist TILES005.ART goto artfound
  325. if exist TILES006.ART goto artfound
  326. if exist TILES007.ART goto artfound
  327. if exist TILES008.ART goto artfound
  328. if exist TILES009.ART goto artfound
  329. if exist TILES012.ART goto artfound
  330. if exist TILES013.ART goto artfound
  331. if exist TILES014.ART goto artfound
  332. if exist TILES015.ART goto artfound
  333. :artfound_done
  334. call :checksum c6b8ca33ea6a2ec46b8dfeca4f9a3d5e078d0789 NWACTOR.CON "NWINTER file detected and neutralized:"
  335. call :checksum fdb91aa2912f16232ed9020a7d8ec35834ef58c8 NWDEFS.CON "NWINTER file detected and neutralized:"
  336. call :checksum 2bb2ddc7319e0935569b724f3c67cb953fdb79d6 NWINTER.CON "NWINTER file detected and neutralized:"
  337. call :checksum 5ae347733be1f87f35d1930186de1ed764f4682f NWSNOW.CON "NWINTER file detected and neutralized:"
  338. call :checksum 5df8b3b4216dcfdb8bc0adf6241f8a893eacfd98 NWUSER.CON "NWINTER file detected and neutralized:"
  339. if exist NWinter.con goto confound
  340. if exist NWActor.con goto confound
  341. if exist NWDefs.con goto confound
  342. if exist NWDP.con goto confound
  343. if exist NWDPCode.con goto confound
  344. if exist NWDPXXX.con goto confound
  345. if exist NWEDuke.con goto confound
  346. if exist NWSnow.con goto confound
  347. if exist NWUser.con goto confound
  348. :confound_done
  349. chdir /d "%exedir%"
  350. if not exist GAME.CON "%addondir%\utils\windows\win32\kextract.exe" DUKE3D.GRP GAME.CON
  351. if not exist DEFS.CON "%addondir%\utils\windows\win32\kextract.exe" DUKE3D.GRP DEFS.CON
  352. if not exist USER.CON "%addondir%\utils\windows\win32\kextract.exe" DUKE3D.GRP USER.CON
  353. chdir /d "%addondir%"
  354. echo.
  355. pause
  356. goto restart
  357.  
  358. :checksum
  359. if not exist "%addondir%\utils\windows\win32\sha1sum.exe" (
  360. echo "%addondir%\utils\windows\win32\sha1sum.exe" not found.
  361. goto :eof
  362. )
  363. if not exist "%~2" goto :eof
  364. echo %~1 *%~2 | "%addondir%\utils\windows\win32\sha1sum.exe" --status --check -
  365. if "%ERRORLEVEL%"=="0" (
  366. ren "%~2" "NWOld_%addonver%_%~nx2"
  367. echo %~3 %~nx2
  368. )
  369. goto :eof
  370.  
  371. :nopatch
  372. echo.
  373. echo Error: You don't have all the *.patch files in your directory.
  374. echo Aborting installation.
  375. echo Map patching is required for NW+ to function correctly.
  376. echo.
  377. pause
  378. goto end
  379.  
  380. :mhkfound
  381. echo.
  382. echo Problematic .mhk files have been found in your directory.
  383. echo Unless you have knowingly made a modification to NW's map hacks,
  384. echo the presence of these files in your %exeproper% directory will
  385. echo cause NW+ to function incorrectly.
  386. echo.
  387. echo nwl1.mhk
  388. echo nwl1demo.mhk
  389. echo nwl2.mhk
  390. echo nwl3.mhk
  391. echo nwl4.mhk
  392. echo nwl5.mhk
  393. echo nwl6.mhk
  394. echo nwl7.mhk
  395. echo nwl8.mhk
  396. echo _nwzoo.mhk
  397. goto mhkfound_done
  398.  
  399. :artfound
  400. echo.
  401. echo Problematic .art files have been found in your directory.
  402. echo Unless you have knowingly made a modification to NW's art,
  403. echo the presence of these files in your %exeproper% directory will
  404. echo cause NW+ to function incorrectly.
  405. echo.
  406. echo TILES005.ART
  407. echo TILES006.ART
  408. echo TILES007.ART
  409. echo TILES008.ART
  410. echo TILES009.ART
  411. echo TILES012.ART
  412. echo TILES013.ART
  413. echo TILES014.ART
  414. echo TILES015.ART
  415. goto artfound_done
  416.  
  417. :confound
  418. echo.
  419. echo Problematic .con files have been found in your directory.
  420. echo Unless you have knowingly made a modification to NW's programming,
  421. echo the presence of these files in your %exeproper% directory will
  422. echo cause NW+ to function incorrectly.
  423. echo.
  424. echo NWinter.con
  425. echo NWEDuke.con
  426. echo NWDefs.con
  427. echo NWUser.con
  428. echo NWDP.con
  429. echo NWDPCode.con
  430. echo NWDPXXX.con
  431. echo NWActor.con
  432. echo NWSnow.con
  433. echo.
  434. echo IF THESE ARE THE ORIGINAL NUCLEAR WINTER CON FILES, OR THEY COME FROM
  435. echo AN OUTDATED VERSION OF NW+, REMOVE THEM FROM YOUR %exeproper% DIRECTORY
  436. echo IMMEDIATELY!
  437. echo NW+ uses modified .con files to fix programming errors created by
  438. echo the original programmers. Due to improvements made to the levels,
  439. echo NW+ will have major errors if the included .con files are not used.
  440. goto confound_done
  441.  
  442. :execheck
  443. if exist %exename%.bat goto execheck_done
  444. if exist %exename%.exe goto recheck
  445. set prevdir=%cd%
  446. if not "%cd%"=="%cd:~0,3%" chdir ..
  447. if not "%cd%"=="%prevdir%" goto execheck
  448. echo Warning: You don't have %exeproper% in your directory.
  449. chdir /d "%startdir%"
  450. goto execheck_done
  451.  
  452. :nodir
  453. echo.
  454. echo Error: "nw_plus" data directory not found.
  455. echo Aborting launch.
  456. echo.
  457. pause
  458. goto end
  459.  
  460. :end
  461. if "%debug%"=="1" echo.
  462. if "%debug%"=="1" pause
  463. echo.
  464. popd
  465. endlocal
  466. title %ComSpec%
  467. color 07
  468.