Subversion Repositories nw_plus

Compare Revisions

No changes between revisions

Ignore whitespace Rev HEAD → Rev 1

/nw_plus/NWNames.def
File deleted
/nw_plus/nw_plus.def
File deleted
/nw_plus/NW_Edit.bat
File deleted
/nw_plus/hrp_art_license.txt
File deleted
\ No newline at end of file
/nw_plus/NW_Edit_Debug.bat
File deleted
/nw_plus/NWNames.h
File deleted
/nw_plus/NW_Edit_DP.bat
File deleted
/nw_plus/nwl1.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl2.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl3.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl4.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl5.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl6.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl7.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/nwl8.patch
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/NW_Debug.bat
File deleted
/nw_plus/nwl5.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/NWEDuke.con
10,4 → 10,10
*/
 
include EDUKE.CON
gamevar picnum 0 2
gamevar temp 0 2
gamevar tempb 0 2
gamevar x 0 2
gamevar y 0 2
gamevar z 0 2
include NWinter.con
/nw_plus/nwl6.ips
0,0 → 1,0
PATCHEOF
/nw_plus/NWinter+_License.txt
0,0 → 1,82
High Resolution Pack Art License
 
This Work is provided under the terms of this License.
The Work is protected by copyright and/or other applicable law. Any use of the
Work other than as authorized under this license is prohibited by law.
 
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED
TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN
CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
 
 
Definitions:
------------
 
"Adaptation" means a work based upon the Work, or upon the Work and other
pre-existing works, such as a translation, modification, derivative work,
arrangement or other alterations of an artistic work, or phonogram or
performance and includes cinematographic adaptations or any other form in
which the Work may be recast, transformed, or adapted including in any form
recognizably derived from the original.
 
"Distribute" means to make available to the public the original and copies of
the Work or Adaptation, as appropriate, through any transfer of ownership.
 
"Licensor" means the individual, individuals, entity or entities that offer(s)
the Work under the terms of this License.
 
"Author" means, in the case of a literary or artistic work, the individual,
individuals, entity or entities who created the Work or if no individual or
entity can be identified, the publisher.
 
"Work" means the artistic and/or musical content offered under the terms of
this License including without limitation any production in the literary,
scientific and artistic domain, whatever may be the mode or form of its
expression including digital form.
 
"You" means an individual or entity exercising rights under this License who
has not previously violated the terms of this License with respect to the Work,
or who has received express permission from the Licensor to exercise rights
under this License despite a previous violation.
 
"Reproduce" means to make copies of the Work by any means.
 
 
Terms:
------
 
You are free to copy, alter, distribute, reproduce and transmit this Work,
subject to the following conditions:
 
1. You may not use this Work or anything contained in this Work for commercial
purposes.
 
2. You must attribute this Work in the manner specified by the authors or
licensor.
 
3. Any likenesses, characters, sounds, phrases or references specific to
Duke Nukem, 3D Realms Entertainment, or Apogee Software Ltd. appear in this
Work courtesy of 3D Realms Entertainment and are the exclusive property of
3D Realms Entertainment, and are provided only to be used with a legally
acquired copy of Duke Nukem 3D. You may not alter, transform, build upon or
adapt any portion of this Work specifically related to or derived from the
Duke Nukem intellectual property, including likenesses, characters, sounds,
phrases or references for any purpose other than use with a legally acquired
copy of Duke Nukem 3D.
 
4. Any works based upon altered, transformed, or copied parts of this Work must
be distributed under a license identical or similar to this one.
 
5. For any reuse or distribution of this Work, you must make clear to others
the license terms of this Work.
 
6. The producers and/or authors of this Work explicity reject any liability for
any damages resulting from use or misuse of this Work by any Licensee or
other third party.
 
-------
Some source textures in this tutorial are copyrighted by CGTextures.com.
Permission to use and distribute these specific textures has been granted to the author of this texture pack.
Textures downloaded from CGTextures.com are copyrighted and may NOT be redistributed or sold.
For more information and the full license please visit http://www.cgtextures.com.
/nw_plus/nwl7.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/nwl8.ips
0,0 → 1,0
PATCHEOF
/nw_plus/nwinter.def
6,5 → 6,4
*/
 
include duke3d.def
include nw_plus.def
include nwinter_hrp.def
/nw_plus/NW_DP_XXX.bat
1,4 → 1,3
@echo off
set dp=1
set xxx=1
call "%~dp0\NWinter.bat" %*
echo Using Duke Plus by DeeperThought.
NW_XXX.bat -xNWDPXXX.con -hnw_dp_xxx.def %* -jDukePlus
/nw_plus/_nwzoo.map
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/nw_plus/nw_xxx.def
7,4 → 7,3
 
include nwinter.def
include nwinter/xxx.def
include nw_hrp/xxx.def
/nw_plus/NWinter.bat
1,105 → 1,51
@echo off
color 0C
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
pushd "%~dp0"
set startdir=%cd%
@color 0C
 
:restart
title Duke: Nuclear Winter Plus Launcher
if "%editor%"=="1" title Duke: Nuclear Winter Plus Editor Launcher
title Duke: Nuclear Winter Plus Batch Launcher
 
set exedir=%startdir%
set addondir=%startdir%
set addonhrpdir=%startdir%
set dir=%cd%
set nwver=30
set hrp=
set hrpu=
 
set exename=eduke32
set exeproper=EDuke32
set action=playing
 
if "%editor%"=="1" (
set exename=mapster32
set exeproper=Mapster32
set action=editing
)
 
set addonver=r005
 
:title
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Duke: Nuclear Winter Plus º
echo ÈÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍͼ
echo ³ By Hendricks266 ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
echo You are %action% Simply Silly Software's Duke: Nuclear Winter with the various
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Duke: Nuclear Winter Plus Batch Launcher º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍͼ
echo ³ By Hendricks266 ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
echo You are playing Simply Silly Software's Duke: Nuclear Winter with the various
echo enhancements of Duke: Nuclear Winter Plus, maintained by Hendricks266.
echo.
 
 
if "%xxx%"=="1" echo Using XXX mode.
if "%dp%"=="1" echo Using Duke Plus by DeeperThought.
if "%debug%"=="1" echo Using debug mode.
 
if "%debug%"=="1" echo DEBUG: Command Line Input: %*
 
:recheck
if not exist %exename%.exe goto execheck
:execheck_done
set exedir=%cd%
if "%debug%"=="1" echo DEBUG: %exeproper% Directory: "%exedir%"
 
if not exist eduke32.exe goto eduke32check
:eduke32check_done
if exist NWDuke.rt_ del /f /q NWDuke.rt_
if exist NWSanta.grp del /f /q NWSanta.grp
if not exist nw_plus\ goto nodir
if not exist duke3d.grp echo Warning: You don't have Duke3D.grp in your directory.
 
if exist nwinter\ set addonhrpdir=%cd%
:addondircheck
 
chdir nw_plus
set addondir=%cd%
if exist nwinter\ set addonhrpdir=%cd%
if exist nw_plus\ goto addondircheck
if "%debug%"=="1" echo DEBUG: NW+ Directory: "%addondir%".
if "%debug%"=="1" echo DEBUG: NWHRP Directory: "%addonhrpdir%".
 
set kextract=%addondir%\utils\windows\win32\kextract.exe
if "%debug%"=="1" set kextract=%addondir%\utils\windows\win32\kextract.debug.exe
set bspatch=%addondir%\utils\windows\win32\bspatch.exe
set sha1sum=%addondir%\utils\windows\win32\sha1sum.exe
 
if "%nwgrpname%"=="" set nwgrpname=nwinter.grp
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%exedir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%addondir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" goto nonwgrp
 
if exist nwinter.grp ren nwinter.grp nwinter.grp
call :grpchecksum
:nonwgrp_return
if not "%version%"=="demo" (
if not exist nwl1.map goto mapextract
if not exist nwl2.map goto mapextract
if not exist nwl3.map goto mapextract
if not exist nwl4.map goto mapextract
if not exist nwl5.map goto mapextract
if not exist nwl6.map goto mapextract
if not exist nwl7.map goto mapextract
if not exist nwl8.map goto mapextract
if not exist nwflag_%addonver%.h266 goto updateextract
)
 
 
 
 
chdir /d "%exedir%"
if not exist duke3d.grp Warning: You don't have Duke3D.grp in your directory.
if exist NWINTER.GRP move NWINTER.GRP nw_plus\
cd nw_plus
if not exist NWINTER.GRP goto nonwgrp
:nonwgrp_done
if not exist nwflag%nwver%.h266 goto extract
if not exist nwl1.map goto extract
if not exist nwl2.map goto extract
if not exist nwl3.map goto extract
if not exist nwl4.map goto extract
if not exist nwl5.map goto extract
if not exist nwl6.map goto extract
if not exist nwl7.map goto extract
if not exist nwl8.map goto extract
cd ..
echo.
echo To switch your character, open the console (~) and type one of the following:
echo Duke: "setvar skin 0".
echo Santa: "setvar skin 1".
echo.
echo.
echo.
echo.
echo.
echo.
 
:init
pause
108,98 → 54,27
 
:check
 
if exist duke3d_hrp.zip set hrp=/gduke3d_hrp.zip
if exist hrp_update.zip set hrpu=/ghrp_update.zip
 
echo.
echo Launching Duke Nukem 3D . . .
echo Thanks for %action%!
echo Thanks for playing!
echo.
echo Please leave this window open for the entire duration of your game.
echo It will close automatically.
 
if "%editor%"=="1" (
type "%exedir%\names.h" > "%exedir%\NWNames.h"
echo. >> "%exedir%\NWNames.h"
type "%addondir%\NWNames.def" >> "%exedir%\NWNames.h"
)
::if exist *.art ren *.art *.abk
 
:arguments
set args=
if exist "%exedir%\HRP\" set args=%args% -j HRP
if exist "%exedir%\polymer_hrp\" set args=%args% -j polymer_hrp
if exist "%exedir%\duke3d_voxel.zip" set args=%args% -g duke3d_voxel.zip
if exist "%exedir%\duke3d_hrp.zip" set args=%args% -g duke3d_hrp.zip
if exist "%exedir%\hrp_update.zip" set args=%args% -g hrp_update.zip
if exist "%exedir%\maphacks.zip" set args=%args% -g maphacks.zip
if exist "%exedir%\eduke32_mus.zip" set args=%args% -g eduke32_mus.zip
if exist "%addondir%" if not "%addondir%"=="%exedir%" set args=%args% -j "%addondir:\=/%"
if exist "%addonhrpdir%" if not "%addonhrpdir%"=="%exedir%" if not "%addonhrpdir%"=="%addondir%" set args=%args% -j "%addonhrpdir:\=/%"
set args=%args% -g %nwgrpname% -h nwinter.def -x NWEDuke.con
if "%editor%"=="1" set args=%args% -namesfile NWNames.h
if "%dp%"=="1" set args=%args% -h nw_dp.def -x NWDP.con
if "%xxx%"=="1" if exist "%exedir%\xxx_lite.zip" set args=%args% -g xxx_lite.zip
if "%xxx%"=="1" if exist "%exedir%\xxx_lite\" set args=%args% -j xxx_lite
if "%xxx%"=="1" if exist "%exedir%\xxx_pack.zip" set args=%args% -g xxx_pack.zip
if "%xxx%"=="1" if exist "%exedir%\xxx_pack\" set args=%args% -j xxx_pack
if "%xxx%"=="1" set args=%args% -h nw_xxx.def
if "%xxx%"=="1" if "%dp%"=="1" set args=%args% -h nw_dp_xxx.def -x NWDPXXX.con
set args=%args% %*
if "%dp%"=="1" set args=%args% -j DukePlus
eduke32 /xNWEDuke.con /hnwinter.def /jnw_plus /gNWINTER.GRP %hrp% %hrpu% %*
 
set exe=%exename%
if "%debug%"=="1" set exe=%exename%.debug
::if exist *.abk ren *.abk *.art
 
if exist %exe%.bat (
if "%debug%"=="1" echo DEBUG: Final Command Line: call %exe%.bat %args%
call %exe%.bat %args%
) else (
if "%debug%"=="1" echo DEBUG: Final Command Line: start %exe%.exe %args%
start %exe%.exe %args%
)
 
set svnpath=0
if "%svnpath%"=="0" if exist "%startdir%\svn\bin\svn.exe" set svnpath=%startdir%\svn\bin
if "%svnpath%"=="0" if exist "%exedir%\svn\bin\svn.exe" set svnpath=%exedir%\svn\bin
if "%svnpath%"=="0" if exist "%ProgramFiles%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles%\SlikSvn\bin
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\SlikSvn\bin
if "%svnpath%"=="0" if exist "%ProgramFiles%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles%\Subversion\bin
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\Subversion\bin
if "%svnpath%"=="0" if exist "%ProgramFiles%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles%\TortoiseSVN\bin
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\TortoiseSVN\bin
if "%svnpath%"=="0" for %%S in (svn.exe) do if exist "%%~dp$PATH:S" set svnpath=%%~dp$PATH:S
 
chdir /d "%addondir%"
if not "%svnpath%"=="0" call :svn_action
chdir /d "%addonhrpdir%"
if not "%svnpath%"=="0" call :svn_action
 
goto end
 
:svn_action
set PATH=%PATH%;%svnpath%
for /f "delims=" %%a in ('svnversion.exe .') do @set oldrev=%%a
if "%oldrev%"=="exported" goto :eof
if "%oldrev%"=="Unversioned directory" goto :eof
"svn.exe" update
for /f "delims=" %%a in ('svnversion.exe .') do @set rev=%%a
set oldrev=%oldrev:M=%
set oldrev=%oldrev:S=%
set oldrev=%oldrev:P=%
set rev=%rev:M=%
set rev=%rev:S=%
set rev=%rev:P=%
if %rev% EQU %oldrev% goto :eof
set /a oldrev=%oldrev% + 1
echo.
"svn.exe" log -r %oldrev%:%rev%
echo.
pause
goto :eof
 
:nonwgrp
set megaton=Steam\SteamApps\common\Duke Nukem 3D\gameroot\addons\nwinter.grp
if exist "%ProgramFiles%\%megaton%" copy "%ProgramFiles%\%megaton%" .\ && call :conprotect && goto nonwgrp_done
if exist "%ProgramFiles(x86)%\%megaton%" copy "%ProgramFiles(x86)%\%megaton%" .\ && call :conprotect && goto nonwgrp_done
echo.
echo Error: You don't have NWINTER.GRP in your directory.
 
 
:retry
echo.
set cddrive=
209,92 → 84,42
if '%cddrive%'=='' goto cdno
if not exist %cddrive%:\ goto cdno
if not exist %cddrive%:\* goto cdno
if exist %cddrive%:\GAMEDATA\NWINTER.GRP copy %cddrive%:\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
if exist %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP copy %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
if exist %cddrive%:\NW\GAMEDATA\NWINTER.GRP copy %cddrive%:\NW\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done
goto cdwrong
 
:nonwgrp_done
if not exist %cddrive%:\GAMEDATA\NWINTER.GRP goto cdw
copy %cddrive%:GAMEDATA\NWINTER.GRP .\
pause
echo.
if exist nwinter.grp (
type NWINTRO.TXT
echo.
pause
call :grpchecksum
call :grpchecksum_results
goto nonwgrp_return
)
if not exist nwinter.grp (
echo Installation Error!
echo Contact Hendricks266 for help.
echo.
pause
goto end
)
goto nonwgrp_done
 
:grpchecksum
if not exist "%sha1sum%" (
echo "%sha1sum%" not found.
goto :eof
)
pushd .
if exist "%addondir%\%nwgrpname%" chdir /d %addondir%
if exist "%exedir%\%nwgrpname%" chdir /d %exedir%
echo a6728f621f121f9db02ee67c39efdbb5eea95711 *%nwgrpname% | "%sha1sum%" --status --check -
if "%ERRORLEVEL%"=="0" set version=full&& popd && goto :eof
if "%ERRORLEVEL%"=="1" echo 1b33b2cbb7101b5b18b15855392f55575413ecc3 *%nwgrpname% | "%sha1sum%" --status --check -
if "%ERRORLEVEL%"=="0" set version=demo&& popd && goto :eof
if "%ERRORLEVEL%"=="1" set version=unknown
popd
goto :eof
 
:grpchecksum_results
if "%version%"=="full" echo NWINTER.GRP checksum verified.
if "%version%"=="demo" echo NWINTER.GRP (demo version) checksum verified.
if "%version%"=="unknown" echo NWINTER.GRP checksum does not match. You may have a bad copy.
echo.
goto :eof
 
:cdno
echo '%cddrive%' is not valid. Please try again.
goto retry
 
:cdwrong
:cdw
echo '%cddrive%' is not the correct disc. Please try again.
goto retry
 
:mapextract
echo Extracted maps not found or patched. Proceeding to installation.
goto extract
 
:updateextract
echo Map patch update required. Proceeding to installation.
goto extract
 
