Subversion Repositories nw_plus

Rev

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

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