Subversion Repositories nw_plus

Rev

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