:extract
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Installation º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Duke: Nuclear Winter Plus Installation º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍͼ
echo ³ By Hendricks266 ³
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
call :grpchecksum
call :grpchecksum_results
if not exist nwl1.patch goto nopatch
if not exist nwl2.patch goto nopatch
if not exist nwl3.patch goto nopatch
if not exist nwl4.patch goto nopatch
if not exist nwl5.patch goto nopatch
if not exist nwl6.patch goto nopatch
if not exist nwl7.patch goto nopatch
if not exist nwl8.patch goto nopatch
mkdir nw_preserve
if exist nwl*.map move /y nwl*.map nw_preserve\
if exist "%exedir%\nwl*.map" move /y "%exedir%\nwl*.map" nw_preserve\
:: TODO: eliminate the need for the if exist checks; tighten up path handling
set grp=nwinter.grp
if exist "%addondir%\%nwgrpname%" set grp=%addondir%\%nwgrpname%
if exist "%exedir%\%nwgrpname%" set grp=%exedir%\%nwgrpname%
"%kextract%" "%grp%" E2L*.MAP
if not exist nwl1.ips goto noips
if not exist nwl2.ips goto noips
if not exist nwl3.ips goto noips
if not exist nwl4.ips goto noips
if not exist nwl5.ips goto noips
if not exist nwl6.ips goto noips
if not exist nwl7.ips goto noips
if not exist nwl8.ips goto noips
if exist nwl*.map del /f /q nwl*.map
if exist ..\nwl*.map del /f /q ..\nwl*.map
utils\windows\win32\kextract.exe NWINTER.GRP E2L*.MAP
ren E2L1.MAP nwl1.map
ren E2L2.MAP nwl2.map
ren E2L3.MAP nwl3.map
309,23 → 134,31
echo Map patching will now begin.
echo.
pause
echo.
"%bspatch%" nwl1.map nwl1.map nwl1.patch
"%bspatch%" nwl2.map nwl2.map nwl2.patch
"%bspatch%" nwl3.map nwl3.map nwl3.patch
"%bspatch%" nwl4.map nwl4.map nwl4.patch
"%bspatch%" nwl5.map nwl5.map nwl5.patch
"%bspatch%" nwl6.map nwl6.map nwl6.patch
"%bspatch%" nwl7.map nwl7.map nwl7.patch
"%bspatch%" nwl8.map nwl8.map nwl8.patch
echo
utils\windows\win32\uips.exe a nwl1.ips nwl1.map
utils\windows\win32\uips.exe a nwl2.ips nwl2.map
utils\windows\win32\uips.exe a nwl3.ips nwl3.map
utils\windows\win32\uips.exe a nwl4.ips nwl4.map
utils\windows\win32\uips.exe a nwl5.ips nwl5.map
utils\windows\win32\uips.exe a nwl6.ips nwl6.map
utils\windows\win32\uips.exe a nwl7.ips nwl7.map
utils\windows\win32\uips.exe a nwl8.ips nwl8.map
if exist nwpatch*.h266 del /f /q nwpatch*.h266
if exist nwflag*.h266 del /f /q nwflag*.h266
echo Do not delete this file! You will be forced to reinstall NW+ and repatch the maps. >nwflag_%addonver%.h266
attrib +r nwflag_%addonver%.h266
echo Do not delete this file! You will be force to reinstall NW+ and repatch the maps. >nwflag%nwver%.h266
attrib +r nwflag%nwver%.h266
del /f /q nwl1.ips
del /f /q nwl2.ips
del /f /q nwl3.ips
del /f /q nwl4.ips
del /f /q nwl5.ips
del /f /q nwl6.ips
del /f /q nwl7.ips
del /f /q nwl8.ips
echo.
echo Patching complete!
:scanning
chdir "%exedir%"
cd ..
echo.
echo Scanning directory for potential problems.
if exist nwl1.mhk goto mhkfound
349,11 → 182,6
if exist TILES014.ART goto artfound
if exist TILES015.ART goto artfound
:artfound_done
call :checksum c6b8ca33ea6a2ec46b8dfeca4f9a3d5e078d0789 NWACTOR.CON "NWINTER file detected and neutralized:"
call :checksum fdb91aa2912f16232ed9020a7d8ec35834ef58c8 NWDEFS.CON "NWINTER file detected and neutralized:"
call :checksum 2bb2ddc7319e0935569b724f3c67cb953fdb79d6 NWINTER.CON "NWINTER file detected and neutralized:"
call :checksum 5ae347733be1f87f35d1930186de1ed764f4682f NWSNOW.CON "NWINTER file detected and neutralized:"
call :checksum 5df8b3b4216dcfdb8bc0adf6241f8a893eacfd98 NWUSER.CON "NWINTER file detected and neutralized:"
if exist NWinter.con goto confound
if exist NWActor.con goto confound
if exist NWDefs.con goto confound
364,36 → 192,13
if exist NWSnow.con goto confound
if exist NWUser.con goto confound
:confound_done
call :conprotect
chdir /d "%addondir%"
echo.
pause
goto restart
 
:conprotect
pushd "%exedir%"
if not exist GAME.CON "%kextract%" DUKE3D.GRP GAME.CON
if not exist DEFS.CON "%kextract%" DUKE3D.GRP DEFS.CON
if not exist USER.CON "%kextract%" DUKE3D.GRP USER.CON
popd
goto :eof
 
:checksum
if not exist "%sha1sum%" (
echo "%sha1sum%" not found.
goto :eof
)
if not exist "%~2" goto :eof
echo %~1 *%~2 | "%sha1sum%" --status --check -
if "%ERRORLEVEL%"=="0" (
ren "%~2" "NWOld_%addonver%_%~nx2"
echo %~3 %~nx2
)
goto :eof
 
:nopatch
:noips
echo.
echo Error: You don't have all the *.patch files in your directory.
echo Error: You don't have all the *.ips files in your directory.
echo Aborting installation.
echo Map patching is required for NW+ to function correctly.
echo.
404,7 → 209,7
echo.
echo Problematic .mhk files have been found in your directory.
echo Unless you have knowingly made a modification to NW's map hacks,
echo the presence of these files in your %exeproper% directory will
echo the presence of these files in your EDuke32 directory will
echo cause NW+ to function incorrectly.
echo.
echo nwl1.mhk
423,7 → 228,7
echo.
echo Problematic .art files have been found in your directory.
echo Unless you have knowingly made a modification to NW's art,
echo the presence of these files in your %exeproper% directory will
echo the presence of these files in your EDuke32 directory will
echo cause NW+ to function incorrectly.
echo.
echo TILES005.ART
441,7 → 246,7
echo.
echo Problematic .con files have been found in your directory.
echo Unless you have knowingly made a modification to NW's programming,
echo the presence of these files in your %exeproper% directory will
echo the presence of these files in your EDuke32 directory will
echo cause NW+ to function incorrectly.
echo.
echo NWinter.con
455,7 → 260,7
echo NWSnow.con
echo.
echo IF THESE ARE THE ORIGINAL NUCLEAR WINTER CON FILES, OR THEY COME FROM
echo AN OUTDATED VERSION OF NW+, REMOVE THEM FROM YOUR %exeproper% DIRECTORY
echo AN OUTDATED VERSION OF NW+, REMOVE THEM FROM YOUR EDUKE32 DIRECTORY
echo IMMEDIATELY!
echo NW+ uses modified .con files to fix programming errors created by
echo the original programmers. Due to improvements made to the levels,
462,15 → 267,34
echo NW+ will have major errors if the included .con files are not used.
goto confound_done
 
:execheck
if exist %exename%.bat goto execheck_done
if exist %exename%.exe goto recheck
set prevdir=%cd%
if not "%cd%"=="%cd:~0,3%" chdir ..
if not "%cd%"=="%prevdir%" goto execheck
echo Warning: You don't have %exeproper% in your directory.
chdir /d "%startdir%"
goto execheck_done
:eduke32check
if exist eduke32.bat goto eduke32check_done
if exist ..\eduke32.exe (
cd ..
goto recheck
)
if exist ..\..\eduke32.exe (
cd ..\..
goto recheck
)
if exist ..\..\..\eduke32.exe (
cd ..\..\..
goto recheck
)
if exist ..\eduke32.bat (
cd ..
goto eduke32check_done
)
if exist ..\..\eduke32.bat (
cd ..\..
goto eduke32check_done
)
if exist ..\..\..\eduke32.bat (
cd ..\..\..
goto eduke32check_done
)
echo Warning: You don't have EDuke32 in your directory.
goto eduke32check_done
 
:nodir
echo.
481,10 → 305,11
goto end
 
:end
if "%debug%"=="1" echo.
if "%debug%"=="1" pause
set hrp=
set hrpu=
echo.
popd
endlocal
title %ComSpec%
color 07
@color 07
@title %ComSpec%
cd %dir%
@echo on
goto :eof
/nw_plus/nwfix.m32
27,7 → 27,7
*/
 
include DEFS.CON
include NWDefs.con
include nwinter_hrp/NWDefs.con
 
gamevar i 0 0
gamevar k 0 0
35,134 → 35,76
 
onevent EVENT_DRAW2DSCREEN
// Fixing sounds.
for i allsprites, ifactor MUSICANDSFX
{
for i allsprites, ifactor MUSICANDSFX
{
// fixing ambient sounds
switch .lotag
switch .lotag
 
case 91
case 308
set .lotag 426
break
case 91
case 308
set .lotag 426
break
 
case 244
set .lotag 438
break
endswitch
}
case 244
set .lotag 438
break
endswitch
}
 
 
// fixing one-time sector sounds
for k allsectors
{
switch sector[k].lotag
for k allsectors
{
getsector[k].lotag l
switch l
 
case 10091
case 10308
set sector[k].lotag 10426
break
case 10091
case 10308
set sector[k].lotag 10426
break
 
case 10244
set sector[k].lotag 10438
break
case 10244
set sector[k].lotag 10438
break
 
endswitch
endswitch
setsector[k].lotag l
}
 
/*
ifvarg sector[k].lotag 9999
ifvarl sector[k].lotag 20000
{
al k
al sector[k].lotag
}
*/
 
// texture replacements:
switch sector[k].floorpicnum
case 198
ifvare sector[k].floorpal 1
{
al k
set sector[k].floorpicnum 3670
set sector[k].floorpal 0
}
break
 
endswitch
switch sector[k].ceilingpicnum
case 198
ifvare sector[k].ceilingpal 1
{
al k
set sector[k].ceilingpicnum 3670
set sector[k].ceilingpal 0
}
break
 
endswitch
}
 
for k allwalls
{
ifvare wall[k].pal 1
{
switch wall[k].picnum
case 198
al k
set wall[k].picnum 3670
set wall[k].pal 0
break
endswitch
switch wall[k].overpicnum
case 198
al k
set wall[k].overpicnum 3670
set wall[k].pal 0
break
endswitch
}
}
 
// Fixing actors.
 
