Subversion Repositories nw_plus

Rev

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

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