diff --git a/polymer/eduke32/ChangeLog b/polymer/eduke32/ChangeLog index 8c46d1bd5..84f4a8a12 100644 --- a/polymer/eduke32/ChangeLog +++ b/polymer/eduke32/ChangeLog @@ -1,7 +1,90 @@ =EDuke32 ChangeLog= - -==1.3.1-1== - - Game: fixed issue with multiplayer switches + +==1.4.0 beta 1= + - Core: added support for defining dummy tiles in the def files to eliminate the need for placeholders for hightile art + - Core: added a temporary projection hack to reduce HOM at the top and bottom of the screen + - Core: fixed P2P multiplayer with more than two players + - Core: fixed a nasty memory corruption issue with screen tinting that resulted in crashes in the classic renderer + - Core: fixed a palette issue with the in-game textured 2D map in Polymost + - Core: fixed a mouse input bug in winlayer that resulted in loss of input precision + - Core: modified the def loader to perform two passes; one to load GRPs early in game startup, and one to do the rest later on + - Core: tweaks to caching system to leave more memory available for hightile art + - Core: proper alpha sorting on md3 models + - Core: removed usegoodalpha in favor of an alternate sprite sorting algorithm (note: rendering glitches may occur) + - Core: attempt to correct display perspective in order to properly display HUD models + - Core: netcode packet rate now 26 (was 40) + - Core: don't use 100% CPU when waiting for players to join a multiplayer game + - Core: reduce mouse wheel input lock time to 25ms (was 100ms) + + - Game: completely reworked mouse sensitivity and added an input filter slider + - Game: changed the weapon switching to be less restrictive in order to assist weapon changes via mouse wheel + - Game: added support for alt+enter to switch between fullscreen and windowed mode + - Game: added an option to disable demo playback cameras + - Game: added support for scaling the crosshair to 1/2 or 1/4 normal size + - Game: added an option to enable autoaim only for hitscan weapons (bullets) + - Game: changed the default video mode to 1024x768x32 and added several fallback choices + - Game: reworked the quicksave and quickload functions such as to not prompt the player on use + - Game: set the default controls to WSAD + mouse aiming + - Game: restore the pause key behavior from Duke 1.5 wherein the "GAME PAUSED" message isn't displayed when shift is pressed while pausing + - Game: fixed an infinite loop and a palette corruption bug regarding the video setup menu and switching to the classic renderer + - Game: fixed an issue where the automap would scroll itself and/or jitter when the game was paused while moving + - Game: fixed pistol timing to more closely match Duke 1.5 + - Game: fixed long-standing quick kick animation bug + - Game: fixed kick attack speed to more closely match Duke 1.5 + - Game: fixed an issue with shift+F5 not allowing selection of music defined for episode 5 and up + - Game: changed the default menu background to something more pleasing + - Game: restructured the option menus to make more sense + - Game: expanded the "HUD weapon" menu option to allow displaying a weapon's pickup sprite instead of the HUD art + + - Multiplayer: Duke Talk menu option can now be set to "all" to hear enemy pain sounds + - Multiplayer: added an option to disable nuke button exits in deathmatch + - Multiplayer: greatly improved the text chat by increasing the text buffer size and by implementing basic line wrapping + - Multiplayer: added a voting system for map changes along with a menu option to automatically vote yes or no + - Multiplayer: added an icon above the heads of other players for when they're chatting or using the menu + - Multiplayer: added an option to automatically send messages to all players rather than prompting + - Multiplayer: added an option to display the name of the opponent you're currently aiming at + - Multiplayer: added a player setup menu to configure player name, color, macros, and weapon/aiming options mid-game + - Multiplayer: added support for Rancidmeat network configuration files via -rmnet command line parameter + - Multiplayer: detect and correct internal vs external IP address issues when using Rancidmeat configuration files + - Multiplayer: added dummy duke3d_w32.exe to facilitate EDuke32 multiplayer via DukesterX 1.5 + - Multiplayer: added support for in-game selection and loading of different user maps + - Multiplayer: added support for various player death messages which can be redefined in the CONs + - Multiplayer: added support for Quake-style color codes in player names and text chat (code format is ^) + - Multiplayer: limit player name to 10 characters (not counting color codes) + - Multiplayer: fixed issue where multiple players trying to step on the same shrunken enemy would kill the game + - Multiplayer: fixed issue where briefly tapping the jump key would produce a lag effect during the resulting jump + - Multiplayer: fixed issue where using the jetpack + steroids would produce a lag effect in P2P mode + - Multiplayer: fixed several out-of-sync issues + - Multiplayer: fixed a long-standing bug wherein a player death could be counted as both a death and a suicide + - Multiplayer: fixed screen resizing issue when typing - and = in chat + + - CON: added "save" command to allow the creation of automatic checkpoints + - CON: added "cansee" and "canseespr" commands to easily determine whether two sprites or sets of coordinates have visibility + - CON: added "definegamefuncname" command to change the key names used in the configuration file and in the control setup menus + - CON: added additional safety checks to get/setuserdef/player/sector/sprite/wall/input + - CON: added support for Quake-style color codes in quotes (code format is ^) + - CON: added extra timing checks to the weapon system; note that weapons with strange TOTALTIME and FIREDELAY values may no longer fire + - CON: save quotes, dynamic-to-static tile remapping information, extended sprite flags and sprite caching info to savegames + - CON: reworked the quote system to use dynamically allocated memory and doubled the length of each individual quote + - CON: fixed a savegame issue where some gamevar values may not have been restored properly and added more sanity checks to savegame loading + - CON: fixed an issue with FRAMEEFFECT1 sprites ending up with the wrong tspr->picnum + - CON: fixed a potential issue where custom projectiles that hit a player wouldn't knock the player back + - CON: fixed a bug in the findnearactor3d command and further sped up findnearactor3d and findnearsprite3d + - CON: fixed an issue where tab characters in CON files could screw up label names + - CON: fixed a crash that occurred when hitscan type custom projectiles with trails were fired at a wall from a distance of 0 + - CON: removed the RENDERSIZE attribute for weapons + - CON: made slight optimizations to various commands + + - Console: added the following cvars: "crosshair", "cl_autoaim", "cl_automsg", "cl_autovote", "cl_democams", "cl_drawweapon", "cl_idplayers", + "cl_messagetime", "cl_mousefilter", "cl_showcoords", "cl_showfps", "cl_smoothinput", "cl_statusbarmode", "cl_statusbarscale", + "cl_weaponswitch" and "r_precache" + - Console: added "addpath" command to add a new directory to the game's virtual filesystem pool + + - Mapster32: better smoothing of mouse input when using 3D mode mouselook + - Mapster32: add ' F key combo to replace nonexistent tiles with tile 0 + +==1.3.1-1== + - Game: fixed issue with multiplayer switches ==1.3.1== - Core: sync with JFBuild SVN diff --git a/polymer/eduke32/installer/eduke32.nsi b/polymer/eduke32/installer/eduke32.nsi new file mode 100755 index 000000000..00837eeb2 --- /dev/null +++ b/polymer/eduke32/installer/eduke32.nsi @@ -0,0 +1,174 @@ +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "EDuke32" +!define PRODUCT_VERSION "1.4.0 beta 1" +!define PRODUCT_PUBLISHER "EDuke32 Team" +!define PRODUCT_WEB_SITE "http://www.eduke32.com" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" +!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" + +SetCompressor /SOLID lzma + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\box-install.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\box-uninstall.ico" +!define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp" +!define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp" + +; Welcome page +!define MUI_WELCOMEPAGE_TEXT "$(MUI_WELCOMEPAGE_TEXT)" +LangString MUI_WELCOMEPAGE_TEXT {LANG_ENGLSH} "This wizard will guide you through the installation of ${PRODUCT_NAME} ${PRODUCT_VERSION}\n\nClick next to continue." +!insertmacro MUI_PAGE_WELCOME + +; License page +!insertmacro MUI_PAGE_LICENSE "..\GNU.TXT" +; Components page +!insertmacro MUI_PAGE_COMPONENTS +; Directory page +!define MUI_DIRECTORYPAGE_TEXT_TOP "$(MUI_DIRECTORYPAGE_TEXT_TOP)" +LangString MUI_DIRECTORYPAGE_TEXT_TOP {LANG_ENGLSH} "Please select your Duke Nukem 3D directory." +!insertmacro MUI_PAGE_DIRECTORY +; Start menu page +var ICONS_GROUP +!define MUI_STARTMENUPAGE_NODISABLE +!define MUI_STARTMENUPAGE_DEFAULTFOLDER "EDuke32" +!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" +!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" +!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +; !define MUI_FINISHPAGE_RUN "$INSTDIR\datainst.exe" +; !define MUI_FINISHPAGE_RUN_TEXT "Run GRP file installer" +; !define MUI_FINISHPAGE_RUN_PARAMETERS "" +!define MUI_FINISHPAGE_RUN "notepad.exe" +!define MUI_FINISHPAGE_RUN_TEXT "Show ChangeLog" +!define MUI_FINISHPAGE_RUN_PARAMETERS "$INSTDIR\ChangeLog" + +; !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\ChangeLog" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; Reserve files +!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "eduke32-${PRODUCT_VERSION}.exe" +InstallDir "" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +Section "!Game" SEC_GAME + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + File "..\eduke32.exe" + CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\EDuke32.lnk" "$INSTDIR\eduke32.exe" + File "..\GNU.TXT" + File "..\jfduke_releasenotes.html" + File "..\ChangeLog" + File "..\setup.exe" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Setup.lnk" "$INSTDIR\setup.exe" +SectionEnd + +Section "Editor" SEC_EDITOR + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + File "..\build.cfg" + File "..\mapster32.exe" + CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Mapster32.lnk" "$INSTDIR\mapster32.exe" +SectionEnd + +Section /o "Samples" SEC_SAMPLES + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + File "..\duke3d.def.sample" + File "..\enhance.con.sample" + SetOutPath "$INSTDIR" +SectionEnd + +Section -AdditionalIcons + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\EDuke32 Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\eduke32.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\eduke32.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "${PRODUCT_STARTMENU_REGVAL}" "$ICONS_GROUP" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" +SectionEnd + +; Section descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_GAME} "The main EDuke32 game components (required to play EDuke enhanced mods)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_EDITOR} "Enhanced Mapster32 editor (optional)" + !insertmacro MUI_DESCRIPTION_TEXT ${SEC_SAMPLES} "Sample enhancement definition files (optional)" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "EDuke32 was successfully removed from your computer." +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove EDuke32 and all of its components?" IDYES +2 + Abort +FunctionEnd + +Section Uninstall + ReadRegStr $ICONS_GROUP ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "${PRODUCT_STARTMENU_REGVAL}" + Delete "$INSTDIR\${PRODUCT_NAME}.url" + Delete "$INSTDIR\uninst.exe" + Delete "$INSTDIR\duke3d.def.sample" + Delete "$INSTDIR\enhance.con.sample" + Delete "$INSTDIR\mapster32.exe" +; Delete "$INSTDIR\build.cfg" + Delete "$INSTDIR\setup.exe" + Delete "$INSTDIR\jfduke_releasenotes.html" + Delete "$INSTDIR\ChangeLog" + Delete "$INSTDIR\GNU.TXT" + Delete "$INSTDIR\eduke32.exe" +; Delete "$INSTDIR\datainst.exe" + +; Delete "$INSTDIR\duke3d.grp" +; Delete "$INSTDIR\duke3d.cfg" + + Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\EDuke32 Website.lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\Mapster32.lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\Setup.lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\EDuke32.lnk" + Delete "$SMPROGRAMS\$ICONS_GROUP\Game Data Installer.lnk" + + RMDir "$SMPROGRAMS\$ICONS_GROUP" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + SetAutoClose true +SectionEnd diff --git a/polymer/eduke32/source/config.c b/polymer/eduke32/source/config.c index 91612d649..4b290da4d 100644 --- a/polymer/eduke32/source/config.c +++ b/polymer/eduke32/source/config.c @@ -571,7 +571,7 @@ void CONFIG_ReadSetup( void ) SCRIPT_GetString( scripthandle, "Comm Setup",commmacro,&ud.ridecule[dummy][0]); } - SCRIPT_GetString( scripthandle, "Comm Setup","PlayerName",&tempbuf); + SCRIPT_GetString( scripthandle, "Comm Setup","PlayerName",&tempbuf[0]); while(Bstrlen(strip_color_codes(tempbuf)) > 10) tempbuf[Bstrlen(tempbuf)-1] = '\0'; diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index f180a3180..e37a32f3c 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -44,7 +44,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "util_lib.h" -#define VERSION " 1.4.0svn" +#define VERSION " 1.4.0 beta 1" #define HEAD "EDuke32"VERSION" (shareware mode)" #define HEAD2 "EDuke32"VERSION @@ -215,7 +215,7 @@ int gametext_(int small, int starttile, int x,int y,char *t,char s,char p,short if( ac < starttile || ac > (starttile + 93) ) break; - if((*t >= '0' && *t <= '9') || (small && !(*t >= 'a' && *t <= 'Z'))) + if(*t >= '0' && *t <= '9') newx += 8; else newx += tilesizx[ac]; t++; diff --git a/polymer/eduke32/source/menus.c b/polymer/eduke32/source/menus.c index d75a3e0d5..dc89ae833 100644 --- a/polymer/eduke32/source/menus.c +++ b/polymer/eduke32/source/menus.c @@ -3997,9 +3997,9 @@ VOLUME_ALL_40x: plrvotes += votes[i]; j += gotvote[i]; } - if(j == numplayers || !ps[myconnectindex].i || (plrvotes > (numplayers>>1))) + if(j == numplayers || !ps[myconnectindex].i || (plrvotes > (numplayers>>1)) || (!networkmode && myconnectindex == connecthead)) { - if(plrvotes > (numplayers>>1) || !ps[myconnectindex].i) + if(plrvotes > (numplayers>>1) || !ps[myconnectindex].i || (!networkmode && myconnectindex == connecthead)) { tempbuf[0] = 5; tempbuf[1] = ud.m_level_number; diff --git a/polymer/eduke32/source/player.c b/polymer/eduke32/source/player.c index 89abe6187..78a72778c 100644 --- a/polymer/eduke32/source/player.c +++ b/polymer/eduke32/source/player.c @@ -158,7 +158,7 @@ void hitscantrail(long x1, long y1, long z1, long x2, long y2, long z2, short an x1 += (sintable[(348+ang+512)&2047]/projectile[atwith].offset); y1 += (sintable[(ang+348)&2047]/projectile[atwith].offset); - n = (FindDistance2D(x1-x2,y1-y2))>>8; + n = ((FindDistance2D(x1-x2,y1-y2))>>8)+1; z1 += (projectile[atwith].toffset<<8)+1024;