Subversion Repositories nw_plus

Rev

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

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