// fixing actors already in the map
for i allsprites
{
switch .picnum
for i allsprites
{
switch .picnum
// Step 1: Santa
/*
// Step 1: Santa
case 2000 set .picnum 3900 break
case 2045 set .picnum 3905 break
case 2000 set .picnum 3900 break
case 2045 set .picnum 3905 break
*/
// Step 2: Pig Cops
/*
// Step 2: Pig Cops
case 2002 set .picnum 2000 break
case 2003 set .picnum 2001 break
case 2047 set .picnum 2045 break
case 2002 set .picnum 2000 break
case 2003 set .picnum 2001 break
case 2047 set .picnum 2045 break
*/
endswitch
}
endswitch
}
// fixing actors which spawn on triggers
for i allsprites, ifactor RESPAWN
{
switch .hitag
for i allsprites, ifactor RESPAWN
{
switch .lotag
// Step 1: Santa
/*
// Step 1: Santa
case 2000 set .hitag 3900 addlogvar .x addlogvar .y break
case 2045 set .hitag 3905 addlogvar .x addlogvar .y break
case 2000 set .lotag 3900 break
case 2045 set .lotag 3905 break
*/
// Step 2: Pig Cops
/*
// Step 2: Pig Cops
case 2002 set .hitag 2000 addlogvar .x addlogvar .y break
case 2003 set .hitag 2001 addlogvar .x addlogvar .y break
case 2047 set .hitag 2045 addlogvar .x addlogvar .y break
case 2002 set .lotag 2000 break
case 2003 set .lotag 2001 break
case 2047 set .lotag 2045 break
*/
endswitch
}
endswitch
}
endevent
/nw_plus/NWActor.con
24,7 → 24,7
}
else
{
sizeto MAXXSTRETCH MAXYSTRETCH
sizeto MAXXSTRETCH MAXYSTRETCH
break
}
ends
63,14 → 63,10
{
ifpdistl 1024
{
getplayer[THISACTOR].i nw_temp
setactor[nw_temp].htextra SNOWBALLAMOUNT
setactor[nw_temp].htpicnum SNOWBALL
// getactor[THISACTOR].owner nw_temp2
setactor[nw_temp].htowner nw_owner
getplayer[THISACTOR].i temp
setactor[temp].htextra SNOWBALLAMOUNT
setactor[temp].htpicnum SNOWBALL
// addphealth SNOWBALLAMOUNT
debris SCRAP3 5
globalsound DUKE_GRUNT
state headhitstate
192,82 → 188,85
 
 
useractor enemy SNOWMAN SNOWMANSTRENGTH ASNOWMANIDLE
fall
fall
 
ifaction ASNOWMANDEAD
{
strength 0
ifhitweapon
ifaction ASNOWMANDEAD
{
ifrespawn
{
ifwasweapon RADIUSEXPLOSION
ifcount RESPAWNACTORTIME
{
// debris SCRAP3 40
// debris SCRAP3 40
debris SCRAP3 20
killit
spawn TRANSPORTERSTAR
cstat 257
strength SNOWMANSTRENGTH
ai AISNOWFOLLOW
}
}
ifrespawn
else
{
ifcount RESPAWNACTORTIME
strength 0
ifhitweapon
{
spawn TRANSPORTERSTAR
cstat 257
strength SNOWMANSTRENGTH
ai AISNOWFOLLOW
ifwasweapon RADIUSEXPLOSION
{
// debris SCRAP3 40
// debris SCRAP3 40
debris SCRAP3 20
killit
}
}
}
break
break
}
else ifaction ASNOWMANFROZEN
else
ifaction ASNOWMANFROZEN
{
ifcount THAWTIME
ifcount THAWTIME
{
ai AISNOWFOLLOW
getlastpal
ai AISNOWFOLLOW
getlastpal
}
else
ifcount FROZENDRIPTIME
ifrnd 8
spawn WATERDRIP
ifcount FROZENDRIPTIME
ifrnd 8
spawn WATERDRIP
 
ifhitweapon
ifhitweapon
{
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
strength 0
break
strength 0
break
}
addkills 1
lotsofglass 30
ifrnd 84 debris SCRAP3 10
sound GLASS_BREAKING
killit
}
 
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
addkills 1
lotsofglass 30
ifrnd 84 debris SCRAP3 10
sound GLASS_BREAKING
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
}
 
ifai AISNOWMANSHRINK
ifai AISNOWMANSHRINK
{
state snowmanshrinkstate
break
state snowmanshrinkstate
break
}
 
ifhitweapon state snowmanhitstate
 
ifp pdead break
ifhitweapon state snowmanhitstate
 
ifai 0
ifp pdead break
 
ifai 0
{
ai AISNOWFOLLOW
sizeat 42 36
clipdist 32
cstat 257
ai AISNOWFOLLOW
sizeat 42 36
clipdist 32
cstat 257
}
 
ifai AISNOWMANDYING state snowmandyingstate
353,184 → 352,187
ai AIWALKWAIT ABOTWALK botstopped faceplayer
 
state miniboss
sound SANTA_TRASH1
spawn EXPLOSION2
spawn EXPLOSION2
spawn PIGCOP
spawn PIGCOP
 
sound SANTA_TRASH1
 
spawn EXPLOSION2
spawn EXPLOSION2
spawn PIGCOP
spawn PIGCOP
 
ends
 
 
 
state stomphisfreakingass
ifp pdead
nullop
 
ifp pdead nullop
else
ifpdistl SQUISHABLEDISTANCE
{
ifpdistl SQUISHABLEDISTANCE
{
addphealth -1000
sound SQUISH2
// state standard_pjibs
state standard_pjibs
sound SANTA_TRASH9
addphealth -1000
sound SQUISH2
// state standard_pjibs
state standard_pjibs
sound SANTA_TRASH9
}
}
 
ends
 
 
state botchangeweaponstate
ifspritepal 0 nullop else break
resetcount
ifspritepal 0
 
ifspritepal 0 nullop else break
 
resetcount
 
ifspritepal 0
{
ifpdistl 4096
ifpdistl 4096
{
ifrnd 128
spritepal 3
ifrnd 128
spritepal 3
else
spritepal 9
spritepal 9
}
else
ifrnd 128
spritepal 3
{
ifrnd 128
spritepal 3
}
}
else ifspritepal 3
else
ifspritepal 3
{
ifpdistg 4096
ifpdistg 4096
{
ifrnd 128
spritepal 0
ifrnd 128
spritepal 0
else
spritepal 9
spritepal 9
}
else
{
ifrnd 128
spritepal 9
ifrnd 128
spritepal 9
}
}
else ifspritepal 9
else
ifspritepal 9
{
ifpdistg 4096
ifpdistg 4096
{
ifrnd 128
spritepal 0
ifrnd 128
spritepal 0
else
spritepal 3
spritepal 3
}
else
ifrnd 128
spritepal 9
{
ifrnd 128
spritepal 9
}
}
sound SELECT_WEAPON
ends
 
state botshootrpg // so Santa shoots the player's RPG and not the Commander's
eshoot RPG
setactor[RETURN].extra RPG_WEAPON_STRENGTH
setactor[RETURN].xrepeat 14
setactor[RETURN].yrepeat 14
sound RPG_SHOOT
sound SELECT_WEAPON
 
ends
 
state botquickshootstate
ifspritepal 0 nullop else break
ifp pshrunk break
ifp pdead break
 
ifspritepal 0
state botshootrpg
else ifspritepal 3
ifspritepal 0 nullop else break
 
ifp pshrunk break
ifp pdead break
 
ifspritepal 0
{
shoot CHAINGUN
sound CHAINGUN_FIRE
shoot RPG sound RPG_SHOOT
}
else ifspritepal 9
else
ifspritepal 3
{
// shoot SHRINKER
// sound SHRINKER_FIRE
shoot SHOTGUN
sound SHOTGUN_FIRE
shoot CHAINGUN sound CHAINGUN_FIRE
}
else
ifspritepal 9
{
// shoot SHRINKER sound SHRINKER_FIRE
shoot SHOTGUN sound SHOTGUN_FIRE
}
 
ends
 
 
state botshootstate
ifspritepal 0 nullop else break // ifcanshoottarget nullop // ifcanseetarget nullop
ifp pdead break
ifp pshrunk break
ifspritepal 0
 
ifspritepal 0 nullop else break // ifcanshoottarget nullop // ifcanseetarget nullop
 
ifp pdead break
ifp pshrunk break
 
ifspritepal 0
{
ifcount 5
ifcount 5
{
ifactioncount 5
ifactioncount 5
{
resetactioncount
state botshootrpg
resetactioncount
shoot RPG
sound RPG_SHOOT
}
 
ifpdistl 4096
{
ifrnd 5
state botchangeweaponstate
}
}
}
else ifspritepal 3
else
ifspritepal 3
{
ifcount 5
ifcount 5
{
ifactioncount 1
ifactioncount 1
{
resetactioncount
shoot SHOTSPARK1
shoot CHAINGUN
shoot CHAINGUN
shoot CHAINGUN
sound CHAINGUN_FIRE
resetactioncount
shoot SHOTSPARK1 shoot CHAINGUN shoot CHAINGUN shoot CHAINGUN
sound CHAINGUN_FIRE
}
ifrnd 1
state botchangeweaponstate
ifrnd 1 state botchangeweaponstate
}
}
else ifspritepal 9
else
ifspritepal 9
{
ifcount 5
ifcount 5
{
ifactioncount 5
ifactioncount 5
{
resetactioncount
// shoot SHRINKER
// sound SHRINKER_FIRE
shoot SHOTGUN
sound SHOTGUN_FIRE
resetactioncount
// shoot SHRINKER
// sound SHRINKER_FIRE
shoot SHOTGUN
sound SHOTGUN_FIRE
}
ifp ponsteroids
ifrnd 64
state botchangeweaponstate
ifrnd 1
ifp ponsteroids
{
ifrnd 64
state botchangeweaponstate
}
ifrnd 1 state botchangeweaponstate
}
}
 
 
 
ends
 
state dudehurt
 
/*
ifstrength YELLHURTSOUNDSTRENGTHMP
{
557,13 → 559,13
sound SANTA_TRASH8
}
*/
 
ifrnd 80
sound SANTA_GOTHIT
ends
 
state dukehurt
 
ifrnd 80
sound SANTA_GOTHIT
/*
599,22 → 601,16
// WALK STATES
 
state botwalkhitstate
state botshootstate
// spawn BLOOD
ifdead
 
state botshootstate
 
// spawn BLOOD
 
ifdead
{
ifspritepal 21
{
state miniboss
break
}
else
soundonce SANTA_DEAD
ifspritepal 21 { state miniboss break } else soundonce SANTA_DEAD
 
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
spritepal 1
strength 0
623,7 → 619,8
sound SOMETHINGFROZE
break
}
else ifwasweapon GROWSPARK
else
ifwasweapon GROWSPARK
{
cstat 0
sound ACTOR_GROWING
630,11 → 627,12
ai AIBOTWALKGROW
break
}
else ifwasweapon RADIUSEXPLOSION
else
ifwasweapon RADIUSEXPLOSION
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
641,11 → 639,12
endofgame 52
killit
}
else ifwasweapon RPG
else
ifwasweapon RPG
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
657,20 → 656,18
ai AIBOTWALKDYING
break
}
}
}
else
{
state dudehurt
ifwasweapon SHRINKSPARK
state dudehurt
 
ifwasweapon SHRINKSPARK
{
ifai AIBOTWALKSTEROIDS
nullop
else
{
ai AIBOTWALKSHRINK
break
}
ifai AIBOTWALKSTEROIDS nullop else
{
ai AIBOTWALKSHRINK
break
}
}
}
 
689,162 → 686,167
ends
 
state botwalkseekstate
ifcansee
 
ifcansee
{
ai AIBOTWALKHUNT
break
}
ifgapzl 100
nullop
 
ifgapzl 100
{
}
else
{
ifnotmoving
ifnotmoving
{
ifrnd 4
operate
ifpdistl 8000
ifrnd 4 operate
ifpdistl 8000
{
ai AIFLYUPMOMENT
cactor SOBBOTFLY
break
ai AIFLYUPMOMENT
cactor SOBBOTFLY
break
}
else
ai AIBOTWALKJUMP1
break
ai AIBOTWALKJUMP1
break
}
}
 
ends
 
state botwalkjumpstate
ifrnd 4
ifpdistl 6000
state botquickshootstate
ifai AIBOTWALKJUMP1
ifactioncount 2
 
ifrnd 4
ifpdistl 6000
state botquickshootstate
 
ifai AIBOTWALKJUMP1
{
ifactioncount 2
{
ai AIBOTWALKJUMP2
break
ai AIBOTWALKJUMP2
break
}
ifai AIBOTWALKJUMP2
ifactioncount 1
}
 
ifai AIBOTWALKJUMP2
{
ifactioncount 1
{
state botshootstate
iffloordistl 16
state botshootstate
iffloordistl 16
{
sound DUKE_LAND
operate
ai AIBOTWALKHUNT
sound DUKE_LAND
operate
ai AIBOTWALKHUNT
}
}
}
 
ends
 
state botwalkhuntstate
state botshootstate
ifrnd 3
 
state botshootstate
 
ifrnd 3
{
ai AIBOTWALKSTRJUMP1S
count 10
ai AIBOTWALKSTRJUMP1S
count 10
}
ifcansee
 
ifcansee
{
ifpdistl 1024
ifrnd 24
ifpdistl 1024
{
ifrnd 24
{
ifp pdead
nullop
ifp pdead
nullop
else
ai AIBOTWALKKICK
break
ai AIBOTWALKKICK
break
}
}
}
else
{
ifphealthl 50
ifrnd 64
ifpdistl 8000
ifphealthl 50
ifrnd 64
ifpdistl 8000
{
ifrnd 80
sound SANTA_TRASH1
ifrnd 128
}
 
ifrnd 128
{
ifp phigher
ifp phigher
{
ai AIFLYUPMOMENT
cactor SOBBOTFLY
break
ai AIFLYUPMOMENT
cactor SOBBOTFLY
break
}
else
{
ai AIBOTWALKSTRAIGHT
break
ai AIBOTWALKSTRAIGHT
break
}
}
else
{
ai AIBOTWALKSTRAIGHT
break
ai AIBOTWALKSTRAIGHT
break
}
ai AIBOTWALKSEEK
break
}
ifrnd 128
ifnotmoving
 
ifrnd 128
ifnotmoving
{
ifrnd 8
operate
ai AIBOTWALKJUMP1
break
ifrnd 8
operate
ai AIBOTWALKJUMP1
break
}
 
ends
 
state botwalkkickstate
ifactioncount 2
 
ifactioncount 2
{
resetactioncount
ifpdistl 1024
resetactioncount
ifpdistl 1024
{
ifp pdead
ifp pdead
{
ai AIBOTWALKHUNT
break
ai AIBOTWALKHUNT
break
}
ifp pfacing
ifrnd 16
ifp pfacing
ifrnd 16
{
globalsound SANTA_TRASH8
}
sound KICK_HIT
 
sound KICK_HIT
ifspritepal 21
addphealth -1
else
addphealth -6
state dukehurt
ifspritepal 21 addphealth -1 else addphealth -6
state dukehurt
}
else
{
ai AIBOTWALKHUNT
break
ai AIBOTWALKHUNT
break
}
 
ifrnd 50
{
ai AIBOTWALKHUNT
break
ai AIBOTWALKHUNT
break
}
}
 
851,652 → 853,723
ends
 
state botwalkstraightjumpstate
ifai AIBOTWALKSTRJUMP1
 
ifai AIBOTWALKSTRJUMP1
{
ifcount 20
ifcount 20
{
ai AIBOTWALKSTRJUMP2
break
}
}
else ifai AIBOTWALKSTRJUMP2
else
ifai AIBOTWALKSTRJUMP2
{
ifcount 18
ifcount 18
{
iffloordistl 16
iffloordistl 16
{
operate
ifrnd 128
sound DUKE_LAND
ifrnd 200
ai AIBOTWALKSTRAIGHT
operate
ifrnd 128
sound DUKE_LAND
ifrnd 200
ai AIBOTWALKSTRAIGHT
else
ai AIBOTWALKSEEK
ai AIBOTWALKSEEK
}
}
}
 
ends
 
state botjumpshootstate
ifai AIBOTWALKSTRJUMP1S
 
ifai AIBOTWALKSTRJUMP1S
{
state botshootstate
ifcount 20
state botshootstate
 
ifcount 20
{
ai AIBOTWALKSTRJUMP2S
resetactioncount
count 10
break
ai AIBOTWALKSTRJUMP2S
resetactioncount
count 10
break
}
 
}
else ifai AIBOTWALKSTRJUMP2S
else
ifai AIBOTWALKSTRJUMP2S
{
ifcount 18
ifcount 18
{
iffloordistl 16
iffloordistl 16
{
operate
sound DUKE_LAND
ai AIBOTWALKHUNT
count 10
operate
sound DUKE_LAND
ai AIBOTWALKHUNT
count 10
}
}
}
 
 
ends
 
 
state botwalkstraightstate
ifpdistg 20000
ai AIBOTWALKSEEK
ifcansee
 
ifpdistg 20000
ai AIBOTWALKSEEK
 
ifcansee
{
ifnotmoving
ifnotmoving
{
ai AIBOTWALKSTRJUMP1
break
ai AIBOTWALKSTRJUMP1
break
}
ifrnd 64
ai AIBOTWALKHUNT
ifrnd 64
ai AIBOTWALKHUNT
}
else
ifrnd 128
ifnotmoving
ai AIBOTWALKSTRJUMP1
{
ifrnd 128
ifnotmoving
ai AIBOTWALKSTRJUMP1
}
 
ends
 
state steroidswalk
soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1
ifhitweapon
 
soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1
 
ifhitweapon
{
state botwalkhitstate
break
state botwalkhitstate
break
}
ifcount 150
ai AIBOTWALKHUNT
 
ifcount 34
nullop
ifcount 150
{
ai AIBOTWALKHUNT
}
 
ifcount 34
{
}
else
sizeto 42 36
{
sizeto 42 36
}
 
ends
 
state botletfallstate
ifactioncount 5
nullop
else ifactioncount 6
 
ifactioncount 5
{
}
else
ifactioncount 6
{
soundonce SANTA_TRASH7
ifcansee
}
 
ifcansee
{
ai AIFLYWAIT
cactor SOBBOTFLY
break
ai AIFLYWAIT
cactor SOBBOTFLY
break
}
else
{
iffloordistl 50
iffloordistl 50
{
ai AIFLYWAIT
cactor SOBBOTFLY
break
ai AIFLYWAIT
cactor SOBBOTFLY
break
}
}
 
ends
 
useractor enemy SOBBOTWALK SOBBOTSTRENGTH ABOTWALK
state checksquished
state checksquished
 
ifai 0
{
 
ifspawnedby RECON
{
spawn PIGCOP
killit
}
 
ifcansee nullop else break
ifcansee nullop else break
sizeat 42 36
cstat 257
sizeat 42 36
cstat 257
 
ai AIBOTWALKSEEK
ai AIBOTWALKSEEK
 
ifspritepal 21
ifspritepal 21
{
strength MINIBOSSSTRENGTH
ifrnd 64
soundonce SANTA_TRASH9
ifrnd 64 soundonce SANTA_TRASH9
}
else
spritepal 0
sound INSERT_CLIP
break
else spritepal 0
 
sound INSERT_CLIP
break
}
 
 
fall
sleeptime 300
 
ifaction ABOTWDEAD
break
else ifaction ABOTWALKFROZEN
ifaction ABOTWDEAD break
else
ifaction ABOTWALKFROZEN
{
ifcount THAWTIME
 
ifcount THAWTIME
{
ai AIBOTWALKHUNT
getlastpal
ai AIBOTWALKHUNT
getlastpal
}
else ifcount FROZENDRIPTIME
else
ifcount FROZENDRIPTIME
{
ifactioncount 26
{
{
spawn WATERDRIP
resetactioncount
}
}
ifhitweapon
ifhitweapon
{
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
strength 0
break
strength 0
break
}
addkills 1
ifrnd 84
spawn BLOODPOOL
lotsofglass 30
spawn ATOMICHEALTH
sound GLASS_BREAKING
ifspritepal 21
addkills 1
 
ifrnd 84
spawn BLOODPOOL
lotsofglass 30
spawn ATOMICHEALTH
sound GLASS_BREAKING
ifspritepal 21
{
state miniboss
break
}
else
{
endofgame 52
killit
}
endofgame 52
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
}
else ifai AIBOTWALKSTEROIDS
else
ifai AIBOTWALKSTEROIDS
{
state steroidswalk
break
}
else ifai AIBOTWALKGROW
else
ifai AIBOTWALKGROW
{
ifcount 32
ifcount 32
{
guts JIBS4 24
guts JIBS6 28
addkills 1
sound SQUISH2
sound PIPEBOMB_EXPLODE
hitradius 2048 60 70 80 90
spawn BLOODPOOL
spawn EXPLOSION2
ifspritepal 21
guts JIBS4 24
guts JIBS6 28
addkills 1
sound SQUISH2
sound PIPEBOMB_EXPLODE
hitradius 2048 60 70 80 90
spawn BLOODPOOL
spawn EXPLOSION2
ifspritepal 21
{
state miniboss
break
}
else
{
endofgame 52
killit
}
endofgame 52
killit
}
else
{
sizeto MAXXSTRETCH MAXYSTRETCH
break
sizeto MAXXSTRETCH MAXYSTRETCH
break
}
break
break
}
else ifai AIBOTWALKSHRINK
else
ifai AIBOTWALKSHRINK
{
ifcount SHRUNKDONECOUNT
ai AIBOTWALKHUNT
 
ifcount SHRUNKDONECOUNT
ai AIBOTWALKHUNT
else
ifcount SHRUNKCOUNT
{
ifcount SHRUNKCOUNT
spawn FRAMEEFFECT1
sizeto 42 36
}
else
{
ifcount 31
nullop
else
{
spawn FRAMEEFFECT1
sizeto 42 36
}
else ifcount 31
nullop
else ifcount 30
{
ifcount 30
{
ifrnd 255
{
{
sound DUKE_TAKEPILLS
ai AIBOTWALKSTEROIDS
break
}
}
}
ifcount 32
ifcount 32
{
ifpdistl SQUISHABLEDISTANCE
ifpdistl SQUISHABLEDISTANCE
{
state standard_pjibs
sound SQUISH2
spawn BLOODPOOL
pstomp
ifspritepal 21
{
state miniboss
break
}
else
{
ifrnd 128
sound SANTA_DEAD
state standard_pjibs
sound SQUISH2
spawn BLOODPOOL
pkick
// state headhitstate
// state headhitstate
// state headhitstate
state headhitstate
ifspritepal 21
{
state miniboss
break
}
else
{
ifrnd 128
sound SANTA_DEAD
else
sound SANTA_TRASH9
endofgame 52
killit
}
sound SANTA_TRASH9
}
endofgame 52
killit
}
}
else
{
sizeto MINXSTRETCH MINYSTRETCH
spawn FRAMEEFFECT1
sizeto MINXSTRETCH MINYSTRETCH
spawn FRAMEEFFECT1
}
}
break
 
break
}
else ifai AIBOTWALKDYING
else
ifai AIBOTWALKDYING
{
state botwalkdyingstate
break
state botwalkdyingstate
break
}
else
ifrnd 1
operate
ifrnd 1
operate
 
ifhitweapon
ifhitweapon
{
state botwalkhitstate
break
state botwalkhitstate
break
}
else ifai AIWALKFALLHARD
else
ifai AIWALKFALLHARD
{
iffloordistl 16
ai AIBOTWALKHUNT
iffloordistl 16
{
ai AIBOTWALKHUNT
}
else
break
{
break
}
}
else
{
ifai AIWALKFALL
ifai AIWALKFALL
{
state botshootstate
iffloordistl 16
ai AIBOTWALKHUNT
state botshootstate
iffloordistl 16
{
ai AIBOTWALKHUNT
}
else
break
{
break
}
}
}
ifp pshrunk
state stomphisfreakingass
iffloordistl 550
nullop
 
ifp pshrunk
state stomphisfreakingass
 
iffloordistl 550
nullop
else
{
ai AIFLYWAIT
cactor SOBBOTFLY
ai AIFLYWAIT
cactor SOBBOTFLY
}
 
ifonwater
nullop
ifonwater
{
}
else
{
ifp pjetpack
ifp phigher
ifcansee
ifp pjetpack
ifp phigher
ifcansee
{
ai AIFLYWAIT
cactor SOBBOTFLY
ai AIFLYWAIT
cactor SOBBOTFLY
}
}
 
ifp phigher
ifp phigher
{
ifrnd 1
ifrnd 196
ifrnd 1
{
ifrnd 196
{
ai AIFLYWAIT
cactor SOBBOTFLY
ai AIFLYWAIT
cactor SOBBOTFLY
}
}
}
 
ifai AIWALKWAIT
ifai AIWALKWAIT
{
ai AIBOTWALKSEEK
break
ai AIBOTWALKSEEK
break
}
else ifai AIBOTWALKSEEK state botwalkseekstate
else ifai AIBOTWALKHUNT state botwalkhuntstate
else ifai AIBOTWALKJUMP1 state botwalkjumpstate
else ifai AIBOTWALKJUMP2 state botwalkjumpstate
else ifai AIBOTWALKKICK state botwalkkickstate
else ifai AIBOTWALKSTRAIGHT state botwalkstraightstate
else ifai AIBOTWALKSTRJUMP1 state botwalkstraightjumpstate
else ifai AIBOTWALKSTRJUMP2 state botwalkstraightjumpstate
else ifai AIBOTLETFALL state botletfallstate
else ifai AIBOTWALKSTRJUMP1S state botjumpshootstate
else ifai AIBOTWALKSTRJUMP2S state botjumpshootstate
else
ifai AIBOTWALKSEEK
state botwalkseekstate
else
ifai AIBOTWALKHUNT
state botwalkhuntstate
else
ifai AIBOTWALKJUMP1
state botwalkjumpstate
else
ifai AIBOTWALKJUMP2
state botwalkjumpstate
else
ifai AIBOTWALKKICK
state botwalkkickstate
else
ifai AIBOTWALKSTRAIGHT
state botwalkstraightstate
else
ifai AIBOTWALKSTRJUMP1
state botwalkstraightjumpstate
else
ifai AIBOTWALKSTRJUMP2
state botwalkstraightjumpstate
else
ifai AIBOTLETFALL
state botletfallstate
else
ifai AIBOTWALKSTRJUMP1S
state botjumpshootstate
else
ifai AIBOTWALKSTRJUMP2S
state botjumpshootstate
 
 
enda
 
state botflydyingstate
fall
strength 0
cstat 0
ifactioncount 5
 
fall
 
strength 0
cstat 0
 
ifactioncount 5
{
action ABOTFLYDEAD
 
action ABOTFLYDEAD
ifspritepal 21
{
state miniboss
break
}
else
endofgame 52
{
state miniboss
break
}
endofgame 52
}
 
ends
 
state choosedodgefly
ifceilingdistl 100
 
ifceilingdistl 100
{
ifai AIBOTFLYDODGEDOWN
nullop
ifai AIBOTFLYDODGEDOWN
nullop
else
ai AIBOTFLYDODGEDOWN
ai AIBOTFLYDODGEDOWN
}
else
{
ifai AIBOTFLYDODGEUP
nullop
ifai AIBOTFLYDODGEUP
nullop
else
ai AIBOTFLYDODGEUP
ai AIBOTFLYDODGEUP
}
 
ends
 
 
state botflydodgestate
ifcanshoottarget
state botshootstate
ifcansee
 
ifcanshoottarget
state botshootstate
 
ifcansee
{
ifrnd 2
{
ifrnd 2
{
ifceilingdistl 100
ai AIBOTFLYDODGEDOWN
ifceilingdistl 100
ai AIBOTFLYDODGEDOWN
else
ai AIBOTFLYDODGEUP
}
ai AIBOTFLYDODGEUP
}
else
ai AIBOTFLYSEEKUP
ifcount 10
ai AIBOTFLYDOWN
}
else
{
ai AIBOTFLYSEEKUP
}
 
ifcount 10
ai AIBOTFLYDOWN
 
ends
 
state botflyhitstate
state botshootstate
// spawn BLOOD
ifdead
 
state botshootstate
 
// spawn BLOOD
 
ifdead
{
ifspritepal 21 { state miniboss break } else sound SANTA_DEAD
 
ifwasweapon FREEZEBLAST
{
ifspritepal 21
{
state miniboss
break
}
else
sound SANTA_DEAD
ifwasweapon FREEZEBLAST
{
spritepal 1
strength 0
move 0
action ABOTFLYFROZEN
sound SOMETHINGFROZE
break
}
else ifwasweapon GROWSPARK
{
cstat 0
sound ACTOR_GROWING
ai AIBOTFLYGROW
break
}
else ifwasweapon RADIUSEXPLOSION
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
endofgame 52
killit
}
else ifwasweapon RPG
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
endofgame 52
killit
}
else
ai AIBOTFLYDYING
}
else
{
state dudehurt
ifwasweapon SHRINKSPARK
{
ifai AIBOTFLYSTEROIDS
nullop
spritepal 1
strength 0
move 0
action ABOTFLYFROZEN
sound SOMETHINGFROZE
break
}
else
ifwasweapon GROWSPARK
{
cstat 0
sound ACTOR_GROWING
ai AIBOTFLYGROW
break
}
else
ifwasweapon RADIUSEXPLOSION
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
endofgame 52
killit
}
else
ifwasweapon RPG
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
addkills 1
endofgame 52
killit
}
else
{
ai AIBOTFLYDYING
}
 
}
else
{
state dudehurt
 
ifwasweapon SHRINKSPARK
{
ifai AIBOTFLYSTEROIDS
{
}
else
{
ai AIBOTFLYSHRINK
break
ai AIBOTFLYSHRINK
break
}
}
}
}
}
 
ends
 
state botflyseekupstate
ifcansee
 
ifcansee
{
ai AIBOTFLYUP
break
ai AIBOTFLYUP
break
}
ifp phigher
nullop
 
ifp phigher
{
}
else
{
ai AIBOTFLYSEEKDOWN
break
ai AIBOTFLYSEEKDOWN
break
}
 
ends
 
state botflyseekdownstate
ifcansee
 
ifcansee
{
ai AIBOTFLYDOWN
break
ai AIBOTFLYDOWN
break
}
else
{
ifp phigher
nullop
ifp phigher
{
}
else
{
ai AIBOTLETFALL
cactor SOBBOTWALK
ai AIBOTLETFALL
cactor SOBBOTWALK
}
}
ifp phigher
 
ifp phigher
{
ai AIBOTFLYSEEKUP
break
ai AIBOTFLYSEEKUP
break
}
 
ends
 
state botflydownstate
state botshootstate
ifrnd 16
ifp phigher
{
ai AIBOTFLYUP
break
}
ifcansee
nullop
else
 
state botshootstate
 
ifrnd 16
{
ai AIBOTFLYSTRAIGHT
ifp phigher
{
ai AIBOTFLYUP
break
}
}
 
ifcansee
{
}
else
{
ai AIBOTFLYSTRAIGHT
break
}
 
ends
 
state botflyupstate
 
state botshootstate
state botshootstate
 
ifrnd 16
ifrnd 16
{
ifp phigher
nullop
ifp phigher
nullop
else
{
ai AIBOTFLYDOWN
break
ai AIBOTFLYDOWN
break
}
}
 
ifcansee
nullop
ifcansee
{
}
else
ai AIBOTFLYSTRAIGHT
{
ai AIBOTFLYSTRAIGHT
}
 
ends
 
state botflyupmomentstate
ifcansee
 
ifcansee
{
ifcount 10 ai AIBOTFLYUP
break
ifcount 10 ai AIBOTFLYUP
break
}
else
{
ifcount 50
ifcount 50
{
ai AIBOTLETFALL
cactor SOBBOTWALK
ai AIBOTLETFALL
cactor SOBBOTWALK
}
}
 
ends
 
state botflyholdstate
state botshootstate
ifcount 50
ai AIBOTFLYUP
 
state botshootstate
 
ifcount 50
{
ai AIBOTFLYUP
}
 
ends
 
state botflystraightstate
ifpdistg 20000
ai AIBOTFLYSEEKDOWN
 
ifcansee
ai AIBOTFLYDOWN
ifpdistg 20000
ai AIBOTFLYSEEKDOWN
 
ifcansee
{
ai AIBOTFLYDOWN
}
else
{
ifrnd 128
1503,249 → 1576,284
ifnotmoving
ai AIFLYUPMOMENT
}
 
ends
 
state steroidsfly
soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1
ifcount 100
ai AIBOTFLYUP
ifcount 34
nullop
 
soundonce DUKE_HARTBEAT
spawn FRAMEEFFECT1
 
ifcount 100
{
ai AIBOTFLYUP
}
 
ifcount 34
{
}
else
sizeto 42 36
ifhitweapon
{
state botflyhitstate
break
sizeto 42 36
}
 
ifhitweapon
{
state botflyhitstate
break
}
 
ends
 
// FLY ACTOR
 
useractor enemy SOBBOTFLY SOBBOTSTRENGTH ABOTFLY
state checksquished
ifai 0
state checksquished
 
ifai 0
{
ifcansee
nullop
else
break
ifspritepal 21
strength MINIBOSSSTRENGTH
sizeat 42 36
cstat 257
sound INSERT_CLIP
ai AIBOTFLYSEEKDOWN
spritepal 0
break
ifcansee nullop else { break }
ifspritepal 21 strength MINIBOSSSTRENGTH
sizeat 42 36
cstat 257
sound INSERT_CLIP
ai AIBOTFLYSEEKDOWN
spritepal 0
break
}
 
fall
sleeptime 300
ifaction ABOTFLYDEAD
break
else ifaction ABOTFLYFROZEN
 
fall
 
sleeptime 300
 
ifaction ABOTFLYDEAD
break
else
ifaction ABOTFLYFROZEN
{
ifcount THAWTIME
ifcount THAWTIME
{
ai AIBOTFLYUP
getlastpal
ai AIBOTFLYUP
getlastpal
}
else ifcount FROZENDRIPTIME
{
else
ifcount FROZENDRIPTIME
{
ifactioncount 26
{
{
spawn WATERDRIP
resetactioncount
}
}
}
ifhitweapon
ifhitweapon
{
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
strength 0
break
strength 0
break
}
addkills 1
addkills 1
 
ifrnd 84
spawn BLOODPOOL
lotsofglass 30
spawn ATOMICHEALTH
sound GLASS_BREAKING
ifspritepal 21
ifrnd 84
spawn BLOODPOOL
 
lotsofglass 30
spawn ATOMICHEALTH
sound GLASS_BREAKING
ifspritepal 21
{
state miniboss
break
}
else
{
endofgame 52
killit
}
endofgame 52
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
 
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
}
else ifai AIBOTFLYSTEROIDS
else
ifai AIBOTFLYSTEROIDS
{
soundonce DUKE_JETPACK_IDLE
state steroidsfly
break
soundonce DUKE_JETPACK_IDLE
state steroidsfly
break
}
else ifai AIBOTFLYGROW
else
ifai AIBOTFLYGROW
{
ifcount 32
ifcount 32
{
guts JIBS4 24
guts JIBS6 28
addkills 1
sound SQUISH2
sound PIPEBOMB_EXPLODE
hitradius 2048 60 70 80 90
spawn BLOODPOOL
spawn EXPLOSION2
ifspritepal 21
guts JIBS4 24
guts JIBS6 28
addkills 1
sound SQUISH2
sound PIPEBOMB_EXPLODE
hitradius 2048 60 70 80 90
spawn BLOODPOOL
spawn EXPLOSION2
ifspritepal 21
{
state miniboss
break
}
else
{
endofgame 52
killit
}
endofgame 52
killit
}
else
{
sizeto MAXXSTRETCH MAXYSTRETCH
break
sizeto MAXXSTRETCH MAXYSTRETCH
break
}
break
break
}
else ifai AIBOTFLYSHRINK
else
ifai AIBOTFLYSHRINK
{
ifcount SHRUNKDONECOUNT
ai AIBOTFLYUP
else ifcount SHRUNKCOUNT
{
ifcount SHRUNKDONECOUNT
ai AIBOTFLYUP
else
ifcount SHRUNKCOUNT
{
spawn FRAMEEFFECT1
sizeto 42 36
}
else
{
}
else
{
ifcount 31
nullop
else ifcount 30
ifrnd 255
else
{
ifcount 30
{
ifrnd 255
{
sound DUKE_TAKEPILLS
ai AIBOTFLYSTEROIDS
break
}
}
}
ifcount 32
{
{
 
ifpdistl SQUISHABLEDISTANCE
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
{
// state standard_pjibs
// state standard_pjibs
// state standard_pjibs
state standard_pjibs
sound SQUISH2
spawn BLOODPOOL
pstomp
ifspritepal 21
{
state miniboss
break
}
else
{
ifrnd 128
pkick
// state headhitstate
// state headhitstate
// state headhitstate
state headhitstate
ifspritepal 21
{
state miniboss
break
}
else
{
ifrnd 128
sound SANTA_DEAD
else
else
sound SANTA_TRASH9
endofgame 52
killit
}
endofgame 52
killit
}
}
}
else
{
else
{
sizeto MINXSTRETCH MINYSTRETCH
spawn FRAMEEFFECT1
}
}
}
break
break
}
soundonce DUKE_JETPACK_IDLE
ifai AIBOTFLYDYING
 
soundonce DUKE_JETPACK_IDLE
 
ifai AIBOTFLYDYING
{
state botflydyingstate
break
state botflydyingstate
break
}
ifhitweapon
state botflyhitstate
ifrnd 2 operate
ifp pshrunk
state stomphisfreakingass
ifrnd 25
 
ifhitweapon
state botflyhitstate
 
ifrnd 2 operate
 
ifp pshrunk
{
ifp phigher
nullop
else ifp ponground
state stomphisfreakingass
}
 
ifrnd 25
{
ifp phigher
{
}
else
{
ifp ponground
{
iffloordistl 200
{
{
sound DUKE_JETPACK_OFF
iffloordistl 100
ai AIWALKFALL
else
ai AIWALKFALLHARD
iffloordistl 100 ai AIWALKFALL else ai AIWALKFALLHARD
cactor SOBBOTWALK
}
}
}
}
ifai AIFLYWAIT
 
ifai AIFLYWAIT
{
move 0
sound DUKE_JETPACK_ON
ai AIBOTFLYSEEKDOWN
move 0
sound DUKE_JETPACK_ON
ai AIBOTFLYSEEKDOWN
}
ifai AIBOTFLYSEEKUP state botflyseekupstate
else ifai AIBOTFLYSEEKDOWN state botflyseekdownstate
else ifai AIBOTFLYDOWN state botflydownstate
else ifai AIBOTFLYUP state botflyupstate
else ifai AIBOTFLYDODGEUP state botflydodgestate
else ifai AIBOTFLYDODGEDOWN state botflydodgestate
else ifai AIFLYUPMOMENT state botflyupmomentstate
else ifai AIFLYUPHOLD state botflyholdstate
else ifai AIBOTFLYSTRAIGHT state botflystraightstate
 
ifai AIBOTFLYSEEKUP
state botflyseekupstate
else
ifai AIBOTFLYSEEKDOWN
state botflyseekdownstate
else
ifai AIBOTFLYDOWN
state botflydownstate
else
ifai AIBOTFLYUP
state botflyupstate
else
ifai AIBOTFLYDODGEUP
state botflydodgestate
else
ifai AIBOTFLYDODGEDOWN
state botflydodgestate
else
ifai AIFLYUPMOMENT
state botflyupmomentstate
else
ifai AIFLYUPHOLD
state botflyholdstate
else
ifai AIBOTFLYSTRAIGHT
state botflystraightstate
 
break
enda
 
// Grunt
 
 
action AELFUZIWALK 0 4 5 1 30
action AELFUZIRUN 0 4 5 1 15
action AELFUZIFROZEN 0 1 5 1
1774,99 → 1882,113
ai AIELFUZIGROW AELFUZIGROW elfuzistopped geth getv
 
state elfuziseekstate
ifcansee
 
ifcansee
{
ifp pdead break
ifpdistl 15000
ifrnd 16
ai AIELFUZIHUNTING
ifp pdead break
 
ifpdistl 15000
{
ifrnd 16
{
ai AIELFUZIHUNTING
}
}
}
 
ends
 
state elfuzihuntstate
ifp pdead ai AIELFUZISEEKING
ifcansee
 
ifp pdead ai AIELFUZISEEKING
 
 
ifcansee
{
ifpdistl 2000
ifpdistl 2000
{
ai AIELFUZISHOOTING
break
ai AIELFUZISHOOTING
break
}
ifrnd 64
ifnotmoving
ifrnd 64 ifnotmoving
{
ai AIELFUZIJUMPING
break
}
 
ifrnd 7
ifpdistl 8192
{
ai AIELFUZIJUMPING
break
ai AIELFUZISHOOTING
}
 
ifrnd 7
ifpdistl 8192
ai AIELFUZISHOOTING
}
else
ifrnd 64
ai AIELFUZIIQ
{
ifrnd 64 ai AIELFUZIIQ
}
 
ends
 
state elfuziiqstate
ifcansee
ai AIELFUZIHUNTING
 
ifcansee
{
ai AIELFUZIHUNTING
}
else
{
ifrnd 16
ifnotmoving
ai AIELFUZISEEKING
ifrnd 16
ifnotmoving
{
ai AIELFUZISEEKING
}
}
 
ends
 
state elfuzishootstate
ifcansee
 
ifcansee
{
ifp pdead ai AIELFUZISEEKING
ifactioncount 3
ifp pdead ai AIELFUZISEEKING
 
ifactioncount 3
{
ifspritepal 0
ifspritepal 0
{
sound CHAINGUN_FIRE
shoot CHAINGUN
}
else {
ifrnd 80
{
sound CHAINGUN_FIRE
shoot CHAINGUN
}
else ifrnd 80
{
sound SHRINKER_FIRE
shoot SHRINKER
}
resetactioncount
sound SHRINKER_FIRE
shoot SHRINKER
} }
resetactioncount
}
ifrnd 4
ai AIELFUZIHUNTING
}
else
ai AIELFUZIIQ
else
{
ai AIELFUZIIQ
}
 
ends
 
state elfuzijumpingstate
ifactioncount 2
ai AIELFUZIFALLING
 
ifactioncount 2
ai AIELFUZIFALLING
 
ends
 
state elfuzifallingstate
iffloordistl 5
ai AIELFUZIHUNTING
 
iffloordistl 5
ai AIELFUZIHUNTING
 
ends
 
action NONEACTION 0 1 1 1 1
1874,7 → 1996,7
move forwardspeed 1500
// ai AIMOVEFORWARD NONEACTION forwardspeed faceplayer
 
useractor notenemy SPECBLOOD 0 // Hendricks266 fixed this actor. Before this fix, this line said "useractor SPECBLOOD 0", and the code was shit.
useractor notenemy SPECBLOOD 0 // Hendricks266 fixed this actor. Before this fix, this line said "useractor SPECBLOOD 0", and the code was all messed up.
cstat 32768
// sizeat 42 36
// sizeat 32 27
1887,62 → 2009,67
 
 
state elfuzihitstate
spawn BLOOD // Hendricks266 fixed this bug. Before this fix, this line said "spawn SPECBLOOD". SPECBLOOD is a piece of shit.
state random_wall_jibs
ifdead
spawn BLOOD // Hendricks266 fixed this bug. Before this fix, this line said "spawn SPECBLOOD". SPECBLOOD is a piece of shit.
state random_wall_jibs
 
ifdead
{
ifrnd 128
spawn XMASPRESENT2
ifwasweapon GROWSPARK
ifrnd 128
{
sound ACTOR_GROWING
ai AIELFUZIGROW
break
spawn XMASPRESENT2
}
addkills 1
ifwasweapon GROWSPARK
{
sound ACTOR_GROWING
ai AIELFUZIGROW
break
}
 
addkills 1
state random_wall_jibs
ifwasweapon FREEZEBLAST
 
ifwasweapon FREEZEBLAST
{
sound SOMETHINGFROZE
spritepal 1
move 0
action AELFUZIFROZEN
strength 0
break
sound SOMETHINGFROZE
spritepal 1
move 0
action AELFUZIFROZEN
strength 0
break
}
ifwasweapon RADIUSEXPLOSION
ifwasweapon RADIUSEXPLOSION
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
else ifwasweapon RPG
else
ifwasweapon RPG
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
else
ai AIELFUZIDYING
ai AIELFUZIDYING
 
}
else
{
// state random_wall_jibs
ifwasweapon SHRINKSPARK
// state random_wall_jibs
ifwasweapon SHRINKSPARK
{
sound ACTOR_SHRINKING
ai AIELFUZISHRINKING
sound ACTOR_SHRINKING
ai AIELFUZISHRINKING
}
else ifwasweapon GROWSPARK
else
ifwasweapon GROWSPARK
sound EXPANDERHIT
else
else
ifrnd 32
ai AIELFUZISHOOTING
}
1949,117 → 2076,120
ends
 
state elfuzishrinkstate
ifcount SHRUNKDONECOUNT
ai AIELFUZISEEKING
 
ifcount SHRUNKDONECOUNT
ai AIELFUZISEEKING
else
ifcount SHRUNKCOUNT
sizeto 32 27 // sizeto 48 40
else
// sizeto 48 40
sizeto 32 27
else
state genericshrunkcode
 
ends
 
state elfuzidyingstate
ifactioncount 5
 
ifactioncount 5
{
ifrnd 64
spawn BLOODPOOL
state rf
iffloordistl 8
sound THUD
action AELFUZIDEAD
move elfuzistopped
break
ifrnd 64
spawn BLOODPOOL
state rf
iffloordistl 8
sound THUD
action AELFUZIDEAD
move elfuzistopped
break
}
 
ends
 
useractor enemy ELFUZI ELFUZISTRENGTH
fall
state checksquished
ifaction AELFUZIDEAD
fall
 
state checksquished
 
ifaction AELFUZIDEAD
{
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
ifrespawn
ifcount RESPAWNACTORTIME
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
spawn TRANSPORTERSTAR
cstat 257
strength ELFUZISTRENGTH
ai AIELFUZISEEKING
}
ifrespawn
ifcount RESPAWNACTORTIME
else
{
spawn TRANSPORTERSTAR
cstat 257
strength ELFUZISTRENGTH
ai AIELFUZISEEKING
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
break
}
break
break
}
else ifaction AELFUZIFROZEN
else
ifaction AELFUZIFROZEN
{
ifcount THAWTIME
ifcount THAWTIME
{
ai AIELFUZISEEKING
getlastpal
ai AIELFUZISEEKING
getlastpal
}
else ifcount FROZENDRIPTIME
else
ifcount FROZENDRIPTIME
ifrnd 8
spawn WATERDRIP
ifhitweapon
 
ifhitweapon
{
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
strength 0
break
strength 0
break
}
addkills 1
lotsofglass 30
ifrnd 84 spawn BLOODPOOL
sound GLASS_BREAKING
killit
addkills 1
lotsofglass 30
ifrnd 84 spawn BLOODPOOL
sound GLASS_BREAKING
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
}
else ifai AIELFUZIDYING
else
ifai AIELFUZIDYING
state elfuzidyingstate
 
ifai AIELFUZISHRINKING
nullop
else ifai AIELFUZIGROW
nullop
else ifhitweapon
state elfuzihitstate
ifai AIELFUZISHRINKING nullop else { ifai AIELFUZIGROW nullop else { ifhitweapon state elfuzihitstate } }
 
ifai 0
ifai 0
{
ai AIELFUZISEEKING
cstat 257
ai AIELFUZISEEKING
cstat 257
// clipdist 32
sizeat 32 27 // sizeat 42 36
ifspritepal 0
nullop
else
// sizeat 42 36
sizeat 32 27
ifspritepal 0 nullop else
{
ifrnd 72
strength ELFUZIALTSTR
else
strength ELFUZISTRENGTH
ifrnd 72
strength ELFUZIALTSTR
else
strength ELFUZISTRENGTH
}
}
else ifai AIELFUZISEEKING state elfuziseekstate
else
 
ifai AIELFUZISEEKING state elfuziseekstate
else ifai AIELFUZIHUNTING state elfuzihuntstate
else ifai AIELFUZIIQ state elfuziiqstate
else ifai AIELFUZISHOOTING state elfuzishootstate
2066,19 → 2196,16
else ifai AIELFUZIJUMPING state elfuzijumpingstate
else ifai AIELFUZIFALLING state elfuzifallingstate
else ifai AIELFUZIGROW state genericgrowcode
 
ifai AIELFUZISHRINKING state elfuzishrinkstate
enda
 
useractor enemystayput ELFUZISTAYPUT ELFUZISTRENGTH
cstat 257
// clipdist 32
ai AIELFUZISEEKING
cactor ELFUZI
cstat 257
// clipdist 32
ai AIELFUZISEEKING
cactor ELFUZI
enda
 
// Groan
 
action AELFGUNWALK 0 4 5 1 20
action AELFGUNRUN 0 4 5 1 10
action AELFGUNFROZEN 0 1 5 1
2101,16 → 2228,20
ai AIELFGUNGROW AELFGUNGROW elfgunstopped geth getv
 
state elfgunseekstate
ifcansee
 
ifcansee
{
ifp pdead break
ifpdistl 15000
ifrnd 16
ai AIELFGUNHUNTING
ifp pdead break
 
ifpdistl 15000
{
ifrnd 16
{
ai AIELFGUNHUNTING
}
}
}
 
ends
 
state elfgunhuntstate
2117,129 → 2248,137
ifp pdead ai AIELFGUNSEEKING
 
ifcansee
{
ifpdistl 2000
{
ai AIELFGUNSHOOTING
break
ifpdistl 2000
{
ai AIELFGUNSHOOTING
break
}
}
}
 
ifrnd 7
{
ifpdistl 8192
ai AIELFGUNSHOOTING
ifpdistl 8192 ai AIELFGUNSHOOTING
}
else ifrnd 48
ai AIELFGUNIQ
else ifrnd 48 ai AIELFGUNIQ
ends
 
state elfguniqstate
ifcansee
ai AIELFGUNHUNTING
ifcansee ai AIELFGUNHUNTING
else
ifrnd 16
ifnotmoving
ai AIELFGUNSEEKING
{
ifrnd 16
ifnotmoving
ai AIELFGUNSEEKING
}
ends
 
state elfgunshootstate
ifp pdead
ai AIELFGUNSEEKING
ifcansee
 
ifcansee
{
ifcanshoottarget
ifp pdead ai AIELFGUNSEEKING
 
ifcount 20
{
ifcount 29
nullop
else ifcount 28
ifcount 29
nullop
else
{
ifcount 28
{
sound SHOTGUN_COCK
else ifcount 20
nullop
else ifcount 19
}
}
}
else
{
ifcount 19
{
sound SHOTGUN_FIRE
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
sound SHOTGUN_FIRE
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
shoot SHOTGUN
}
}
}
else
ai AIELFGUNIQ
 
ifactioncount 3
{
{
resetcount
resetactioncount
ifrnd 64
ai AIELFGUNHUNTING
}
}
else ai AIELFGUNIQ
 
ends
 
state elfgunhitstate
spawn BLOOD
spawn BLOOD
 
state random_wall_jibs
 
ifdead
{
state random_wall_jibs
ifdead
{
ifrnd 128
spawn XMASPRESENT
ifwasweapon GROWSPARK
ifrnd 128
{
sound ACTOR_GROWING
ai AIELFGUNGROW
break
spawn XMASPRESENT
}
addkills 1
ifwasweapon FREEZEBLAST
ifwasweapon GROWSPARK
{
sound SOMETHINGFROZE
spritepal 1
move 0
action AELFGUNFROZEN
strength 0
break
sound ACTOR_GROWING
ai AIELFGUNGROW
break
}
ifwasweapon RADIUSEXPLOSION
 
addkills 1
 
ifwasweapon FREEZEBLAST
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
sound SOMETHINGFROZE
spritepal 1
move 0
action AELFGUNFROZEN
strength 0
break
}
else ifwasweapon RPG
ifwasweapon RADIUSEXPLOSION
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
else
ai AIELFGUNDYING
ifwasweapon RPG
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
else
ai AIELFGUNDYING
 
}
else
{
state random_wall_jibs
ifwasweapon SHRINKSPARK
state random_wall_jibs
ifwasweapon SHRINKSPARK
{
sound ACTOR_SHRINKING
ai AIELFGUNSHRINKING
sound ACTOR_SHRINKING
ai AIELFGUNSHRINKING
}
else ifwasweapon GROWSPARK
else
ifwasweapon GROWSPARK
sound EXPANDERHIT
else
else
ifrnd 32
ai AIELFGUNSHOOTING
}
2246,128 → 2385,128
ends
 
state elfgunshrinkstate
ifcount SHRUNKDONECOUNT
ai AIELFGUNSEEKING
else ifcount SHRUNKCOUNT
sizeto 32 27 // sizeto 48 40
 
ifcount SHRUNKDONECOUNT
ai AIELFGUNSEEKING
else
ifcount SHRUNKCOUNT
// sizeto 48 40
sizeto 32 27
else
state genericshrunkcode
 
ends
 
state elfgundyingstate
ifactioncount 4
 
ifactioncount 4
{
ifrnd 64
spawn BLOODPOOL
state rf
iffloordistl 8
sound THUD
action AELFGUNDEAD
move elfgunstopped
break
ifrnd 64
spawn BLOODPOOL
state rf
iffloordistl 8
sound THUD
action AELFGUNDEAD
move elfgunstopped
break
}
 
ends
 
useractor enemy ELFGUN ELFGUNSTRENGTH
fall
state checksquished
ifaction AELFGUNDEAD
fall
state checksquished
 
ifaction AELFGUNDEAD
{
ifrespawn
ifcount RESPAWNACTORTIME
ifrespawn
ifcount RESPAWNACTORTIME
{
spawn TRANSPORTERSTAR
cstat 257
strength ELFGUNSTRENGTH
ai AIELFGUNSEEKING
spawn TRANSPORTERSTAR
cstat 257
strength ELFGUNSTRENGTH
ai AIELFGUNSEEKING
}
else
{
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
strength 0
ifhitweapon
ifwasweapon RADIUSEXPLOSION
{
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
sound SQUISH2
// state standard_jibs
// state standard_jibs
state standard_jibs
killit
}
break
break
}
break
break
}
else ifaction AELFGUNFROZEN
else
ifaction AELFGUNFROZEN
{
ifcount THAWTIME
ifcount THAWTIME
{
ai AIELFGUNSEEKING
getlastpal
ai AIELFGUNSEEKING
getlastpal
}
else
ifcount FROZENDRIPTIME
ifrnd 8
spawn WATERDRIP
ifcount FROZENDRIPTIME
ifrnd 8
spawn WATERDRIP
 
ifhitweapon
ifhitweapon
{ // state elfgunhitstate
ifwasweapon FREEZEBLAST
ifwasweapon FREEZEBLAST
{
strength 0
break
strength 0
break
}
addkills 1
lotsofglass 30
ifrnd 84
spawn BLOODPOOL
sound GLASS_BREAKING
killit
addkills 1
lotsofglass 30
ifrnd 84 spawn BLOODPOOL
sound GLASS_BREAKING
killit
}
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
ifp pfacing
ifpdistl FROZENQUICKKICKDIST
pkick
break
}
else
ifai AIELFGUNDYING
state elfgundyingstate
ifai AIELFGUNDYING
state elfgundyingstate
 
ifai AIELFGUNSHRINKING
nullop
else ifai AIELFGUNGROW
nullop
else ifhitweapon
state elfgunhitstate
ifai AIELFGUNSHRINKING nullop else { ifai AIELFGUNGROW nullop else { ifhitweapon { state elfgunhitstate } } }
 
ifai 0
ifai 0
{
ai AIELFGUNSEEKING
cstat 257
// clipdist 32
sizeat 32 27 // sizeat 42 36
strength ELFGUNSTRENGTH
ai AIELFGUNSEEKING
cstat 257
// clipdist 32
// sizeat 42 36
sizeat 32 27
strength ELFGUNSTRENGTH
}
else ifai AIELFGUNSEEKING state elfgunseekstate
else ifai AIELFGUNHUNTING state elfgunhuntstate
else ifai AIELFGUNIQ state elfguniqstate
else ifai AIELFGUNSHOOTING state elfgunshootstate
else ifai AIELFGUNGROW state genericgrowcode
else
 
ifai AIELFGUNSHRINKING state elfgunshrinkstate
ifai AIELFGUNSEEKING { state elfgunseekstate } else
ifai AIELFGUNHUNTING { state elfgunhuntstate } else
ifai AIELFGUNIQ { state elfguniqstate } else
ifai AIELFGUNSHOOTING { state elfgunshootstate } else
ifai AIELFGUNGROW { state genericgrowcode }
ifai AIELFGUNSHRINKING { state elfgunshrinkstate }
 
break
enda
 
useractor enemystayput ELFGUNSTAYPUT ELFGUNSTRENGTH
ai AIELFGUNSEEKING
cstat 257
// clipdist 32
cactor ELFGUN
break
ai AIELFGUNSEEKING
cstat 257
// clipdist 32
cactor ELFGUN
break
enda
 
state present
2385,15 → 2524,7
ifcanseetarget
{
sound RIP_PAPER
ifvarl nw_temp 1
{
ifrnd 128
spawn SHIELD
else
spawn SIXPAK
}
else
espawnvar nw_temp // spawnvar // spawns the lotag, collected during EVENT_LOADACTOR
ifvarl temp 1 { ifrnd 128 spawn SHIELD else spawn SIXPAK } else espawnvar temp
killit
}
ends
2406,15 → 2537,7
ifcanseetarget
{
sound RIP_PAPER
ifvarl nw_temp 1
{
ifrnd 128
spawn CHAINGUNSPRITE
else
spawn SHOTGUNSPRITE
}
else
espawnvar nw_temp // spawnvar // spawns the lotag, collected during EVENT_LOADACTOR
ifvarl temp 1 { ifrnd 128 spawn CHAINGUNSPRITE else spawn SHOTGUNSPRITE } else espawnvar temp
killit
}
ends
2445,76 → 2568,75
ifspritepal 21
{
ifhitweapon
ifcount 24
{
strength 999
ifrnd 128
sound MOVIE2
else
sound MOVIE3
resetcount
ifcount 24
{
strength 999
ifrnd 128 sound MOVIE2 else sound MOVIE3
resetcount
}
}
}
else
hitradius 4096 1 1 1 1
{
hitradius 4096 1 1 1 1
}
enda
 
useractor notenemy MALEGEEK 20
ifhitweapon
{
guts JIBS6 3
sound SQUISH2
ifdead
{
stopsound MALECAROL
guts JIBS6 2
guts JIBS6 3
guts JIBS6 4
sound MALECAROL_DEAD
globalsound MOUSEANNOY
killit
}
}
ifcount 225
{
sound MALECAROL
resetcount
}
ifhitweapon
{
guts JIBS6 3
sound SQUISH2
ifdead
{
stopsound MALECAROL
guts JIBS6 2
guts JIBS6 3
guts JIBS6 4
sound MALECAROL_DEAD
globalsound MOUSEANNOY
killit
}
}
ifcount 225
{
sound MALECAROL
resetcount
}
enda
 
useractor notenemy FEMALEGEEK 20
ifhitweapon
{
guts JIBS6 3
sound SQUISH2
ifdead
{
stopsound FEMALECAROL
guts JIBS6 2
guts JIBS6 3
guts JIBS6 4
sound FEMALECAROL_DEAD
killit
}
}
ifcount 225
{
sound FEMALECAROL
resetcount
}
ifhitweapon
{
guts JIBS6 3
sound SQUISH2
ifdead
{
stopsound FEMALECAROL
guts JIBS6 2
guts JIBS6 3
guts JIBS6 4
sound FEMALECAROL_DEAD
killit
}
}
ifcount 225
{
sound FEMALECAROL
resetcount
}
enda
 
state mariocode
cstat 257
sizeat 62 62
cstat 257
sizeat 62 62
ends
 
useractor notenemy NWMARIO 0
state mariocode
state mariocode
enda
 
useractor notenemy NWMARIO2 0
state mariocode
state mariocode
enda
/nw_plus/nwinter_hrp.def
5,8 → 5,12
--------------------------------------------------------------------------------
*/
 
include nw_hrp/copies.def
include nw_hrp/sprites.def
include nw_hrp/screen.def
include nw_hrp/textures.def
include nw_hrp/skyboxes.def
include nwinter/undef.def
include nwinter/copies.def
include nwinter/8bit.def
include nwinter/sprites.def
include nwinter/screen.def
include nwinter/textures.def
include nwinter/skyboxes.def
include nwinter/music.def
include nwinter/sounds.def
/nw_plus/NWinter+_Readme.txt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Modified: svn:mime-type
-text/plain
\ No newline at end of property
+application/octet-stream
\ No newline at end of property
/nw_plus/NWUser.con
19,6 → 19,7
 
define JETPACK_NEAR_EMPTY 160
 
definequote 125 This jetpack is almost empty!
 
definevolumename 0 Nuclear Winter Demo
definevolumename 1 Nuclear Winter
53,8 → 54,6
 
music 3 NW1.MID NW2.MID NW3.MID NW4.MID NW5.MID NW2.MID NW7.MID
 
definesound BONUSMUSIC bonus.voc 0 0 255 3 0 // needs bit 2 for NWL7
 
definesound FLY_BY flyby.voc 0 0 0 0 0
definesound DUKETALKTOBOSS nwinter/sounds/blank.ogg 0 0 255 12 0
definesound BOSSTALKTODUKE nwinter/sounds/blank.ogg 0 0 255 12 0
119,7 → 118,7
definesound SANTA_TRASH9 422.voc 0 0 254 20 100
 
definesound PHONE_RING fonering.voc 0 0 100 3 0
definesound RIP_PAPER rippaper.voc -64 64 250 20 0
definesound RIP_PAPER rippaper.voc 0 0 255 20 100
 
definesound SQUISH2 squish.voc -128 0 2 0 0
definesound WIND2 wind2.voc 0 0 0 2 0
133,10 → 132,10
definesound FEMALECAROL jingle2.voc 0 0 0 0 0
definesound FEMALECAROL_DEAD scream2.voc 0 0 0 0 0
 
definesound LOWANG1 nwinter/sounds/jg41075.voc 0 0 253 0 -2048 // 1.887 sec, 57 tics
definesound LOWANG2 nwinter/sounds/jg42004.voc 0 0 253 0 -2048 // 4.124 sec, 124 tics
definesound LOWANG3 nwinter/sounds/jg42019.voc 0 0 253 0 -2048 // 4.013 sec, 121 tics
definesound LOWANG4 nwinter/sounds/jg42021.voc 0 0 253 0 -2048 // 5.173 sec, 156 tics
definesound LOWANG1 nwinter/sounds/jg41075.voc 0 0 253 0 -2048
definesound LOWANG2 nwinter/sounds/jg42004.voc 0 0 253 0 -2048
definesound LOWANG3 nwinter/sounds/jg42019.voc 0 0 253 0 -2048
definesound LOWANG4 nwinter/sounds/jg42021.voc 0 0 253 0 -2048
 
definesound PHONE_PICKUP nwinter/sounds/phone-pick-up-1.wav 0 0 100 2 0
definesound PHONE_HANGUP nwinter/sounds/phone-hang-up-1.wav 0 0 100 2 0
/nw_plus/nwl1demo.map
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/nw_plus/NWinter+_To_Do.txt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Modified: svn:mime-type
-text/plain
\ No newline at end of property
+application/octet-stream
\ No newline at end of property
/nw_plus/NWinter.con
9,33 → 9,29
--------------------------------------------------------------------------------
*/
 
definecheat 14 endepisode
definecheat 15 endlevel
definecheat 25 endvolume
 
include NWDefs.con
include NWUser.con
 
setgamename Duke: Nuclear Winter
 
gamevar nw_picnum 0 2
gamevar nw_temp 0 2
gamevar nw_tempb 0 2
gamevar nw_x 0 2
gamevar nw_y 0 2
gamevar nw_z 0 2
gamevar owner 0 2
gamevar temp2 0 2
gamevar temp3 0 2
gamevar temp4 0 2
gamevar ptemp 0 1
gamevar musicchange 0 1
gamevar skin 0 1
 
gamevar nw_owner 0 2
gamevar nw_temp2 0 2
gamevar nw_temp3 0 2
// gamevar nw_temp4 0 0
// gamevar nw_ptemp 0 1
gamevar nw_holodukeid 0 1
gamevar nw_musicchange 0 1
gamevar skin DUKE 132097 // do not reset flag enabled
 
gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled
 
state cutsceneambience
getactor[THISACTOR].lotag nw_temp
getactor[THISACTOR].lotag temp
 
switch nw_temp
switch temp
 
case WIND_AMBIENCE
case WIND_REPEAT
50,8 → 46,8
ends
 
onevent EVENT_LOADACTOR
getactor[THISACTOR].picnum nw_picnum
switch nw_picnum
getactor[THISACTOR].picnum picnum
switch picnum
 
case SNOWYDOORSHOCK
spritepal 30
75,7 → 71,7
break
 
case JETPACK
ifspritepal 21 setvar nw_temp 1
ifspritepal 21 setvar temp 1
spritepal 0
break
 
88,7 → 84,7
 
case XMASPRESENT
case XMASPRESENT2
getactor[THISACTOR].hitag nw_temp
getactor[THISACTOR].hitag temp
setactor[THISACTOR].hitag 0
break
 
95,14 → 91,7
endswitch
endevent
 
onevent EVENT_SPAWN
getactor[THISACTOR].owner nw_owner
getactor[THISACTOR].picnum nw_picnum
endevent
 
onevent EVENT_EGS
getactor[THISACTOR].picnum nw_picnum
 
ifactor APLAYER setactor[THISACTOR].mdflags 16
ifactor DUKETORSO setactor[THISACTOR].mdflags 16
ifactor DUKEGUN setactor[THISACTOR].mdflags 16
113,18 → 102,18
{
sizeat 8 8
 
setvar nw_temp3 0
randvar nw_temp3 2047
setactor[THISACTOR].ang nw_temp3
setvar temp3 0
randvar temp3 2047
setactor[THISACTOR].ang temp3
 
setvar nw_temp2 -2047
randvar nw_temp2 2047
setvar temp2 -2047
randvar temp2 2047
 
/*
setvar nw_temp3 0
ifrnd 128 addvar nw_temp3 4
ifrnd 128 addvar nw_temp3 8
setactor[THISACTOR].cstat nw_temp3
setvar temp3 0
ifrnd 128 addvar temp3 4
ifrnd 128 addvar temp3 8
setactor[THISACTOR].cstat temp3
*/
}
endevent
204,15 → 193,6
killit
}
else
ifactor CHANDELIER
{
sound GLASS_BREAKING
debris SCRAP3 3
debris SCRAP4 4
lotsofglass 10
killit
}
else
ifactor TREEWITHSOMETHING
{
sound GLASS_HEAVYBREAK
253,8 → 233,6
 
useractor notenemy SNOWGIB WEAK state nwbreakobject enda
 
useractor notenemy CHANDELIER WEAK state nwbreakobject enda
 
useractor notenemy TREEWITHSOMETHING TOUGH state nwbreakobject enda
 
actor JETPACK
270,11 → 248,10
ifpinventory GET_JETPACK JETPACK_AMOUNT
ifcanseetarget
{
ifvare nw_temp 1
ifvare temp 1
{
addinventory GET_JETPACK JETPACK_NEAR_EMPTY
redefinequote 122 This jetpack is almost empty!
quote 122
quote 125
}
else
{
295,22 → 272,22
 
 
state nwbabecode
getactor[THISACTOR].cstat nw_temp
ifvarand nw_temp 1 nullop else addvar nw_temp 1
ifactor HALFBITCH { ifvarand nw_temp 128 nullop else addvar nw_temp 128 }
ifvarand nw_temp 256 nullop else addvar nw_temp 256
getactor[THISACTOR].cstat temp
ifvarand temp 1 nullop else addvar temp 1
ifactor HALFBITCH { ifvarand temp 128 nullop else addvar temp 128 }
ifvarand temp 256 nullop else addvar temp 256
 
getuserdef .lockout nw_temp2
ifvare nw_temp2 1
getuserdef .lockout temp2
ifvare temp2 1
{
ifvarand nw_temp 32768 nullop else addvar nw_temp 32768
ifvarand temp 32768 nullop else addvar temp 32768
}
else
// {
ifvarand nw_temp 32768 subvar nw_temp 32768
ifvarand temp 32768 subvar temp 32768
// }
 
setactor[THISACTOR].cstat nw_temp
setactor[THISACTOR].cstat temp
 
 
 
553,28 → 530,28
{
ifvare LEVEL 2
{
getactor[THISACTOR].sectnum nw_temp
switch nw_temp
getactor[THISACTOR].sectnum temp
switch temp
case 220 case 221
ifvarn nw_musicchange 1
ifvarn musicchange 1
{
starttrack 12 // doom
setvar nw_musicchange 1
setvar musicchange 1
}
break
case 563 case 564 case 565 case 566 case 567
ifvarn nw_musicchange 2
ifvarn musicchange 2
{
starttrack 13 // mario
setvar nw_musicchange 2
setvar musicchange 2
}
break
case 192 case 193 case 194 case 195 case 196 case 197 case 198 case 237 case 238 case 239 case 240
case 166 case 167 case 172 case 173 case 174 case 176 case 179
ifvarn nw_musicchange 0
ifvarn musicchange 0
{
starttrackvar LEVEL // level music
setvar nw_musicchange 0
starttrack 2 // level music
setvar musicchange 0
}
break
endswitch
582,44 → 559,9
}
ends
 
// Flying Frosty
 
/*
action ACOMMBREETH 0 3 5 1 40
action ACOMMFROZEN 0 1 5
action ACOMMSPIN -5 1 5 1 12
action ACOMMGET 0 3 5 1 30
action ACOMMSHOOT 20 1 5 1 35
action ACOMMABOUTTOSHOOT 20 1 5 1 30
action ACOMMDYING 30 8 1 1 12
action ACOMMDEAD 38 1 1 1 1
 
 
move COMMGETUPVELS 128 -64
move COMMGETVELS 128 64
move COMMSLOW 64 24
move COMMSTOPPED
 
ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow
ai AICOMMGET ACOMMGET COMMGETVELS seekplayer
ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow
ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow
ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin
ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer
ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir
ai AICOMMGROW ACOMMGET COMMSTOPPED furthestdir
*/
 
move COMMGETUPVELSNW 128 -64
move COMMGETVELSNW 128 64
move COMMSLOWNW 64 24
move COMMSTOPPEDNW
 
action ACOMMSPINNW 0 1 5 1 12
action ACOMMSHOOTNW 20 1 5 1 16 // this is custom to shorten the delay between firing freezeblasts
 
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELSNW spin
ai AICOMMSHOOTNW ACOMMSHOOTNW COMMSTOPPEDNW faceplayerslow
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELS spin
 
state checkcommhitstate
 
728,7 → 670,7
break
}
ifai 0
ai AICOMMSHOOTNW
ai AICOMMSHOOT
else
ifai AICOMMWAIT
{
754,7 → 696,7
ifactioncount 2
{
ifcansee
ai AICOMMSHOOTNW
ai AICOMMSHOOT
else
{
ai AICOMMGET
764,7 → 706,7
ifrnd 32 soundonce COMM_ATTACK
}
else
ifai AICOMMSHOOTNW
ifai AICOMMSHOOT
{
ifcanshoottarget
{
771,17 → 713,12
ifcount 12
ifrnd 16
ai AICOMMWAIT
ifactioncount 1
{
shoot FREEZEBLAST
resetactioncount
}
getplayer[THISACTOR].i nw_temp
getactor[nw_temp].pal nw_temp
ifvare nw_temp 1 // if player is frozen
ai AICOMMGET
 
}
else
ai AICOMMGET
807,22 → 744,11
ifrnd 4
operate
ifpdistl 1024
ifp palive
{
ifp palive
{
sound COMM_SPIN
ai AICOMMSPINNW
break
}
getplayer[THISACTOR].i nw_temp
getactor[nw_temp].pal nw_temp
ifvare nw_temp 1 // if player is frozen
{
sound COMM_SPIN
ai AICOMMSPINNW
break
}
// sound COMM_SPIN
ai AICOMMSPINNW
break
}
 
ifcansee
844,17 → 770,10
{
ifpdistl 1280
{
setvar nw_tempb CAPTSPINNINGPLAYER
mulvar nw_tempb -1
// addphealth CAPTSPINNINGPLAYER
getplayer[THISACTOR].i nw_temp
setactor[nw_temp].htextra nw_tempb
setactor[nw_temp].htpicnum KNEE
setactor[nw_temp].htowner THISACTOR
 
globalsound DUKE_GRUNT
palfrom 32 16
resetcount
addphealth CAPTSPINNINGPLAYER
sound DUKE_GRUNT
palfrom 32
16 resetcount
}
else
ifpdistg 2300
899,8 → 818,6
}
enda
 
// Frosted Battle Mobile
 
move TANKSTOPNW
 
useractor enemy TANK TANKSTRENGTH
1029,35 → 946,22
// -----------------------------------------------------------------------------
 
onevent EVENT_GAME
ifactor APLAYER
{
state nwl3surprise
getplayer[THISACTOR].holoduke_on nw_holodukeid
ifvarg nw_holodukeid -1
setactor[nw_holodukeid].mdflags 16
// addlogvar skin
}
ifactor FRAMEEFFECT1
ifspawnedby APLAYER
setactor[THISACTOR].mdflags 16
 
ifactor APLAYER state nwl3surprise
/*
ifactor MONEY
{
setactor[THISACTOR].mdflags 16
// getactor[THISACTOR].owner nw_owner
switch nw_owner
getactor[THISACTOR].owner owner
switch owner
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
getactor[THISACTOR].x nw_x
getactor[THISACTOR].y nw_y
getactor[THISACTOR].z nw_z
getactor[THISACTOR].x x
getactor[THISACTOR].y y
getactor[THISACTOR].z z
 
updatesectorz nw_x nw_y nw_z nw_temp
ifvarn nw_temp -1 getflorzofslope nw_temp nw_x nw_y nw_temp2 else killit
updatesectorz x y z temp
ifvarn temp -1 getflorzofslope temp x y temp2 else killit
 
ifvarvare nw_z nw_temp2 killit
ifvarvare z temp2 killit
break
endswitch
}
1064,15 → 968,17
*/
endevent
 
onevent EVENT_ANIMATESPRITES
onevent EVENT_ANIMATESPRITES // This is a hell of a mess because putting get/settspr in states throws warnings, and I don't want that.
getactor[THISACTOR].picnum picnum
getactor[THISACTOR].owner owner
 
ifvare nw_picnum DOORSHOCK
ifvare picnum DOORSHOCK
{
ifspritepal 30 settspr[THISACTOR].tsprpicnum 3656
ifvare VOLUME 1 ifvare LEVEL 2 settspr[THISACTOR].tsprpicnum 3656
break
}
ifvare nw_picnum SNOWFLAKE
ifvare picnum SNOWFLAKE
{
settspr[THISACTOR].tsprpicnum SNOW
settspr[THISACTOR].tsprxrepeat 4
1080,9 → 986,9
break
}
/*
ifvare nw_picnum MONEY
ifvare picnum MONEY
{
switch nw_owner
switch owner
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE
settspr[THISACTOR].tsprpicnum SNOW
break
1089,75 → 995,95
endswitch
}
*/
switch nw_picnum
case APLAYER
ifvare skin SANTA
{
gettspr[THISACTOR].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[THISACTOR].tsprpicnum nw_temp3
getplayervar[THISACTOR].skin temp
ifvare temp 1
{
getplayer[THISACTOR].i temp2
gettspr[temp2].tsprpicnum temp3
ifvarl temp3 1544 addvar temp3 4096
settspr[temp2].tsprpicnum temp3
settspr[temp2].tsprpal 10
 
ifvarg nw_holodukeid -1
{
gettspr[nw_holodukeid].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[nw_holodukeid].tsprpicnum nw_temp3
}
}
break
case FRAMEEFFECT1
ifvare skin SANTA
ifspawnedby APLAYER
{
gettspr[THISACTOR].tsprpicnum nw_temp3
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096
settspr[THISACTOR].tsprpicnum nw_temp3
}
break
case DUKETORSO
case DUKEGUN
getactor[nw_owner].picnum nw_temp2
ifvare nw_temp2 SOBBOTWALK
{
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
ifvare nw_temp2 SOBBOTFLY
{
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
ifvare nw_temp2 APLAYER
{
ifvare skin SANTA
{
gettspr[THISACTOR].tsprpicnum nw_temp3
addvar nw_temp3 2456
settspr[THISACTOR].tsprpicnum nw_temp3
}
}
break
ifvare picnum DUKETORSO
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
}
ifvare picnum DUKEGUN
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
}
ifvare picnum DUKELEG
{
getactor[owner].picnum temp2
ifvare temp2 APLAYER settspr[THISACTOR].tsprpal 30
break
}
}
 
case DUKELEG
getactor[nw_owner].picnum nw_temp2
ifvare nw_temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
ifvare nw_temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
ifvare nw_temp2 APLAYER ifvare skin SANTA settspr[THISACTOR].tsprpal 30
break
endswitch
 
ifvare nw_picnum APLAYER // this fixes the bug with the misplaced TV screen tiles
ifvare picnum DUKETORSO
{
gettspr[THISACTOR].tsprpicnum nw_temp
switch nw_temp
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
ifvare temp2 SOBBOTFLY
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
}
ifvare picnum DUKEGUN
{
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
ifvare temp2 SOBBOTFLY
{
gettspr[THISACTOR].tsprpicnum temp3
addvar temp3 2456
settspr[THISACTOR].tsprpicnum temp3
break
}
}
ifvare picnum DUKELEG
{
getactor[owner].picnum temp2
ifvare temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30
ifvare temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30
break
}
ifvare picnum APLAYER
{
gettspr[THISACTOR].tsprpicnum temp
switch temp
case 1470 case 1471 case 1472 case 1473 case 1474
subvar nw_temp 5
settspr[THISACTOR].tsprpicnum nw_temp
subvar temp 5
settspr[THISACTOR].tsprpicnum temp
break
endswitch
}
1167,98 → 1093,63
 
 
useractor notenemy NWEFFECTOR 0
cstat 32768
// sizeat 1 1
cstat 32768
// sizeat 1 1
 
ifspritepal 31 // phone ringing effect
{
/*
getplayer[THISACTOR].cursectnum nw_temp3
switch nw_temp3
case 60 case 61 case 62 case 63
case 86 case 87
case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309
case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317
soundonce PHONE_RING
ifspritepal 31
{
getplayer[THISACTOR].cursectnum temp3
switch temp3
case 60 case 61 case 62 case 63
case 86 case 87
case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309
case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317
soundonce PHONE_RING
break
endswitch
 
default
stopsound PHONE_RING
break
endswitch
*/
 
ifpdistl 8192 // 4096
soundonce PHONE_RING
ifpdistg 16384
stopsound PHONE_RING
 
ifpdistl RETRIEVEDISTANCE
ifpdistl RETRIEVEDISTANCE
ifp pfacing
ifhitspace
ifvare nw_temp2 0
{
setvar nw_temp 0
setvar nw_temp2 1
setvar nw_temp3 0
setvar nw_tempb 0
}
ifhitspace
ifvare temp2 0
{
setvar temp 0
setvar temp2 1
}
 
ifvare nw_temp2 1
{
addvar nw_temp 1
ifvare temp2 1
{
addvar temp 1
 
stopsound PHONE_RING
ifvare nw_temp 1
sound PHONE_PICKUP
else ifvare nw_temp 30
{
setvar nw_tempb 0
randvar nw_tempb 3
 
switch nw_tempb
case 0
sound LOWANG1
setvar nw_temp3 57
break
case 1
sound LOWANG2
setvar nw_temp3 124
break
case 2
sound LOWANG3
setvar nw_temp3 121
break
case 3
sound LOWANG4
setvar nw_temp3 156
break
endswitch
 
addvar nw_temp3 60
setvar nw_tempb 0
}
else ifvarvare nw_temp nw_temp3
{
sound PHONE_HANGUP
setvarvar nw_tempb nw_temp3
addvar nw_tempb 150
}
else ifvarvare nw_temp nw_tempb
{
setvar nw_temp2 0
setvar nw_temp 0
}
}
}
stopsound PHONE_RING
ifvare temp 1 sound PHONE_PICKUP
else ifvare temp 39
{
setvar tempb 0
randvar tempb 3
switch tempb
case 0 sound LOWANG1 break
case 1 sound LOWANG2 break
case 2 sound LOWANG3 break
case 3 sound LOWANG4 break
endswitch
}
else ifvare temp 195 sound PHONE_HANGUP
else ifvare temp 247
{
setvar temp2 0
setvar temp 0
}
}
}
enda
 
useractor notenemy 3831 0
// cstat 32768
sizeat 12 13
getactor[THISACTOR].sectnum nw_temp
getplayer[THISACTOR].cursectnum nw_temp2
ifvarvare nw_temp nw_temp2
getactor[THISACTOR].sectnum temp
getplayer[THISACTOR].cursectnum temp2
ifvarvare temp temp2
{
setuserdef[THISACTOR].volume_number 1
endofgame 13
1293,10 → 1184,19
define title_zoom 32768
 
onevent EVENT_DISPLAYMENU
// getplayer[THISACTOR].gm nw_temp
// ifvarand nw_temp 4 nullop else
// getplayer[THISACTOR].gm temp
// ifvarand temp 4 nullop else
// {
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 256 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 512 0 0 xdim ydim
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
// }
endevent
 
/*
onevent EVENT_DISPLAYTITLE
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim
endevent
*/
 
 
/nw_plus/NWinter+_Linux_MacOSX.txt
0,0 → 1,21
 
Unfortunately, I do not understand how to make scripts for Linux and Mac OS X. If you want to run NW+:
1. Copy only NWINTER.GRP from your Nuclear Winter CD to your EDuke32 directory. It should be found in the GAMEDATA/ directory.
2. Extract the maps from NWINTER.GRP using kextract. The syntax is "kextract NWINTER.GRP *.MAP". Binaries for x86 Win32 and x86 Linux have been included. This program's source is included with EDuke32. To compile it, first compile EDuke32 following the steps at the wiki (http://wiki.eduke32.com). Then type "make" in the "build/" directory.
3. Rename the maps' E2L prefix to nwl ("mv E2L*.MAP nwl*.map" should do it).
4. Patch the maps using uips. (http://www.neillcorlett.com/uips/) The syntax is "uips a <ips> <map>". Binaries for x86 Win32 and x86 Linux have been included.
5. Put the Duke3D HRP, Update Pack, XXX Pack if so desired, and Music Pack in autoload/duke3d.grp/
6. Run EDuke32 with either Duke or Santa command line options...
 
 
Normal Mode:
 
eduke32 /xNWEDuke.con /hnwinter.def /gNWINTER.GRP /gnwinter_hrp.zip
 
XXX Mode:
 
eduke32 /xNWEDuke.con /hnw_xxx.def /gNWINTER.GRP /gnwinter_hrp.zip
 
 
 
If you can provide me any assistance with the production of scripts for these OSs, please contact me using the methods specified in the readme.
/nw_plus/NWSnow.con
279,52 → 279,52
useractor notenemy SNOW 0
sizeat 4 4
 
addvar nw_temp2 16
ifvarg nw_temp2 2047 subvar nw_temp2 4095
setvarvar nw_temp3 nw_temp2
sin nw_temp3 nw_temp3
shiftvarr nw_temp3 5
addvar temp2 16
ifvarg temp2 2047 subvar temp2 4095
setvarvar temp3 temp2
sin temp3 temp3
shiftvarr temp3 5
 
/*
getactor[THISACTOR].x nw_x
getactor[THISACTOR].y nw_y
getactor[THISACTOR].z nw_z
getactor[THISACTOR].x x
getactor[THISACTOR].y y
getactor[THISACTOR].z z
 
updatesectorz nw_x nw_y nw_z nw_temp
getactor[THISACTOR].zvel nw_z
ifvare sector[nw_temp].lotag 2
updatesectorz x y z temp
getactor[THISACTOR].zvel z
ifvare sector[temp].lotag 2
{
ifvarl nw_z 64
ifvarl z 64
{
setvar nw_tempb GRAVITATIONALCONSTANT
shiftvarr nw_tempb 5
addvarvar nw_tempb temp4
addvarvar nw_z nw_tempb
setvar tempb GRAVITATIONALCONSTANT
shiftvarr tempb 5
addvarvar tempb temp4
addvarvar z tempb
}
}
else
{
ifvarl nw_z 144
ifvarl z 144
{
setvar nw_tempb GRAVITATIONALCONSTANT
shiftvarr nw_tempb 5
addvarvar nw_tempb temp4
addvarvar nw_z nw_tempb
setvar tempb GRAVITATIONALCONSTANT
shiftvarr tempb 5
addvarvar tempb temp4
addvarvar z tempb
}
}
*/
 
movesprite THISACTOR nw_temp3 0 256 CLIPMASK0 RETURN
movesprite THISACTOR temp3 0 256 CLIPMASK0 RETURN
ifvarn RETURN 0 killit
 
 
getactor[THISACTOR].x nw_x
getactor[THISACTOR].y nw_y
getactor[THISACTOR].z nw_z
getactor[THISACTOR].x x
getactor[THISACTOR].y y
getactor[THISACTOR].z z
 
updatesectorz nw_x nw_y nw_z nw_temp
ifvarn nw_temp -1 getflorzofslope nw_temp nw_x nw_y nw_temp2 else killit
updatesectorz x y z temp
ifvarn temp -1 getflorzofslope temp x y temp2 else killit
 
ifvarvare nw_z nw_temp2 killit
ifvarvare z temp2 killit
 
enda
/nw_plus/nw_dp_xxx.def
7,4 → 7,3
 
include nw_dp.def
include nwinter/xxx.def
include nw_hrp/xxx.def
/nw_plus/NWDPCode.con
184,9 → 184,9
{
ifvarl xydist 1280
{
setvar nw_temp CAPTSPINNINGPLAYER
ifvarand monstflags 8 mulvar nw_temp -2 else mulvar nw_temp -1
setactor[target].htextra nw_temp
setvar temp CAPTSPINNINGPLAYER
ifvarand monstflags 8 mulvar temp -2 else mulvar temp -1
setactor[target].htextra temp
setactor[target].htpicnum RPG
setactor[target].htowner THISACTOR
//sound DUKE_GRUNT
272,10 → 272,10
ifvarl RETURN 16384
ifvarg RETURN -1 // hit a sprite
{
getactor[RETURN].picnum nw_picnum
getactorvar[RETURN].monstatus nw_temp
ifvare nw_picnum APLAYER sound SQUISHED else
ifvare nw_temp 1 sound SQUISHED
getactor[RETURN].picnum picnum
getactorvar[RETURN].monstatus temp
ifvare picnum APLAYER sound SQUISHED else
ifvare temp 1 sound SQUISHED
setactor[RETURN].htpicnum RPG
setactor[RETURN].htextra 100
setactor[RETURN].htowner THISACTOR
424,8 → 424,8
ifai AICOMMSHOOT
{
ifvare target -1 ifvarn playerally 0 { ai AICOMMGET break }
setvar nw_temp 0
ifvarn target -1 setvar nw_temp 1
setvar temp 0
ifvarn target -1 setvar temp 1
ifvarand monstflags 2048
ifvare playerally 0
{
434,10 → 434,10
ai AICOMMFRISBEE
break
}
else ifvarg targetlock 0 setvar nw_temp 1
else ifvarg targetlock 0 setvar temp 1
} else
ifvarg canshootplayer 0 setvar nw_temp 1
ifvare nw_temp 1
ifvarg canshootplayer 0 setvar temp 1
ifvare temp 1
{
ifcount 24
ifrnd 16
489,12 → 489,12
 
ifvarg canseeplayer 0
{
setvar nw_temp 0
ifp phigher setvar nw_temp 1
setvar temp 0
ifp phigher setvar temp 1
ifvarn target -1
ifvarvarg z mz setvar nw_temp 1
ifvarvarg z mz setvar temp 1
ifvare nw_temp 1
ifvare temp 1
move COMMGETUPVELS getv geth faceplayer
else
move COMMGETVELS getv geth faceplayer
/nw_plus/NW_Mapster32.bat
0,0 → 1,37
@echo off
:recheck
if not exist mapster32.exe goto mapster32check
:mapster32check_done
start mapster32 /jnw_plus -hnwinter.def -gNWINTER.GRP %*
goto end
 
:mapster32check
if exist mapster32.bat goto mapster32check_done
if exist ..\mapster32.exe (
cd ..
goto recheck
)
if exist ..\..\mapster32.exe (
cd ..\..
goto recheck
)
if exist ..\..\..\mapster32.exe (
cd ..\..\..
goto recheck
)
if exist ..\mapster32.bat (
cd ..
goto mapster32check_done
)
if exist ..\..\mapster32.bat (
cd ..\..
goto mapster32check_done
)
if exist ..\..\..\mapster32.bat (
cd ..\..\..
goto mapster32check_done
)
echo Warning: You don't have Mapster32 in your directory.
goto mapster32check_done
 
:end
/nw_plus/_nwzoo.mhk
0,0 → 1,10
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: _nwzoo.map - "Nuclear Winter Zoo"
 
 
/nw_plus/nwuninst.bat
1,5 → 1,3
@echo off
 
echo You are about to delete all files relevant to NW+.
echo Continue?
echo.
/nw_plus/nwl1.mhk
0,0 → 1,76
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl1.map - "Déjà Vu"
 
// Pipebomb Box
sprite 336 roll 240
 
// LIGHTS (by Devastator)
 
light 1 750 29970 127 2600 111 111 111 0 0 1536 -1 0 0 0 -1
light 5 566 32938 -23626 1700 61 61 61 0 0 1536 -1 0 0 0 -1
light 13 1262 2234 1792 1700 61 61 61 0 0 1536 -1 0 0 0 -1
light 39 -3182 8993 -4480 2400 85 85 85 0 0 1536 -1 0 0 0 -1
light 42 -1701 13103 -4736 4200 91 81 51 0 0 1536 -1 0 0 0 -1
light 43 -2984 4245 -5760 2700 51 51 41 0 0 1536 -1 0 0 0 -1
light 45 -5269 3398 -10752 1300 101 10 1 0 0 1536 -1 0 0 0 -1
light 53 6113 11494 1280 1400 51 51 51 0 0 1536 -1 0 0 0 -1
light 58 -4789 910 -640 1700 185 21 1 0 0 1536 -1 0 0 0 -1
light 64 -1653 1096 256 2300 205 121 121 0 0 1536 -1 0 0 0 -1
light 70 -16708 36851 -83712 2300 140 140 140 0 0 1536 -1 0 0 0 -1
light 94 -24704 30264 -87168 1600 255 255 240 0 0 1536 -1 0 0 0 -1
light 99 -4442 34049 -23040 2600 157 125 88 0 0 1536 -1 0 0 0 -1
light 100 -2432 37120 -15104 1300 255 255 255 0 0 1536 -1 0 0 0 -1
light 103 -5545 36653 -19584 1500 187 158 160 0 0 1536 -1 0 0 0 -1
light 105 -10724 30785 -48128 2000 181 181 161 0 0 1536 -1 0 0 0 -1
light 106 -10676 35392 -32768 1400 211 41 61 0 0 1536 -1 0 0 0 -1
light 110 -20484 25118 -56448 1400 180 210 210 0 0 1536 -1 0 0 0 -1
light 112 967 4553 384 1600 111 111 111 0 0 1536 -1 0 0 0 -1
light 116 -22230 36607 -73984 3000 81 71 1 0 0 1536 -1 0 0 0 -1
light 129 13535 40259 41728 1700 45 58 11 0 0 1536 -1 0 0 0 -1
light 129 16277 40174 43136 1400 75 76 1 0 0 1536 -1 0 0 0 -1
light 134 5672 37297 41712 1600 105 96 21 0 0 1536 -1 0 0 0 -1
light 155 -20469 33599 -77184 1600 221 201 201 0 0 1536 -1 0 0 0 -1
light 155 -19871 29604 -64640 2400 181 71 61 0 0 1536 -1 0 0 0 -1
light 155 -17821 30780 -76288 2400 255 195 91 0 0 1536 -1 0 0 0 -1
light 163 -3269 7094 -7040 2400 85 85 85 0 0 1536 -1 0 0 0 -1
light 173 7589 10336 4096 1200 111 111 111 0 0 1536 -1 0 0 0 -1
light 174 -11840 20032 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 174 -576 20032 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 174 2560 23616 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 179 -8903 35410 -15872 1600 201 41 1 0 0 1536 -1 0 0 0 -1
light 183 -15703 27485 -38400 1300 71 191 221 0 0 1536 -1 0 0 0 -1
light 183 -14400 32384 -54528 3500 1 31 121 0 0 1536 -1 0 0 0 -1
light 183 -13973 28432 -54400 3500 1 1 225 0 0 1536 -1 0 0 0 -1
light 183 -13713 33628 -46080 2000 1 95 165 0 0 1536 -1 0 0 0 -1
light 183 -12884 27780 -46592 1900 1 135 135 0 0 1536 -1 0 0 0 -1
light 184 -17280 33664 -55168 3500 255 31 1 0 0 1536 -1 0 0 0 -1
light 185 -17064 28199 -53760 3500 255 51 1 0 0 1536 -1 0 0 0 -1
light 186 -25344 29114 -86656 2500 91 71 55 0 0 1536 -1 0 0 0 -1
light 188 -21865 29730 -78336 2200 40 40 40 0 0 1536 -1 0 0 0 -1
light 188 -21225 30802 -81536 1300 211 71 121 0 0 1536 -1 0 0 0 -1
light 191 -26059 27030 -75136 1100 255 255 255 0 0 1536 -1 0 0 0 -1
light 191 -24401 27016 -83072 1900 171 161 141 0 0 1536 -1 0 0 0 -1
light 205 -11776 7680 2048 1700 255 31 1 0 0 1536 -1 0 0 0 -1
light 215 3199 40315 10450 2400 131 131 121 0 0 1536 -1 0 0 0 -1
light 221 2445 12334 -40832 2000 117 107 97 0 0 1536 -1 0 0 0 -1
light 221 5462 13116 -47104 2600 47 37 27 0 0 1536 -1 0 0 0 -1
light 233 3580 33824 -9105 1900 255 255 255 0 0 1536 -1 0 0 0 -1
light 239 -7374 10248 -31744 4200 161 151 131 0 0 1536 -1 0 0 0 -1
light 239 -5354 16804 -171392 8000 131 121 91 0 0 1536 -1 0 0 0 -1
light 239 81 17085 -37504 7000 161 151 131 0 0 1536 -1 0 0 0 -1
light 239 3483 30313 -3200 2200 155 11 1 0 0 1536 -1 0 0 0 -1
light 239 3615 30125 -43136 1500 255 51 1 0 0 1536 -1 0 0 0 -1
light 239 4416 32512 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 239 4864 22016 9216 2600 47 37 27 0 0 1536 -1 0 0 0 -1
light 239 8704 30464 -171392 8000 131 121 91 0 0 1536 -1 0 0 0 -1
light 239 11267 28860 -21760 4000 141 131 121 0 0 1536 -1 0 0 0 -1
light 246 -8527 29608 -31616 3600 157 125 88 0 0 1536 -1 0 0 0 -1
light 246 -4008 31035 -29568 3600 157 125 88 0 0 1536 -1 0 0 0 -1
light 248 9984 40192 42624 1700 45 58 11 0 0 1536 -1 0 0 0 -1
light 262 -5020 29232 -30208 2900 191 191 191 0 0 1536 -1 0 0 0 -1
/nw_plus/utils/linux/i586
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/linux/x86_64
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/linux
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/mac
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/source/buildtools/compile.sh
File deleted
/nw_plus/utils/source/buildtools/get.sh
File deleted
/nw_plus/utils/source/bsdiff-4.3/Makefile
File deleted
/nw_plus/utils/source/bsdiff-4.3/bsdiff.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib.h
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.dsw
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/Binary diff.txt
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.1
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/crctable.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.cpp
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/huffman.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.dsp
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/compress.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/randtable.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.cpp
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.dsp
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/LICENSE
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib_private.h
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.1
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/blocksort.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/win32/decompress.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/bspatch.1
File deleted
/nw_plus/utils/source/bsdiff-4.3/bspatch.c
File deleted
/nw_plus/utils/source/bsdiff-4.3/bsdiff.1
File deleted
/nw_plus/utils/source/sums611/README
File deleted
/nw_plus/utils/source/sums611/links.txt
File deleted
/nw_plus/utils/source/sums611/COPYING
File deleted
/nw_plus/utils/source/sums611
Property changes:
Deleted: bugtraq:number
-true
\ No newline at end of property
/nw_plus/utils/source/wget/links.txt
File deleted
/nw_plus/utils/source/wget
Property changes:
Deleted: bugtraq:number
-true
\ No newline at end of property
/nw_plus/utils/source/uips
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/source/kextract/compile.sh
0,0 → 1,11
#!/bin/bash
echo "Before compiling the utilities, you must follow the directions to compile EDuke32."
echo "http://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux"
echo "After that is all done, you must make EDuke32, then change to the build directory and make that too."
echo "This script will do that here."
cd polymer/eduke32/
make
cd build/
make
cd util/
ls
/nw_plus/utils/source/kextract/get.sh
0,0 → 1,4
#!/bin/bash
echo "The source for kextract is part of EDuke32."
echo "This script will check out EDuke32 from its SVN."
svn co https://eduke32.svn.sourceforge.net/svnroot/eduke32
/nw_plus/utils/source
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/windows/win32/md5sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/sha512sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/sha224sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/kextract.debug.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/wget.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/bspatch.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/sha256sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/sha384sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/kgroup.debug.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/bsdiff.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/sha1sum.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/nw_plus/utils/windows/win32/kextract.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/nw_plus/utils/windows/win32/kgroup.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/nw_plus/utils/windows/win32
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils/windows
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/utils
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/NW_XXX.bat
1,3 → 1,3
@echo off
set xxx=1
call "%~dp0\NWinter.bat" %*
echo Using XXX mode.
NWinter.bat /hnw_xxx.def %*
/nw_plus/nwl2.mhk
0,0 → 1,65
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl2.map - "Where It All Began"
 
// "Steering Wheel"
sprite 650 notmd
 
// LIGHTS (by Devastator)
 
// sect x y z range r g b rad fade ang horiz mins maxs prio tile
light 55 18432 49408 -36608 2500 255 255 255 0 0 0 0 0 0 0 0
light 66 22144 39936 -9216 2500 200 200 200 0 0 0 0 10 0 0 0
light 67 26048 39680 -6912 1000 100 100 100 0 0 0 0 18 0 0 0
light 67 26048 40192 -6912 3500 255 255 255 450 200 1024 -600 18 0 0 0
light 67 26048 40704 -6912 1000 100 100 100 0 0 0 0 18 0 0 0
light 72 22016 45300 -6144 4000 255 255 255 400 300 512 100 13 0 0 9000
light 72 22016 45545 -11144 500 255 255 255 0 0 0 0 13 0 0 0
light 72 22016 45545 -1144 500 255 255 255 0 0 0 0 13 0 0 0
light 89 15936 57600 -63232 1000 100 100 100 0 0 0 0 0 0 0 0
light 89 16192 57600 -63232 3000 200 200 200 450 200 1536 -500 0 0 0 0
light 89 16448 57600 -63232 1000 100 100 100 0 0 0 0 0 0 0 0
light 90 22016 48832 -94976 2500 160 160 150 0 0 0 0 16 0 0 0
light 90 22016 48832 -94976 8000 255 255 250 300 200 1536 -600 16 0 0 0
light 105 21792 53664 -103168 9000 255 255 250 300 200 512 -500 15 6 0 0
light 115 18084 57216 -13056 1600 200 200 200 0 0 0 0 22 0 0 0
light 118 16384 57952 -13056 2048 200 200 200 300 200 512 -500 22 0 0 0
light 133 22016 43520 -47104 6500 255 255 255 400 250 1540 -450 15 -21 0 0
light 133 22016 43520 -43000 3000 220 220 220 0 0 0 0 15 -21 0 0
light 136 19200 61184 -69000 4000 255 0 0 0 0 0 0 0 0 0 0
light 139 27910 42254 -22000 7000 255 255 255 375 200 12 -150 15 -8 0 0
light 139 27910 42818 -22000 1280 255 255 255 0 0 0 0 15 -8 0 0
light 139 27910 41876 -22000 1280 255 255 255 0 0 0 0 15 -8 0 0
light 142 25504 39168 -2048 1000 0 100 20 0 0 0 0 0 0 0 0
light 149 19456 60128 -18432 1000 0 100 20 0 0 0 0 0 0 0 0
light 151 16384 58880 -9216 500 200 50 0 0 0 0 0 0 0 0 0
light 158 16640 53120 -52224 3000 255 255 255 200 150 512 -100 0 0 0 0
light 159 16640 52864 -52224 3000 255 255 255 200 150 1536 -100 0 0 0 0
light 165 15296 60920 -58112 500 200 50 0 0 0 0 0 0 0 0 0
light 167 25344 59640 -30720 2000 255 255 255 0 0 0 0 0 0 0 0
light 180 13000 48128 -85632 3000 255 0 0 0 0 0 0 0 0 0 0
light 180 13000 48128 -55632 3000 255 0 0 0 0 0 0 0 0 0 0
light 185 7034 50364 -58568 4000 110 150 130 150 150 1024 77 0 0 0 9001
light 186 7034 52414 -58568 4000 110 150 130 150 150 1024 77 0 0 0 9001
light 189 4338 47184 -58568 4000 110 150 130 155 150 640 77 0 0 0 9001
light 190 2368 46464 -58568 4000 110 150 130 155 150 640 77 0 0 0 9001
light 192 960 47744 -54272 1000 0 100 20 0 0 0 0 0 0 0 0
light 204 14080 46080 -5120 2500 255 255 255 0 0 0 0 11 7 0 0
light 211 26160 46400 -53248 1000 0 100 20 0 0 0 0 0 0 0 0
light 220 17472 50608 -35840 1024 200 0 0 0 0 0 0 0 0 0 0
light 242 17792 43008 -45824 1000 250 250 250 0 0 0 0 0 0 0 0
light 255 300 42313 -460800 45000 200 250 220 120 50 100 -300 0 0 0 0
light 260 18400 48128 -2048 1000 0 100 20 0 0 0 0 0 0 0 0
light 290 -1550 40448 -101376 2000 200 200 200 0 0 0 0 0 0 0 0
light 290 -1550 40448 -102376 5000 255 255 255 350 150 0 -500 0 0 0 0
light 297 19136 48704 -38912 2000 100 100 100 0 0 0 0 0 0 0 0
light 297 19136 48704 -11264 1024 200 0 0 0 0 0 0 0 0 0 0
light 297 19136 48704 -38912 5000 255 255 255 500 300 1775 100 0 0 0 0
light 302 18752 57216 -18432 500 200 50 0 0 0 0 0 0 0 0 0
light 307 -32256 1280 -297996 30000 25 50 25 0 0 0 0 0 0 0 0
light 307 -23146 19439 -297996 30000 200 250 220 150 140 1390 0 0 0 0 0
/nw_plus/nwl3.mhk
0,0 → 1,10
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl3.map - "Land of Forgotten Toys"
 
 
/nw_plus/nwl4.mhk
0,0 → 1,10
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl4.map - "Santa's Corporate HQ"
 
 
/nw_plus/nwl5.mhk
0,0 → 1,13
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl5.map - "The Backdoor"
 
// Drain
sprite 48 notmd
 
 
/nw_plus/nwl1demo.mhk
0,0 → 1,76
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl1demo.map - "Déjà Vu Demo"
 
// Pipebomb Box
sprite 336 roll 240
 
// LIGHTS (by Devastator)
 
light 1 750 29970 127 2600 111 111 111 0 0 1536 -1 0 0 0 -1
light 5 566 32938 -23626 1700 61 61 61 0 0 1536 -1 0 0 0 -1
light 13 1262 2234 1792 1700 61 61 61 0 0 1536 -1 0 0 0 -1
light 39 -3182 8993 -4480 2400 85 85 85 0 0 1536 -1 0 0 0 -1
light 42 -1701 13103 -4736 4200 91 81 51 0 0 1536 -1 0 0 0 -1
light 43 -2984 4245 -5760 2700 51 51 41 0 0 1536 -1 0 0 0 -1
light 45 -5269 3398 -10752 1300 101 10 1 0 0 1536 -1 0 0 0 -1
light 53 6113 11494 1280 1400 51 51 51 0 0 1536 -1 0 0 0 -1
light 58 -4789 910 -640 1700 185 21 1 0 0 1536 -1 0 0 0 -1
light 64 -1653 1096 256 2300 205 121 121 0 0 1536 -1 0 0 0 -1
light 70 -16708 36851 -83712 2300 140 140 140 0 0 1536 -1 0 0 0 -1
light 94 -24704 30264 -87168 1600 255 255 240 0 0 1536 -1 0 0 0 -1
light 99 -4442 34049 -23040 2600 157 125 88 0 0 1536 -1 0 0 0 -1
light 100 -2432 37120 -15104 1300 255 255 255 0 0 1536 -1 0 0 0 -1
light 103 -5545 36653 -19584 1500 187 158 160 0 0 1536 -1 0 0 0 -1
light 105 -10724 30785 -48128 2000 181 181 161 0 0 1536 -1 0 0 0 -1
light 106 -10676 35392 -32768 1400 211 41 61 0 0 1536 -1 0 0 0 -1
light 110 -20484 25118 -56448 1400 180 210 210 0 0 1536 -1 0 0 0 -1
light 112 967 4553 384 1600 111 111 111 0 0 1536 -1 0 0 0 -1
light 116 -22230 36607 -73984 3000 81 71 1 0 0 1536 -1 0 0 0 -1
light 129 13535 40259 41728 1700 45 58 11 0 0 1536 -1 0 0 0 -1
light 129 16277 40174 43136 1400 75 76 1 0 0 1536 -1 0 0 0 -1
light 134 5672 37297 41712 1600 105 96 21 0 0 1536 -1 0 0 0 -1
light 155 -20469 33599 -77184 1600 221 201 201 0 0 1536 -1 0 0 0 -1
light 155 -19871 29604 -64640 2400 181 71 61 0 0 1536 -1 0 0 0 -1
light 155 -17821 30780 -76288 2400 255 195 91 0 0 1536 -1 0 0 0 -1
light 163 -3269 7094 -7040 2400 85 85 85 0 0 1536 -1 0 0 0 -1
light 173 7589 10336 4096 1200 111 111 111 0 0 1536 -1 0 0 0 -1
light 174 -11840 20032 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 174 -576 20032 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 174 2560 23616 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 179 -8903 35410 -15872 1600 201 41 1 0 0 1536 -1 0 0 0 -1
light 183 -15703 27485 -38400 1300 71 191 221 0 0 1536 -1 0 0 0 -1
light 183 -14400 32384 -54528 3500 1 31 121 0 0 1536 -1 0 0 0 -1
light 183 -13973 28432 -54400 3500 1 1 225 0 0 1536 -1 0 0 0 -1
light 183 -13713 33628 -46080 2000 1 95 165 0 0 1536 -1 0 0 0 -1
light 183 -12884 27780 -46592 1900 1 135 135 0 0 1536 -1 0 0 0 -1
light 184 -17280 33664 -55168 3500 255 31 1 0 0 1536 -1 0 0 0 -1
light 185 -17064 28199 -53760 3500 255 51 1 0 0 1536 -1 0 0 0 -1
light 186 -25344 29114 -86656 2500 91 71 55 0 0 1536 -1 0 0 0 -1
light 188 -21865 29730 -78336 2200 40 40 40 0 0 1536 -1 0 0 0 -1
light 188 -21225 30802 -81536 1300 211 71 121 0 0 1536 -1 0 0 0 -1
light 191 -26059 27030 -75136 1100 255 255 255 0 0 1536 -1 0 0 0 -1
light 191 -24401 27016 -83072 1900 171 161 141 0 0 1536 -1 0 0 0 -1
light 205 -11776 7680 2048 1700 255 31 1 0 0 1536 -1 0 0 0 -1
light 215 3199 40315 10450 2400 131 131 121 0 0 1536 -1 0 0 0 -1
light 221 2445 12334 -40832 2000 117 107 97 0 0 1536 -1 0 0 0 -1
light 221 5462 13116 -47104 2600 47 37 27 0 0 1536 -1 0 0 0 -1
light 233 3580 33824 -9105 1900 255 255 255 0 0 1536 -1 0 0 0 -1
light 239 -7374 10248 -31744 4200 161 151 131 0 0 1536 -1 0 0 0 -1
light 239 -5354 16804 -171392 8000 131 121 91 0 0 1536 -1 0 0 0 -1
light 239 81 17085 -37504 7000 161 151 131 0 0 1536 -1 0 0 0 -1
light 239 3483 30313 -3200 2200 155 11 1 0 0 1536 -1 0 0 0 -1
light 239 3615 30125 -43136 1500 255 51 1 0 0 1536 -1 0 0 0 -1
light 239 4416 32512 -454400 1900 255 41 1 0 0 1536 -1 0 0 0 -1
light 239 4864 22016 9216 2600 47 37 27 0 0 1536 -1 0 0 0 -1
light 239 8704 30464 -171392 8000 131 121 91 0 0 1536 -1 0 0 0 -1
light 239 11267 28860 -21760 4000 141 131 121 0 0 1536 -1 0 0 0 -1
light 246 -8527 29608 -31616 3600 157 125 88 0 0 1536 -1 0 0 0 -1
light 246 -4008 31035 -29568 3600 157 125 88 0 0 1536 -1 0 0 0 -1
light 248 9984 40192 42624 1700 45 58 11 0 0 1536 -1 0 0 0 -1
light 262 -5020 29232 -30208 2900 191 191 191 0 0 1536 -1 0 0 0 -1
/nw_plus/nw_dp.def
6,7 → 6,5
*/
 
include dukeplus.def
include nw_plus.def
include nwinter_hrp.def
include nwinter/dp.def
include nw_hrp/dp.def
/nw_plus/nwl6.mhk
0,0 → 1,11
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl6.map - "Christmas Village"
 
// Drain
sprite 143 notmd
/nw_plus/NWDefs.con
21,7 → 21,6
define DRUNKELF 3592
define HALFBITCH 3627
define SLUTASS 3637
define CHANDELIER 3778
define CHOOCHOOSLUT 3779
define HORSEPOWER 3783
 
69,15 → 68,6
 
define SNOW 3835
 
// skin definitions
define duke 0
define Duke 0
define dUKE 0
define DUKE 0
define santa 1
define Santa 1
define sANTA 1
define SANTA 1
 
 
define DAMNUGLY 398
/nw_plus/nwl7.mhk
0,0 → 1,10
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl7.map - "Here Comes Santa Claws"
 
 
/nw_plus/nwl8.mhk
0,0 → 1,10
/*
--------------------------------------------------------------------------------
Duke: Nuclear Winter Plus
By Hendricks266
--------------------------------------------------------------------------------
*/
 
// Level: nwl8.map - "Santamatch"
 
 
/nw_plus/linux_macosx/nwinter.sh
1,6 → 1,6
#!/bin/bash
if [ -e eduke32 ]; then
./eduke32 -xNWEDuke.con -hnwinter.def -jnw_plus -gNWINTER.GRP
./eduke32 /xNWEDuke.con /hnwinter.def /jnw_plus /gNWINTER.GRP
else
echo "Place this script and the nw_plus folder in your EDuke32 directory."
fi
/nw_plus/linux_macosx/nw_dp.sh
1,6 → 1,6
#!/bin/bash
if [ -e eduke32 ]; then
./eduke32 -xNWDP.con -hnw_dp.def -jnw_plus -gNWINTER.GRP -jDukePlus
./eduke32 -xNWDP.con -hnw_dp.def /jnw_plus /gNWINTER.GRP -jDukePlus
else
echo "Place this script and the nw_plus folder in your EDuke32 directory."
fi
/nw_plus/linux_macosx/nw_install.sh
5,7 → 5,7
mv ../NWINTER.GRP ./
fi
if [ -e NWINTER.GRP ]; then
./kextract NWINTER.GRP E2L*.MAP
./kextract.linux NWINTER.GRP E2L*.MAP
mv E2L1.MAP nwl1.map
mv E2L2.MAP nwl2.map
mv E2L3.MAP nwl3.map
14,14 → 14,14
mv E2L6.MAP nwl6.map
mv E2L7.MAP nwl7.map
mv E2L8.MAP nwl8.map
./bspatch nwl1.map nwl1.map nwl1.patch
./bspatch nwl2.map nwl2.map nwl2.patch
./bspatch nwl3.map nwl3.map nwl3.patch
./bspatch nwl4.map nwl4.map nwl4.patch
./bspatch nwl5.map nwl5.map nwl5.patch
./bspatch nwl6.map nwl6.map nwl6.patch
./bspatch nwl7.map nwl7.map nwl7.patch
./bspatch nwl8.map nwl8.map nwl8.patch
./uips.linux a nwl1.ips nwl1.map
./uips.linux a nwl2.ips nwl2.map
./uips.linux a nwl3.ips nwl3.map
./uips.linux a nwl4.ips nwl4.map
./uips.linux a nwl5.ips nwl5.map
./uips.linux a nwl6.ips nwl6.map
./uips.linux a nwl7.ips nwl7.map
./uips.linux a nwl8.ips nwl8.map
echo "Patching complete!"
else
echo "NWINTER.GRP does not exist."
/nw_plus/linux_macosx/kextract.linux
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/linux_macosx/nw_xxx.sh
1,6 → 1,6
#!/bin/bash
if [ -e eduke32 ]; then
./eduke32 -xNWEDuke.con -hnw_xxx.def -jnw_plus -gNWINTER.GRP
./eduke32 /xNWEDuke.con /hnw_xxx.def /jnw_plus /gNWINTER.GRP
else
echo "Place this script and the nw_plus folder in your EDuke32 directory."
fi
/nw_plus/linux_macosx/nw_dp_xxx.sh
1,6 → 1,6
#!/bin/bash
if [ -e eduke32 ]; then
./eduke32 -xNWDPXXX.con -hnw_dp_xxx.def -jnw_plus -gNWINTER.GRP -jDukePlus
./eduke32 -xNWDPXXX.con -hnw_dp_xxx.def /jnw_plus /gNWINTER.GRP -jDukePlus
else
echo "Place this script and the nw_plus folder in your EDuke32 directory."
fi
/nw_plus/linux_macosx/NWinter+_Linux_MacOSX.txt
1,6 → 1,6
I am not proficient with bash scripts, but I have included my attempt at providing the same level of support to Mac OS X and Linux as I do with my native OS, Windows.
 
You will have to compile your own binaries using the instructions below and replace the string ".linux" in the installation script with nothing or any existing Mac prefix. I'm truly sorry about this.
Note that on Mac OS X, you will have to compile your own binaries using the instructions below and replace the string ".linux" in the installation script with nothing or any existing Mac prefix. I'm truly sorry about this.
 
First, copy NWINTER.GRP to this directory and run nw_install.sh.
 
12,11 → 12,11
 
 
If you want to attempt manual installation, or need help along the way:
1. Copy only NWINTER.GRP from your Nuclear Winter CD to your EDuke32 directory. It should be found in the GAMEDATA/ directory.
2. Extract the maps from NWINTER.GRP using kextract. The syntax is "kextract NWINTER.GRP E2L*.MAP". This program's source is included with EDuke32. To compile it, first compile EDuke32 following the steps at the wiki (http://wiki.eduke32.com). Then type "make" in the "build/" directory.
1. Copy only NWINTER.GRP from your Nuclear Winter CD to your EDuke32 directory. It should be found in the GAMEDATA/ directory.
2. Extract the maps from NWINTER.GRP using kextract. The syntax is "kextract NWINTER.GRP E2L*.MAP". Binaries for x86 Win32 and x86 Linux have been included. This program's source is included with EDuke32. To compile it, first compile EDuke32 following the steps at the wiki (http://wiki.eduke32.com). Then type "make" in the "build/" directory.
3. Rename the maps' E2L prefix to nwl ("mv E2L*.MAP nwl*.map" might do it).
4. Patch the maps using bspatch. (http://www.daemonology.net/bsdiff/) The syntax is "bspatch <source> <destination> <patch>".
5. Put the Duke3D HRP, Update Pack, XXX Pack if so desired, and Music Pack in ~/.eduke32/autoload/
4. Patch the maps using uips. (http://www.neillcorlett.com/uips/) The syntax is "uips a <ips> <map>". Binaries for x86 Win32 and x86 Linux have been included.
5. Put the Duke3D HRP, Update Pack, XXX Pack if so desired, and Music Pack in autoload/duke3d.grp/
6. Run EDuke32 with the command line options.
 
 
/nw_plus/linux_macosx/uips.linux
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/linux_macosx
Property changes:
Deleted: svn:ignore
-Thumbs.db
/nw_plus/nwl1.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/NW_DP.bat
1,3 → 1,3
@echo off
set dp=1
call "%~dp0\NWinter.bat" %*
echo Using Duke Plus by DeeperThought.
NWinter.bat -xNWDP.con -hnw_dp.def %* -jDukePlus
/nw_plus/nwl2.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/nwl3.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/NWINTRO.TXT
14,13 → 14,3
 
A telegram alerts Duke Nukem to the horrible plan. Without any hesitation,
Duke springs into action.
 
THE LEVELS
 
Deja Vu - A familiar winterized version of the original, only backwards!
Where It All Began - Los Angeles with snow? What are the aliens up to?
Land of Forgotten Toys - Welcome to the frozen tundra, Duke.
Santa's Corporate HQ - Check Santa's list to see if you've been naughty or nice.
The Backdoor - There's always a way in, but sometimes you have to get a little bit wet.
Christmas Village - The villagers here don't appear to be very friendly.
Here Comes Santa Claus - And he's packing some holiday punch.
Property changes:
Deleted: svn:mime-type
-text/plain
\ No newline at end of property
/nw_plus/nwl4.ips
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/nw_plus/.
Property changes:
Deleted: svn:ignore
-Thumbs.db