Subversion Repositories nw_plus

Rev

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