Subversion Repositories nw_plus

Rev

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

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